← back to Consulting Designerwallcoverings Com

data/work-orders/DRY-RUN.md

143 lines

# Sample-only backlog — DRY-RUN (Phase-2 preview, NO writes)

**Generated:** 2026-07-27 under **TK-17** · read-only against the `dw_unified` mirror (`psql host=/tmp dbname=dw_unified`).
**No Shopify writes · no variant creation · no tag write · no canonical dw_unified write.** This document shows the *exact* writes each batch WOULD make, with live-reconciled counts and concrete sample values, so Steve can approve per-batch.

## Live backlog reconciliation (this run)

Backlog definition (matches `scripts/collect-dw.mjs`):
`status='ACTIVE' AND NOT coalesce(has_product_variant,false) AND tags NOT ILIKE '%quotes%'`

**Total backlog = 22,894** (drifted from the memo's 22,952 as the catalog moved; live figure governs).

The two hard rules mechanically partition it:

| Rule | Effect |
|---|---|
| **no-cost → no-sellable-variant** | A sellable roll variant may be created ONLY where a confirmed price basis joins. **Exactly 813 of 22,894 (3.6%)** qualify today (Hollywood, vendor-guarded). The other ~22,081 cannot be priced → cannot get a variant. |
| **quote-only exemptions** | Lines that are quote-only in practice get the `quotes` **tag** (no variant, no price) — this cures the dead-end buy-box UX and exits them from the backlog honestly, at zero pricing risk. |

## Batch partition (reconciles to 22,894)

> **Contrarian gate (Cody, 2026-07-27) — 3 findings verified read-only and FIXED below.** (1) Batch B's join needs an explicit `vendor='Hollywood Wallcoverings'` guard or it silently pulls 36 non-Hollywood rows; (2) Batch C is 3 rows not 2, two of them brand-integrity risks → pulled to HOLD; (3) hw_price provenance is an inference, documented honestly + canary is the confirmation gate.

| Batch | Action (per SKU) | SKUs | Price basis | Gated? |
|---|---|--:|---|---|
| **A — QUOTE-tag (approved lines)** | add `quotes` tag; no variant | **9,301** | none needed | YES (live tag write) |
| **A′ — QUOTE-tag (officer-flagged, awaiting explicit ruling)** | add `quotes` tag; no variant | **383** | none needed | YES + needs ruling |
| **B — Hollywood sellable variant** | create roll variant priced at `hw_price` | **813** | `momentum_colorways.hw_price` (vendor-guarded) | YES (prod write, canary-first) |
| **C — Kravet-family MAP variant** | create roll variant at MAP | **0 GO** | 3 candidates → all HOLD (brand-integrity) | YES |
| **D — HOLD (no write)** | none — await cost list / vendor request | **12,397** | not sourceable today | n/a |
| | | **22,894** | | |

Arithmetic: 9,301 + 383 + 813 + 0 + 12,397 = 22,894. ✅
**Variant-eligible today: 813** (Hollywood only) — corrected down from 815 after Batch C's 3 candidates were pulled to HOLD.

---

## Batch A — QUOTE-tag write (Steve-approved lines) — 9,301 SKUs

Per the Steve-approved `GO-NO-GO.md` top-20 rulings. Action: append `quotes` to `tags` on each product. **No variant, no price.** Removes the dead-end buy box; product still browses + samples.

| Line | SKUs |
|---|--:|
| Phillip Jeffries | 2,461 |
| Koroseal | 2,454 |
| China Seas | 1,776 |
| Maya Romanoff | 624 |
| Newmor Wallcoverings | 512 |
| Quadrille | 443 |
| Alan Campbell | 434 |
| Architectural Fabrics | 328 |
| Wolf Gordon | 269 |
| **Total** | **9,301** |

## Batch A′ — QUOTE-tag (officer-flagged, NOT in the approved top-20) — 383 SKUs

The officer sign-off flagged the Quadrille/to-the-trade cluster + Donghia for quote-only scrutiny, but these two lines were **not** in the top-20 GO-NO-GO that Steve approved. Presented as a proposed addition — **awaiting Steve's explicit ruling** (fold into Batch A, or leave as HOLD).

| Line | SKUs | Note |
|---|--:|---|
| Home Couture | 229 | Quadrille-family to-the-trade cluster |
| Donghia | 154 | Officer scrutiny list |
| **Total** | **383** | |

---

## Batch B — Hollywood Wallcoverings sellable variant — 813 SKUs (canary-first)

**Price basis:** `momentum_colorways.hw_price`.
**hw_price provenance (honest):** hw_price is *not* independently confirmable against a live roll price from the mirror — the `shopify_products.price` field on already-buyable Hollywood products returns the **$4.25 sample min**, not the roll price. What IS verifiable: on every joined row, `list_price < hw_price < retail_price` (e.g. $35.90 < $51.98 < $56.48; hw ≈ 92% of retail). That ordering is consistent with hw_price being a **sell** price (a lightly-discounted retail), **not** a wholesale cost (which would sit below list). Treat this as a well-supported inference; **the 20-SKU canary is the real-world confirmation gate** — the buy-box price must be eyeballed before scaling.

**Join (verified, VENDOR-GUARDED — Cody fix):**
```sql
shopify_products sp JOIN momentum_colorways mc ON sp.mfr_sku = mc.alt_sku
WHERE ... AND sp.vendor = 'Hollywood Wallcoverings' AND mc.hw_price IS NOT NULL
```
⚠️ **The `sp.vendor = 'Hollywood Wallcoverings'` guard is MANDATORY.** Without it the raw `mfr_sku=alt_sku` join returns **849** rows, not 813 — it drags in **34 Phillipe Romano** SKUs (cost-blocked, HOLD per Phase-1) + 1 DWHD + 1 Rebecca Moses, which would get priced off a Momentum table and side-door-activate lines that must stay HOLD. **813 of 852** vendor-guarded Hollywood backlog rows join a non-null `hw_price`; the **39** without → Batch D (HOLD).
**Price-ceiling guard:** the execution script must FLAG any `hw_price` outside a sane band (this 813-set is $13.68–$66.90; a commercial-spec outlier elsewhere in `momentum_colorways` reaches $3,578) — no variant ships above the band without a manual look.
**Price sanity across the 813:** min **$13.68**, max **$66.90**, avg **$48.64**, **0** SKUs at/below $4.25 (no memo-sample leak). ✅
**Leak-guard:** titles/collections stay "Hollywood Wallcoverings" — "Momentum"/"Versa" must never surface. Variant creation touches price/variant only, **not** titles, so no leak surface. Sample titles below confirm clean copy.

### The exact 20-SKU canary (first slice — verify buy-box + GMC before scaling to 813)

| mfr_sku | title | variant price (= hw_price) |
|---|---|--:|
| A119-038 | Brio - Earl Grey Wallcovering | $47.78 |
| A119-136 | Brio - Puer Wallcovering | $47.78 |
| A119-198 | Brio - Kava Wallcovering | $47.78 |
| A119-200 | Brio - Sencha Wallcovering | $47.78 |
| A119-231 | Brio - Ceylon Wallcovering | $47.78 |
| A119-295 | Brio - Matcha Wallcovering | $47.78 |
| A119-310 | Brio - Volos Wallcovering | $47.78 |
| A119-332 | Brio - Oasis Wallcovering | $47.78 |
| A119-364 | Brio - Sur Wallcovering | $47.78 |
| A119-388 | Brio - Hyacinth Wallcovering | $47.78 |
| A119-452 | Brio - Pekoe Wallcovering | $47.78 |
| A119-524 | Brio - Canton Wallcovering | $47.78 |
| A119-557 | Brio - Hunan Wallcovering | $47.78 |
| A119-592 | Brio - Sepia Wallcovering | $47.78 |
| A119-823 | Brio - Tisane Wallcovering | $47.78 |
| A119-844 | Brio - Mink Wallcovering | $47.78 |
| A119-872 | Brio - Travertino Wallcovering | $47.78 |
| A119-897 | Brio - Peony Wallcovering | $47.78 |
| A121-048 | Panama Linen - Kilimanjaro Wallcovering | $44.52 |
| A121-052 | Panama Linen - Challis Wallcovering | $44.52 |

**Write path (when approved):** PostgreSQL mirror first → Shopify Admin API 2024-10. Rails: ≥90 s batch gap, ≤1,000 variants/day, never ACTIVE without image+width (all 813 already have image + sample + description). Canary = these 20 → verify buy-box renders, price correct, GMC feed advertises the roll (not $4.25) → then scale to the remaining 793.

---

## Batch C — Kravet-family MAP — 0 GO (3 candidates, all pulled to HOLD)

⚠️ **Verified correction to PHASE-1-COST-SOURCING.md.** That doc claimed "~101 Kravet-family MAP-computable today" via `kravet_master_price`. Tested strictly this run:
- **0 of 102** Kravet-family backlog SKUs join `kravet_master_price` on `mfr_sku`.
- Only **28** join the broader `kravet_catalog`, and — including the Phillipe-Romano-labelled strays — only **3** carry a `dw_sell_price > 0`.

**All 3 candidates, and why each is HOLD not GO (Cody gate):**

| mfr_sku | Shopify vendor | kravet_catalog brand | dw_sell_price | Ruling |
|---|---|---|--:|---|
| `BW45141.2.0` | **Phillipe Romano** | **G P & J BAKER** | $513.12 | **HOLD — brand mismatch.** A GP&J Baker product shown as Phillipe Romano; a $513 MAP variant on a mislabeled product is a live brand-integrity bug. Fix the attribution first. |
| `P8024114.5.0` | Kravet | **(NULL)** | $1,320.81 | **HOLD — NULL brand + $1,320 price.** No brand to confirm MAP against; too high to ship unverified. |
| `97/1002.CS.0` | Cole & Son | COLE & SON | $921.72 | **HOLD (promotable).** Brands match — this one is legitimate and could be promoted to GO after a brand-match confirm, but a single SKU isn't worth an independent live write. |

So the real MAP-ready GO set is **0** this session (not "~101", not "2"). The ~100 other Kravet-family strays (Kravet 83, Brunschwig 5, Andrew Martin 4, Lee Jofa 3, Cole & Son 2, +6 singles) join no priced row → **Batch D (HOLD)**. (The earlier "~101" also mis-swept "Home Couture" via a `couture` regex — it is Quadrille, not Kravet Couture; excluded.)
**Rule if/when they price:** MAP = WHLS × 1.5 (or `map_price`/`dw_sell_price` authoritative) — **never** the cost/0.65/0.85 formula.

---

## Batch D — HOLD (no write) — 12,397 SKUs

Cost-blocked GO lines + the long tail + the 3 pulled Kravet candidates. **No action taken; listed for transparency.** Each awaits a confirmed price basis (vendor list / trade discount / MAP feed match / brand-attribution fix) before it can leave HOLD. Largest holds: Phillipe Romano cost-blocked sub-labels (Command54/RIGO need vendor lists), Coordonné (retail-only, no trade), Osborne & Little (`our_price` NULL), Designers Guild (~no basis), Arte/Harlequin (premium, no current cost), 39 Hollywood no-`hw_price`, ~100 Kravet strays, + the 3 Batch-C candidates.

---

## What this dry-run proves

1. Enforcing **no-cost → no-sellable-variant** leaves exactly **813** SKUs eligible for a variant today (Hollywood only, vendor-guarded) — a canary, not a blanket 22k write.
2. Enforcing **quote-only exemptions** clears **9,301** approved (+383 pending a ruling) via a zero-price-risk tag write.
3. **12,397** honestly remain HOLD until cost lands / brands verify — no fabricated prices, no mislabeled-brand variants.
4. Every number reconciles to the live 22,894 backlog. **No Shopify write has occurred.**
5. Survived a 5-critic contrarian gate (Cody, 2026-07-27): the Batch B vendor-guard, the Batch C brand-integrity pulls, and the hw_price provenance honesty are all Cody fixes carried in.