← back to Sanderson Onboard
tk10873/HANDOFF.md
45 lines
# TK-10873 Zoffany Option-A — final handoff / decision package
**Status:** autonomous work COMPLETE + verified. Everything below is GATED on Steve. No
Shopify/dw_unified writes were made. All artifacts committed to `sanderson-onboard/tk10873/`
+ ledgered (undo = `git revert <sha>`). 93 tests green.
## What this workstream did (9 cycles)
Started as "sample-add + price draft" for the 331 ACTIVE Zoffany products. Sample-add turned
out to be a no-op (all 331 already have the $4.25 sample). The real work became **price
integrity**, and it surfaced a major error.
## The reprice decision (v3 = `zoffany_optionA_draft_v3.json`)
| bucket | count | what it is | action needed |
|---|---|---|---|
| **REPRICE (ready)** | **277** | web-verified real US retail (239 from the S1 feed + 38 trade-derived, all spot-confirmed) | **APPROVE the memo** → live reprice |
| HELD_UNVERIFIED | 51 | no feed price; **harvested** in cycles 6–8 → 45 have proposed US prices (`held_price_proposals.json`), incl. the higher-tier Palladio $494–530 | rule on promoting the 45 proposals |
| HELD_NEEDS_PRICE | 3 | 313114 (also missing-sellable), ZFOW312941, ZFOW312943 (source conflict) | 313114 mapping confirm (DM M-01413 unanswered) |
## The headline finding
The draft originally sourced `zoffany_catalog.price_retail`, which stored **UK £-prices as USD**
— **underpricing 209 products by ~2.5×**. Caught by cross-validating against the independent S1
feed and **web-verifying against real Zoffany US retail** (e.g. Romey's Garden official US $494 =
feed $494; Hawksmoor $465 vs $562; Malmaison $320 vs $354). Corrected in v3.
## Data-integrity flags (for the pricing owner)
- **`ZAQF322696` "Desert Flower II" is a FABRIC** (Antiquary collection, $133/yд) misclassified
as a wallpaper roll → RECLASSIFY, do not reprice as wallpaper.
- 5 wide-width **murals** (Phaedra, Precarious Pangolins, Verdure) are per-metre/yard — no clean
per-roll price; need a unit decision before reprice.
## De-risking finding (cycle 9)
The GBP-as-USD bug is **Zoffany-specific, NOT fleet-wide** — Harlequin's catalog matches its S1
feed 726/726 exactly. Sibling brands don't need the correction. (Morris uncheckable — key mismatch.)
## The gated decisions waiting on Steve
1. **APPROVE** `pending-approval/TK-10873-zoffany-optionA-livepublish-2026-08-30.md` → the 277 reprice.
2. Rule on promoting the 45 harvested proposals (firm US prices) to reprice-eligible.
3. Reconcile the ZAQF fabric-misclass + decide the 5 murals' unit.
4. Confirm the 313114 ≡ ZOW0146-01 mapping (unblocks 1 held row) + the 3 needs-price.
## Tooling (all read-only / dry-run; live reprice is a separate gated `!`-run)
build/validate/test the draft · `reprice_runbook.mjs` (dry-run, no send path) · `reprice_sanity.mjs`
(gate) · `cross_validate_feed.mjs` · `reconcile_from_feed.mjs` · `promote_trade_verified.mjs` ·
`build_harvest_proposals.mjs` · `cross_brand_gbp_check.md`.