# Stage 5b — marketing terminology in-place patch

**Authored:** 2026-05-12 after brand-owner brainstorming + crawl-research session locked the six-component Natural Harmony Collection marketing taxonomy.
**Status:** Bundle's customer-facing artifacts patched in place. Reference docs (claims.html, parts of seo.html / wireframe.html) retain "what-was-rejected" audit-trail metadata intact.

## The drift

The original Stage 5b prototype surfaced rejected engineering vocabulary the brand owner had explicitly rejected in the 2026-05-12 taste review: `800-count pocket-spring core`, `Steel-zoned perimeter support`, `1.9 mm body wire`, `2.1 mm body wire`, `PU800`, `CertiPUR-US-certified foam`, plus the interim placeholder names that were patched in mid-day (`Naturally breathable`, `Edge-to-edge sleep surface`). These were codified as `forbidden_claim_patterns.natural_harmony_collection.spec_language_claims` in `stores/huxberry.yaml` with provisional benefit replacements, pending a brand-led marketing taxonomy.

That taxonomy was defined in this session. It is now locked.

## The locked taxonomy

| # | Component | Long form | Short form |
|---|---|---|---|
| 1 | Spring core | `Individually Pocketed Spring Core` | `Individually Pocketed Spring Core` |
| 2 | Edge construction | `Reinforced Edge Zone` | `Reinforced Edge Zone` |
| 3 | Firmness differentiator | `Two Firmness Profiles` | `Two Firmness Profiles` |
| 4 | Comfort foam | `Cushioning Comfort Layer` | `Cushioning Comfort Layer` |
| 5 | Wool comfort layer | `Airelle Natural Wool Comfort Layer` | `Airelle Natural Wool` |
| 6 | Cover | `Velura knit cover — TENCEL™ and cashmere infused` | `Velura knit cover` |

Process: started from the proposed taxonomy in `research/2026-05-12-marketing-terminology-research/index.html`, which surveyed six reference brands (Vi-Spring, Naturalmat, Hypnos, Savoir Beds, Naturepedic, Avocado) with partial fetches. Brand owner rejected the proposed `Edge-to-Edge Sleep Plane` (didn't parse) and `Pressure-Settling Comfort Layer` (`settling` implied sinking). A second round of crawl4ai fetches against DreamCloud + Saatva + Naturalmat retry URLs surfaced verbatim PDP vocabulary — most useful were DreamCloud's `Tri-Zone Support` / `Five-Zone Support` (motivated `Reinforced Edge Zone` as the perimeter-only translation) and Saatva's `Sturdy edge support` / `body-cradling comfort` / `individually wrapped coils` (industry-canonical naming). Final picks were locked component-by-component with brand-owner sign-off.

Canonical taxonomy lives in [stores/huxberry.yaml](../../.claude/skills/design-shopify-page/stores/huxberry.yaml) → `forbidden_claim_patterns.natural_harmony_collection.preferred_terminology`. Future runs of `design-shopify-page` read this block as the source of truth and cannot regenerate the spec-language drift without explicit override.

## The patch

Mechanical find-and-replace across the bundle's 8 main artifacts, scoped to live shipping copy:

| File | Edits | Role |
|------|-------|------|
| `prototype/index.html` | 19 | Rendered PDP — materials-section subsection headings, comparison table rows, FAQ answers, image-stub labels, feature pills |
| `design/schema.jsonld` | 6 | Google rich results — Product.description, Product.material, additionalProperty[Edge Support], FAQPage answers |
| `design/copy.html` | 15 | Slot manifest live-copy fields |
| `design/graphics.html` | 14 (incl. global CertiPUR-US → CertiPUR) | Alt-text canon body strings |
| `design/seo.html` | 12 (incl. global CertiPUR-US → CertiPUR) | FAQ seeds (must match prototype 1:1 per FAQ reconciliation gate), meta, internal-link anchors |
| `design/technical-notes.html` | 2 | Live name references |
| `design/wireframe.html` | 8 (incl. global) | In-section copy snippets |
| `design/claims.html` | 0 | Claims trace — entire file is `claim:` ID / `source:` wiki path / `allowed_copy[]` / `verbatim:` ledger. Updating would destroy audit trail. Separate audit-refresh task pending. |

### Two adjustments that required rewrites, not just word swaps

1. **FAQ Q3 — "What is the difference between Firm and Extra Firm?"** — the previous answer referenced `1.9 mm body wire` and `2.1 mm body wire` mechanism explanations. New answer drops the wire-gauge language entirely and uses the `Two Firmness Profiles` framing:

   > "Two firmness profiles, with the same comfort stack and cover across both. Firm is designed for back and combination sleepers. Extra Firm suits stomach sleepers and heavier bodies. Firmness is set at the spring level, so you feel the difference in support, not in the materials above it."

   FAQ Q3 prototype copy and JSON-LD `FAQPage.mainEntity[2].acceptedAnswer.text` are now 1:1 per the FAQ reconciliation gate.

2. **Product.description (JSON-LD line 7)** + **Product.material attribute (line 17)** — both were rewritten end-to-end using the new component names in the materials-stack order. The description now reads:

   > "A natural mattress built for warm climates. Individually Pocketed Spring Core, Airelle Natural Wool Comfort Layer, Cushioning Comfort Layer, and a Velura knit cover — TENCEL™ and cashmere infused. Available in Two Firmness Profiles, 12 Gulf sizes, 30 cm overall depth."

   This is the string Google's Product rich-result and shopping-LLM agents read. Voice consistency at this surface point matters as much as on-page.

### What was intentionally preserved

- **`design/claims.html` entire file** — the claims trace is an audit-trail ledger that catalogs which copy was authorized, what it replaces, and the wiki source for each `verified` claim. Mass-rewriting would destroy the trace. A separate `claims-refresh` task should reconcile claims.html with the new taxonomy after the patched bundle has been in production for one verification cycle.

- **The cert-strip caption "Airelle wool source"** — this is the supplier-source naming per `supplier_name_surfacing.brand_proxies_allowed.surface_pattern`, NOT the product-component name. Component-name surfaces all use `Airelle Natural Wool` / `Airelle Natural Wool Comfort Layer`; cert-source surfaces keep `Airelle wool source`.

- **FAQ Q7 — "What certifications does the New Zealand wool supplier hold?"** — kept verbatim (Q text refers to the supplier-source dimension, not the product-component dimension). Answer was rewritten to lead with `Airelle Natural Wool` then fall back to the supplier-source framing.

- **Internal `voice_notes` / `brand_consistency_notes` / `production_notes` / `purpose` fields across copy.html / graphics.html / wireframe.html** that reference the Wisewool-suppression policy — these are policy documentation that describes the rule itself.

- **Photography production notes referencing `PU800 spring unit`** in graphics.html — this is physical-prop spec for the production crew shooting the spring coil array, not customer-facing copy.

## Verification

- ✓ FAQ reconciliation gate: 8/8 question names match between prototype and JSON-LD `FAQPage.mainEntity[].name`.
- ✓ JSON-LD parses cleanly: 3 top-level entries (Product, FAQPage, BreadcrumbList).
- ✓ No `{{ claim-needed }}` placeholders remain in JSON-LD.
- ✓ Materials section h3 subsection headings: 4 headings render the new taxonomy (cover → wool → spring core → edge zone). Cushioning Comfort Layer appears at paragraph level in the same section (Stage 5b structural choice — the comfort foam was not given its own h3 subsection in the original wireframe; not restructured here).
- ✓ All locked names present in `prototype/index.html`: 13× Individually Pocketed Spring Core, 7× Reinforced Edge Zone, 1× Two Firmness Profiles (as inline label), 6× Cushioning Comfort Layer, 16× Airelle Natural Wool, 3× TENCEL™, 7× cashmere infused.
- ✓ All locked names present in `design/schema.jsonld`: 4× Individually Pocketed Spring Core, 1× Reinforced Edge Zone, 1× Two Firmness Profiles, 3× Cushioning Comfort Layer, 4× Airelle Natural Wool, 3× TENCEL™.

## What this unblocks

- **Open Item E (memory):** `project_huxberry_marketing_terminology_pending.md` — was the longest-running pending taxonomy task. Now resolvable.
- **Future runs** of `design-shopify-page` against any Natural Harmony Collection PDP will read `preferred_terminology` from `stores/huxberry.yaml` and use the locked names by default. No more spec-language drift in fresh runs.
- **Stage 5c re-run option** — if a future taste review wants a clean-slate bundle generated from the new yaml, a Stage 5c orchestration can be dispatched without re-litigating the taxonomy.

## What's still pending

- **Two certification verification flags** (unchanged from prior state):
  - TENCEL traceability — verify Velura cover's TENCEL is Lenzing-branded with per-batch FSC/PEFC traceability.
  - CertiPUR vs CertiPUR-US — verify foam supplier holds European CertiPUR or only U.S. CertiPUR-US.
  - See `CERTIFICATION-VERIFY-NOTE.md` for resolution paths.

- **`design/claims.html` audit refresh** — a separate task should reconcile the claims trace with the new taxonomy (add new claim entries for the six locked component names, mark the old spec-language entries as `superseded`). Recommended after one verification cycle of the patched bundle in production.

## Cross-references

- [Taxonomy yaml block](../../.claude/skills/design-shopify-page/stores/huxberry.yaml) — `forbidden_claim_patterns.natural_harmony_collection.preferred_terminology`
- [Research doc](../../research/2026-05-12-marketing-terminology-research/index.html) — six-component candidate set + reference brand survey
- [STICKY-ATC-PATCH-NOTE.md](STICKY-ATC-PATCH-NOTE.md) — sibling in-place patch (D1+D2 sticky-ATC + size sheet)
- [FAQ-PATCH-NOTE.md](FAQ-PATCH-NOTE.md) — sibling (FAQ reconciliation gate)
- [POLICY-DRIFT-NOTE.md](POLICY-DRIFT-NOTE.md) — sibling (sleep-trial policy)
- [CERTIFICATION-VERIFY-NOTE.md](CERTIFICATION-VERIFY-NOTE.md) — sibling (TENCEL + CertiPUR open items)
- `memory:project_huxberry_marketing_terminology_pending.md` — the now-resolved pending task
