← back to York Reprice 2026 08
Track York cadence staging+fixes note at repo root (cadence/data/ is gitignored) — TK-10026
074152b363c75addebf13c50127c05ee81cd999c · 2026-07-28 16:01:54 -0700 · Steve Abrams
Files touched
A STAGING-TK10026-2026-07-28.md
Diff
commit 074152b363c75addebf13c50127c05ee81cd999c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Jul 28 16:01:54 2026 -0700
Track York cadence staging+fixes note at repo root (cadence/data/ is gitignored) — TK-10026
---
STAGING-TK10026-2026-07-28.md | 46 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/STAGING-TK10026-2026-07-28.md b/STAGING-TK10026-2026-07-28.md
new file mode 100644
index 0000000..2a5eb97
--- /dev/null
+++ b/STAGING-TK10026-2026-07-28.md
@@ -0,0 +1,46 @@
+# York cadence — verify + stage (2026-07-28) · TK-10026
+
+Reviewed `pending-approval/york-cadence-actions.md` (622 actionable: reprice 3 / onboard 619 / disco 0).
+**All read-only verification below. NO customer-facing write performed. Recommendation: NO-GO on all three — the memo is a false alarm from cadence data-quality bugs.**
+
+## Bucket A — Reprice "drift" (3) → **NO-GO**
+Flagged: NW3592 Harlowe, NW3500 / NW3502 Nazca (Jeffrey Stevens), live roll = **$123.25**, cadence target MAP = $102, single-roll = $127.45.
+- **False positive.** `york_master_aug2026` holds **two rows per SKU**: (MAP 102 / MSRP 240) and (MAP **123.25** / MSRP 290) — two roll sizes, same 0.425 ratio. **Live $123.25 exactly matches a real master MAP row.** Cadence's first-wins dedup grabbed the $102 row and false-flags. 39 SKUs fleet-wide carry conflicting MAP across dup rows (48 dup rows total).
+- Type = "Residential Wallpaper / Sidewalls" (not a natural), so the $127.45 single-roll target doesn't cleanly apply either — three candidate prices, live matches one valid one.
+- **Neither named script safely targets "the 3":**
+ - `bridge-reprice.mjs` (dry-run VERIFIED) → **WOULD WRITE 279**, not 3 — mostly naturals pushed UP to MAP (e.g. Yucatan Sisal $196.08→$340). **135/279 are naturals that should price at SINGLE-ROLL, not MAP** → applying re-breaks correctly-priced naturals (bridge-reprice is single-roll-blind; the cadence is single-roll-aware, which is why cadence flags only 3). The 3 NW items sit in the HELD *down* bucket (123.25→102) and only fire with `--include-down`; 29 down moves incl. **$NaN** targets (dirty `master-priced-by-sku.csv`, built 2026-07-11).
+ - `york-pl-reprice.mjs` → target CSV is Brewster/A-Street scoped; **does NOT contain the 3 NW items**.
+- **Real fix (reversible, own session):** dedup the 39 conflicting-MAP master rows + pick authoritative row; make bridge-reprice single-roll-aware; rebuild `master-priced-by-sku.csv` (kill the $NaN). Not a Shopify write.
+
+## Bucket B — Onboard-ready (619) → **NO-GO / no-op**
+- Onboard queue `data/onboard-payloads-enriched.json` (735) is **fully drained**: `cadence.log` shows created 100 (7/19) + 32 (7/20), then **0 created / 735 skipped(exists) every day since 7/21**. Phase-1 632 already ACTIVE (`publish-cadence.log`: 621 already-active, 11 held settlement).
+- Confirmed live by roll-SKU probe: AH295100 → DWJS-92653 ACTIVE; FD42826 → DWJS-92829 DRAFT.
+- `york-new-create.mjs` is idempotent (skip-if-live) → running it now creates **0**. The 619 is a cadence **false-positive**: its onboard-ready live-subtraction doesn't recognize already-live items (title-collision / metafield-match gap).
+- Note: the daily cadence ALREADY auto-onboards New→DRAFT (cap 100/run, Steve-authorized 2026-07-13); nothing to do manually.
+- **Real fix (reversible, own session):** repair the cadence onboard-ready live match so it stops crying wolf daily. Not a Shopify write.
+
+## Bucket C — Disco (0) → nothing to do.
+
+## Preconditions verified
+- PG dw_unified mirror reachable (127.0.0.1, dw_admin); tables york_master_aug2026 / brewster_york_master / *_catalog present.
+- SHOPIFY_ADMIN_TOKEN present (store designer-laboratory-sandbox = LIVE prod, API 2024-10). All apply scripts are DRY-RUN-default, require `--apply --i-am-steve`, roll-only, reversible.
+
+## Cost
+All verification = **$0** (local PG reads + free Shopify GraphQL reads). DTD resume-check earlier ≈ $0.03.
+
+---
+
+## FIXES APPLIED (Steve GO, same session) — all code-only, reversible, verified read-only
+
+| # | Fix | File | Before → After |
+|---|-----|------|----------------|
+| 1 | Reprice **valid-price SET** (robust to dup MAP rows) | york-cadence.mjs | reprice-drift **3 → 0** |
+| 2 | bridge **single-roll-aware** (naturals at single-roll ≠ reprice) | bridge-reprice.mjs | WOULD WRITE **279 → 3** |
+| 3 | **Scan-truncation cap** 90×60=5400 → 120×100 (JS catalog = 6193) | both | live JS 5367→**6141**, onboard-ready **619 → 87** |
+| +| bridge **valid-MAP-set** guard (dup-MAP) + **NaN/0 skip** | bridge-reprice.mjs | WOULD WRITE **3 → 0** |
+
+- **Root cause of the daily false alarm = the 90-page scan cap truncated ~793 late-page live products** (AH295100 is #5944), inflating onboard-ready and feeding all three buckets a partial catalog.
+- Post-fix honest state: **reprice 0 · onboard 87 (spot-verified genuinely un-onboarded, outside the vetted queue) · disco 0.** bridge-reprice now agrees with the cadence (0 legit reprice).
+- Added `YORK_CADENCE_NO_WRITE=1` read-only test mode (cadence had none).
+- **NOT done (stays gated):** deleting the 39 conflicting-MAP dup rows from `york_master_aug2026` (destructive + ambiguous which roll is canonical) — code is now robust to them, so it's no longer urgent. Onboarding the 87 genuine items needs a fresh enrich+payload build (gated product creation).
+- Commits: 25d9e88, 4b91284, d27db35. Cost: **$0** (local PG + free Shopify reads).
← 2004540 auto-save: 2026-07-28T16:01:35 (1 files) — data/bridge-repri
·
back to York Reprice 2026 08
·
York cadence onboard-ready: subtract deliberately-held items 563cd8e →