← back to Dw Yolo Loop
scripts/variant-price-integrity-synthesis/SYNTHESIS-and-canary-spec.md
55 lines
# Variant + Price Integrity — consolidated synthesis (cycles c66–c74) + basis-aware canary spec — cycle 75
**DTD verdict D (2/1, dissent Claude/A).** READ-ONLY, **$0**. One decision-ready artifact mapping 9 cycles of variant/price-integrity findings → vendor / set / cause / lifecycle / fix / gate / severity, plus the durable canary spec so this defect class can't silently re-open. Headline counts re-confirmed live this cycle (RL active 253, DWTT-71xx active 46, DWTF active 76, Cole&Son active 1,238).
## 1. The map — every variant/price-integrity defect found, c66–c74
### 🔴 Zero-dollar / free-checkout (the c67→c71 arc — fully bounded + root-caused)
| Set | Size | Structure | Root cause (verified) | Lifecycle | Fix (GATED) | Sev | Cycles |
|---|---|---|---|---|---|---|---|
| Ralph Lauren | 111 | single-variant "Sample" $0, CONTINUE (orderable) | **NEVER-PRICED** — RL in no pipeline (product_map=0, ~0% costed via DG gap, Schu-only seeders, no RL importer); 2025 import | ACTIVE/orderable | reprice Sample → confirmed value (NOT hardcode $4.25; confirm vs RL/DG memo); min-safe `CONTINUE→DENY` first; DG cost-load is a SEPARATE sellability track | **P1** | c67/68/71 |
| DW Bespoke Studio | 1 | single-variant "Sample" $0 | orphan straggler (c68's 6% gap; caught by full-catalog GraphQL) | ACTIVE | reprice w/ RL | P1 | c69 |
| Hollywood Acoustical/Wallcoverings + 5 others | 33 | multi-variant; real ROLL variant $0 + CONTINUE | **2018–19 LEGACY placeholder**, NO current producer (build-roll-scale exonerated; repricers fix-$0-upward) | ACTIVE; 15 CONTINUE (guaranteed free-checkout) + 18 DENY (stock-gated) | per-product TRIAGE (price-the-roll vs remove-stray); no pipeline fix needed | **P2** | c69/70 |
- **Total $0-orderable exposure: 145 products** (112 default/single P1 + 33 multi P2). Multi-variant DEFAULT-$0 = 0 (verified full-catalog). Two distinct causes (2018 legacy placeholder vs 2025 never-priced), same symptom.
### 🟠 At-MAP mislabel (current live products, correctly priced, wrong variant title — SPLIT fix)
| Set | Size | Finding | Unit verified | Fix (GATED) | Sev | Cycle |
|---|---|---|---|---|---|---|
| Cole & Son | 352 | single "Sample" priced at EXACTLY Kravet `new_map` (0 below MAP) | Roll/Panel (namespace 17R+4P, 0 yard; join 1:1) | SPLIT (relabel roll + add $4.25 Sample, self-heal landmine); no reprice | **P2** | c72 |
| Kravet | 13 | single "Sample" at/above MAP (0 below) | per-roll (W-prefix namespace 99.85% Roll) — **per-SKU unit-confirm MANDATORY before split** (Kravet mixes yard/roll); carve out the $1,188 outlier | SPLIT + stricter unit gate | **P2** | c73 |
- Consumer-harm: a "Sample" charging $81–$2,146 (chargeback/deceptive vector). Pricing-integrity itself clean.
### 🟡 Discontinued stragglers (NOT mislabels — disposition is removal, not relabel)
| Set | Size | Finding | Fix (GATED) | Sev | Cycle |
|---|---|---|---|---|---|
| Thibaut DWTT-71xx + DWTF | 56 (subset of 122 active) | discontinued lines, flat placeholder prices ($125.43 ×32, $3.50 ×24); 2026-06-13 archive left 122 active (46 DWTT-71xx + 76 DWTF); live-200 on DW (301 is vendor-side) | **UNPUBLISH → per-SKU confirm → archive** (April caution); split DWTF $3.50 (sub-$4.25 price-integrity) from DWTT-71xx | **P3** + P2 fulfillment edge | c74 |
### 🟢 Image-SEO (separate, c66)
- ~27% of product images have a *stored*-null alt → image-SEO/curation opportunity. Rendered-layer WCAG violations = **0/46** (theme constructs alt at render). **P3** — NOT an ADA fire (officer-corrected).
### ⏸️ Deferred (basis undiagnosed — explicit open items)
| Set | Size | Why deferred | Next |
|---|---|---|---|
| Osborne & Little | 90 | NOT Kravet-family; RRP basis; barcode=None (Kravet-MAP method N/A) | decode RRP basis + lifecycle/status (c75-A candidate) |
| Fentucci | 21 | unknown basis | decode basis + status |
## 2. The basis-aware canary spec (extend `dw-map-auditor`)
A single Kravet-MAP check mis-flags non-Kravet vendors (the c73 lesson). The recurring guard must BRANCH by basis + check lifecycle:
1. **Zero-dollar-orderable gate (STATUS-AGNOSTIC, ANY position):** assert 0 orderable $0 variants fleet-wide — single AND multi-variant, any position, **including DRAFT** (a DRAFT $0 product is a latent activation landmine). Report era + vendor. (Covers c67/68/69/70/71.)
2. **Abnormal-sample detector, BRANCHED by vendor pricing basis:**
- **Kravet-family** (Cole&Son, Kravet, Lee Jofa, Brunschwig, GP&J Baker, Colefax, Clarke&Clarke, Mulberry, Threads, Baker, Andrew Martin, Groundworks, Aerin, Barclay Butera, Thom Filicia): join barcode→`kravet_authoritative_pricing.new_map`; **assert unit is Roll/Panel (not yard)** via the product_map namespace before comparing; below-MAP = defect; at-MAP single-variant-"Sample" = mislabel-candidate.
- **Thibaut / DWTT / DWTF:** retail×0.45 basis; ALSO flag if on a discontinued SKU prefix (→ disco check, not reprice).
- **Osborne & Little:** RRP basis (TBD c75+).
- **Generic/unknown vendor:** flag for basis-decode, do NOT apply a default frame.
3. **Disco-archive-completeness check:** for each known-discontinued SKU prefix (DWTT-71xx, DWTF, …), assert active count = 0; alert on stragglers (would have caught the 122). Pair with `zoffany-false-archive-recovered` guard (don't auto-archive; surface for per-SKU confirm).
4. All read-only; alerts → CNCP; NEVER auto-mutates. Disposition (reprice/split/unpublish/archive) stays Steve-gated.
## 3. Methodology codified (what made this arc reliable — reusable discipline)
- **Producer-elimination > timestamp** (c70/71): prove "no current process writes X" by code-auditing the writers; `createdAt` is corroboration, not proof.
- **Value-match is a TAUTOLOGY** (c72/73): a price equalling its source row only proves the import copied it — verify the UNIT/semantics independently (Kravet yard-vs-roll), and per-SKU before any money-touching gated fix (namespace evidence = prioritization, not per-item proof).
- **Check lifecycle BEFORE proposing a fix** (c74): a "mislabel/mispricing" can dissolve into "discontinued-but-live" — opposite remediation (remove vs relabel).
- **Join false-negative masquerades as "no data"** (c66/72): ask *why does the join fail* (wrong table/key) before concluding absence.
- **Unpublish-not-archive-first** (c74) + **per-SKU confirm** (April/Zoffany caution) for any removal.
- **Negative control / coverage gate** every cycle (reproduce a known positive, e.g. RL=111).
_Cycle 75. DTD-D (2/1, dissent Claude/A). Consolidated the c66–c74 variant/price-integrity arc into one decision-ready map (145 $0-orderable across 2 causes; 365 at-MAP mislabels = Cole&Son 352 + Kravet 13, SPLIT-gated; Thibaut 122 disco stragglers, unpublish-gated; ~27% null-alt image-SEO; O&L 90 + Fentucci 21 deferred) + a basis-aware `dw-map-auditor` canary spec (zero-$0 STATUS-AGNOSTIC + abnormal-sample branched-by-basis + disco-completeness) + the codified methodology. All fixes Steve-gated; counts re-confirmed live. PJ excluded._