{"slug":"dw-yolo-loop","total":277,"limit":100,"offset":0,"since":null,"commits":[{"hash":"f0a9020","date":"2026-09-26 09:19:43 -0700","author":"Steve Abrams","subject":"TK-12333: remove Scalamandre from showroom-vendors (Steve 2026-09-26: Scalamandre is NOT a showroom line)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66"},{"hash":"0efe7cc","date":"2026-09-26 08:23:03 -0700","author":"Steve Abrams","subject":"TK-11860: sync showroom-vendors snapshot to canonical fix-live-board@9bcd81c (+Jeffrey Stevens, Mind the Gap, Sandberg, Scalamandre)","body":"Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66"},{"hash":"4c10120","date":"2026-09-10 11:27:14 -0700","author":"Steve Abrams","subject":"deploy-vendor.sh: gate -internal hosts by default (TK-11391 root cause)","body":"This template emitted an nginx vhost with NO auth_basic at all, so every microsite it\ndeployed came up publicly browsable. That is how 65 \"-internal\" hosts ended up ungated —\nincluding phillip-jeffries-internal, which served 4,377 SKUs of a SHOWROOM-ONLY line to\nanyone. Gating the 64 by hand fixes the instances; this fixes the source.\n\nGate is chosen from the fleet's own naming convention: an \"-internal\" host is a trade/spec\nviewer and gets auth_basic + /etc/nginx/.htpasswd-dwvendors (same realm as the other ~453);\na public vendor landing (artmura, grasscloth) does not. GATE=1 / GATE=0 override either way.\n\nRefuses to deploy an internal host at all if the htpasswd file is missing on the target,\nrather than silently shipping it ungated. Adds a post-deploy edge check that warns loudly\nif a host meant to be gated answers anything but 401/403.\n\nVerified by rendering the template for all three cases: -internal gated, public landing\nopen, GATE=1 forces gating on a public name. bash -n clean.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>"},{"hash":"5b0f860","date":"2026-09-10 07:50:02 -0700","author":"Steve Abrams","subject":"Guard the vendor-microsite generator against showroom-only lines (TK-11200)","body":"The *.designerwallcoverings.com vendor microsites are minted by this artmura-site\ntemplate, not by dw-domain-fleet — so the isShowroomVendor guard added there never\ncovered them. Showroom-only lines (Phillip Jeffries) must stay \"addressable but not\ndiscoverable\", and a public browsable grid on its own subdomain is a discovery surface.\n\nNew showroom.js (self-contained so it rsyncs with a BUNDLE=1 deploy) + a local copy of\nthe canonical showroom-vendors.json, wired into all three stages:\n\n- build-line.js  refuses to snapshot a showroom vendor; drops showroom-TAGGED products\n                 from any snapshot; and refuses to write a 0-product snapshot (a bad\n                 token silently blanked a live microsite's grid).\n- deploy-vendor.sh refuses by slug, domain label, or the snapshot's own vendor field.\n- server.js      refuses to serve a showroom-vendor config; hides showroom-TAGGED\n                 products from the grid at catalog load.\n\nMatching normalization collapses the \"Philip\"/\"Phillip\" spelling split and separator-less\nslugs, so a one-letter typo or a renamed slug can't walk past the guard.\nEscape hatch: ALLOW_SHOWROOM=1 (always logs loudly).\n\nVerified locally: showroom vendor/slug/domain refused at all three stages; carnegie line\nstill boots and serves 5934 products (/api/config, /api/products, /api/facets all 200);\ntag filter hides exactly the tagged rows. Nothing deployed — prod stays gated.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Cwgg8nQa46x1QZewDe7bGn"},{"hash":"20ab7b0","date":"2026-09-03 11:55:24 -0700","author":"Steve Abrams","subject":"TK-11186: trending-tag-sync twin — guard showroom-only vendors out of Trending tag flow","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YXf9gMQQWRfNex6EestZhp"},{"hash":"ea0eaee","date":"2026-09-03 11:21:05 -0700","author":"Steve Abrams","subject":"Google feed twin: hard-exclude showroom-only vendors via isShowroomVendor (TK-11186)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks"},{"hash":"69ecd60","date":"2026-09-01 22:34:34 -0700","author":"Steve Abrams","subject":"refresh GMC leak guard heartbeat","body":""},{"hash":"1b1d813","date":"2026-09-01 19:48:55 -0700","author":"Steve Abrams","subject":"refresh GMC leak guard heartbeat","body":""},{"hash":"bd5e681","date":"2026-09-01 18:44:00 -0700","author":"Steve Abrams","subject":"refresh GMC leak guard heartbeat","body":""},{"hash":"6108f5b","date":"2026-09-01 07:40:42 -0700","author":"Steve Abrams","subject":"fix(gmc-feed-guard): variant-based sample-leak classifier — kills 50,991 false positive, reports real ~457","body":""},{"hash":"7e33d8b","date":"2026-09-01 04:13:04 -0700","author":"Steve Abrams","subject":"gmc-feed-guard TK-10952: mirror crash artifact to skill dir, fix cron-fire-canary detection","body":"- Add _SKILL_GUARD constant and mirror crash-handler writes to\n  ~/.claude/skills/gmc-feed-guard/data/latest.json so the crash\n  artifact stays in sync with the main artifact path.\n- Previous session (HEAD) already added SKILL_DIR mirror for normal\n  runs and verdict field — this extends the same pattern to crashes.\n- Rebuilt cron-fire-canary manifest: primary_artifact_path now set to\n  skill dir, so cron-fire-canary correctly detects freshness vs stale\n  and classifies exit=2 (FAIL verdict) as a designed signal exit (ok),\n  not a crash.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"1956af9","date":"2026-09-01 04:11:28 -0700","author":"Steve Abrams","subject":"TK-10952: gmc-feed-guard — add unhandledRejection handler for clean crash reporting","body":"Script was crashing mid-run (exit code 2 = unhandled rejection) without writing\nto data/latest.json, causing cron-fire-canary to see stale-unknown state.\nNow: on any unhandled rejection, writes FAIL verdict to data/latest.json and\nexits 1 so the error is visible + the fleet-health-rollup sees FAIL not silence."},{"hash":"9270cd2","date":"2026-09-01 04:03:51 -0700","author":"Steve Abrams","subject":"TK-11055: lib/shopify.mjs prefer SHOPIFY_FULL_ACCESS_TOKEN for write_inventory scope","body":"Mirror of designerwallcoverings fix — same root cause, same fix."},{"hash":"25ac473","date":"2026-08-26 09:19:48 -0700","author":"Steve","subject":"feat: read-only GMC full-leak-list exporter (TK-10862 session)","body":""},{"hash":"28e22d5","date":"2026-08-25 08:08:40 -0700","author":"Steve","subject":"gmc: staged GID-scoped exclude for the 9 true $4.25 leaks (Thibaut+DW), reversible (session close)","body":""},{"hash":"751727e","date":"2026-08-25 07:45:23 -0700","author":"Steve Abrams","subject":"feat: gmc-fentucci-exclude.js — scoped 462-Fentucci Google feed-exclude (dry-run + canary + restore-map; prevents the blunt-tool 49k mis-fire)","body":""},{"hash":"4f13dec","date":"2026-08-20 16:46:07 -0700","author":"Steve Abrams","subject":"carnegie landing: add required 'in collaboration with Designer Wallcoverings' About block (config-gated, additive)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"0eba9c0","date":"2026-08-20 12:39:05 -0700","author":"steve","subject":"carnegie landing: session-close snapshot","body":""},{"hash":"ab7991d","date":"2026-08-20 11:50:07 -0700","author":"steve","subject":"carnegie: add DW vendor-landing config block + line snapshot (5934 products)","body":""},{"hash":"05f0068","date":"2026-08-11 07:28:10 -0700","author":"Steve Abrams","subject":"chore: TK-10451 scope doc + version bump v0.1.1 (session close)","body":""},{"hash":"5795600","date":"2026-08-10 21:55:23 -0700","author":"Steve Abrams","subject":"gmc-feed-exclude: add --orphans-only (Bucket A / live-verified true orphans) for C-orphans (TK-10446)","body":""},{"hash":"86f28e8","date":"2026-08-05 04:06:08 -0700","author":"steve@designerwallcoverings.com","subject":"TK-10210: fix false no_roll_variant_price exclusion in dw-yolo-loop feed-eligibility","body":"Port the TK-10209 fix from designerwallcoverings to dw-yolo-loop:\n\n1. isSample now uses price-beats-label logic: a variant priced >$5 is a\n   real roll even if labeled \"Sample\" — fixes the Osborne W7351-01 class\n   where the sole roll variant was mislabeled \"Size: Sample\" @ $76.02,\n   causing rollPrice=null -> false no_roll_variant_price exclusion.\n\n2. Wrap /tmp/cost_map.tsv readFileSync in try/catch: the file is GC-prone\n   and the script is designed to flag kravet_map_unverified_no_cost when\n   cost is missing — a hard crash here defeated that intent.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"5df288c","date":"2026-08-03 12:57:51 -0700","author":"steve-office","subject":"Romo close: batch ledger + price-correction ledger + audit artifacts","body":"- 207-draft batch ledger, 117-product price-correction ledger (before->after)\n- full-catalog audit: prices correct, descriptions clean, 2 sample-only structure exceptions (Floris/Raya)"},{"hash":"7e55c7b","date":"2026-08-03 12:26:47 -0700","author":"steve-office","subject":"Romo pricing: fix double-tariff bug from authoritative trade portal","body":"- Root cause: our_price built from net_cost (trade + 2x tariff) not total_price_per_roll (trade + 1x)\n- Confirmed vs trade.theromogroup.com: Figura W948/03 Total/Roll $946.05 -> retail $1712.31\n- Catalog: recomputed our_price for 382 rows (backup: our_price_pre_tariff_fix)\n- Store: corrected 117 created products ($2890.79 overcharge removed, 6 active), ledgered before->after\n- REPRICE-138 was BACKWARDS (compared correct-live vs wrong-our_price) -> cancelled"},{"hash":"69ae2e6","date":"2026-08-03 11:57:39 -0700","author":"steve-office","subject":"Romo REPRICE dry-run: 138 live-reconciled candidates (1 below-cost, 137 tariff-uplift)","body":""},{"hash":"e6d0701","date":"2026-08-03 11:17:29 -0700","author":"steve-office","subject":"Romo ADD canary: create script + 10 DRAFT products on live store (ledger)","body":"- W-code reconciliation vs live store → 817 true-new safe-to-ADD\n- mirrors live Romo structure (Title option, Single Roll + $4.25 Sample)\n- 10/10 verified: sellable variant, sample, image, attribution tags, draft\n- idempotency guard (skip existing SKU) + reversibility ledger"},{"hash":"671aec7","date":"2026-08-03 10:51:27 -0700","author":"steve-office","subject":"Romo landing: 578-product snapshot + lexicon attribution (color/style/motif facets)","body":"- site.config.js: add romo block (DW house chrome, collection handle 'romo')\n- build-romo-enrich.js: attribute live products onto interior-designer lexicon from Shopify tags\n- server.js: styles/motifs on each record + in /api/facets; vendor-aware startup banner\n- index.html: Style + Motif filter selects + color bar (auto-hide when empty)\n- lines/romo-colors.json: 578/578 color buckets, 522 styles, 525 motifs"},{"hash":"0510e2b","date":"2026-06-18 12:52:47 -0700","author":"Steve Abrams","subject":"cycle 92: officer vp-dw-commerce CONFIRMED + reorder/guardrails folded in (P1 free-checkout leads not polish; RL interim=UNPUBLISH-only not DENY+qty0; 33-roll deletion + Cole&Son SPLIT via self-healing builder + ROLL-unit MAP; JSON-LD/dup-titles promoted to P2 feed-integrity; re-activation readiness rules: inventory=2026 both variants + no-active-without-image+width)","body":""},{"hash":"e22241f","date":"2026-06-18 12:50:13 -0700","author":"Steve Abrams","subject":"cycle 92: CONSOLIDATION DIGEST (DTD unanimous E1) — 63 findings -> one prioritized executable-vs-blocked remediation plan. Quick wins (~48 products: 5 Versace preamble + 2 no-image + 8 draft-zero + 33 select-to-free roll); P1 RL 111 (stop-checkout-now, reprice blocked on DG cost); P2 455 roll-mislabels (Cole&Son+Kravet MAP-safe, O&L relabel-only) + 238 inverse; P3 hygiene; 2 guards+watchdog await install; clean bills mapped. Bottleneck=ACTION not discovery","body":""},{"hash":"cdf1e93","date":"2026-06-18 12:42:38 -0700","author":"Steve Abrams","subject":"cycle 91: officer vp-dw-marketing CONFIRMED + framing tightened (5 scoped to leading-English here-is class, not fleet-wide; body-copy wallpaper = separate proper-noun-safe debt vs titles=0; memory update REQUIRED + AT10701 flag; negative-control clean scoped to preamble class); 2 follow-ons queued","body":""},{"hash":"4aa2eb1","date":"2026-06-18 12:40:53 -0700","author":"Steve Abrams","subject":"cycle 91: AI-preamble leak sweep (DTD unanimous A) — 5 genuine leaks ALL Versace, confirmed by 2 methods (HIGH-pattern + body-START classifier both=5) w/ broad-net guard (58 here-is hits, 53 legit mid-copy); Wallpaper TITLE blast-radius=0 (titles normalized, independent productsCount) + ~9486 any-field mostly legit vendor-names; BOTH better than stale banned-word memory (25131+68); disposition=surgical fix 5 Versace descriptions P3 (not bulk rewrite), titles need nothing, update stale memory","body":""},{"hash":"7a63e67","date":"2026-06-18 11:37:50 -0700","author":"Steve Abrams","subject":"cycle 90: officer vp-dw-commerce CONFIRMED (boundary-case sound, self-correction honest, (b)=0) + 2 net-new watch items carried forward (variant-level oversold census; POD-vendor liveness check)","body":""},{"hash":"90deca5","date":"2026-06-18 11:36:36 -0700","author":"Steve Abrams","subject":"cycle 90: CONTINUE-masked segmentation (DTD unanimous A) — c89 (b) defect population = ZERO. Full active scan 71,717 -> 97.49% real-stock + 2.51% untracked POD + 0 true CONTINUE-oversold-at-empty + 0 blocked. SELF-CORRECTION: v1 conflated untracked-inventory (null qty) with oversold -> contaminated 831; own sanity counter (457 impossible DENY-buyable-at-0) caught it; v2 added inventoryItem.tracked -> true defect=0. Resolves c89 73.9%-CONTINUE worry (oversell layered on real stock, not masking empty). Buyability thread fully closed. Residuals: image-correctness, full-404, merch-depth, title/feed hygiene","body":""},{"hash":"232ce74","date":"2026-06-18 10:31:40 -0700","author":"Steve Abrams","subject":"cycle 89: consistency fix — decode header reframed (census=proof, probe=flag-honesty audit)","body":""},{"hash":"fbd6449","date":"2026-06-18 10:31:07 -0700","author":"Steve Abrams","subject":"cycle 89: officer vp-dw-commerce CONFIRMED + narration sharpened (100% is a full CENSUS not a 4% probe-inference; 21% drift = TWO populations real-stock vs CONTINUE-masked; 73.9% CONTINUE oversell promoted to a named fulfillment/lead-time residual; clean bill scoped to buyability not a fleet all-clear)","body":""},{"hash":"6ddb941","date":"2026-06-18 10:28:53 -0700","author":"Steve Abrams","subject":"cycle 89: buyability audit (DTD unanimous B) — full active scan 71,719 -> 0 active-but-unbuyable (100% have >=1 purchasable variant); verified by MECHANISM not just the flag (3k-product probe: 73.9% CONTINUE oversell + 26.1% DENY-but-all-qty>0, 0 DENY+empty=the only blocking state); inventory=2026 conv ~79% followed (85.6% multi-var both), ~21% drift BENIGN (still buyable, not a defect); CLEAN BILL no fix; residuals named (cart-to-checkout, price-zero separate canary, image-correctness, full-404, merch-depth)","body":""},{"hash":"e2240da","date":"2026-06-18 09:57:21 -0700","author":"Steve Abrams","subject":"cycle 88: consistency fix — closing line reflects draft-flip-first disposition","body":""},{"hash":"220c3b9","date":"2026-06-18 09:56:51 -0700","author":"Steve Abrams","subject":"cycle 88: officer vp-dw-commerce CONFIRMED + 4 refinements folded in (2-product fix = rule-mandated draft-flip+Needs-Image not discretionary add-image; don't mass-flag 63.9% single-image; image-CORRECTNESS higher-severity residual; full-404 pass = next image cycle)","body":""},{"hash":"f38603d","date":"2026-06-18 09:55:12 -0700","author":"Steve Abrams","subject":"cycle 88: image-integrity sweep (DTD unanimous B) — full active scan 71,720 -> only 2 no-image products (China Seas + Tres Tintas, active+orderable = genuine P2 defects); neg-control 100% with-images (2 are true anomalies); bounded 39-URL 404 spot-check 0 broken (no CDN-rot epidemic, sample-limited); near-clean bill; secondary: 63.9% single-image PDPs = soft merchandising signal NOT a defect; residuals named (full 404, image quality, merchandising-depth, inventory=2026)","body":""},{"hash":"4ca0d91","date":"2026-06-18 09:37:00 -0700","author":"Steve Abrams","subject":"cycle 87: officer vp-dw-marketing CONFIRMED + scope tightenings folded in (closure=PUBLISHED+storefront-reachable not nav-admin-audited since menus ACCESS_DENIED; reachable!=merchandised qualifier on headline; next cycle=merchandising-depth gated on cracking Boost facet param)","body":""},{"hash":"ea09611","date":"2026-06-18 09:35:50 -0700","author":"Steve Abrams","subject":"cycle 87: nav-link reachability (DTD unanimous A) — storefront runs Boost PFS; /collections/all Shop-All = full 72,453 catalog (infinite scroll, linked) + Boost search returns subsets (grasscloth 7715) -> NO dark-by-nav inventory, discoverability independent of per-collection nav links; c86 membership!=discoverable RESOLVED, 127k catch-all moot for reachability; honest limits (API facet-subset not confirmed; merchandising-depth unmeasured); closes collections/nav dark-inventory thread (April archive = only real vector)","body":""},{"hash":"7a5788f","date":"2026-06-18 09:19:05 -0700","author":"Steve Abrams","subject":"cycle 86: consistency fix — closing line reflects Flag A upgrade to P3","body":""},{"hash":"c11af4e","date":"2026-06-18 09:18:43 -0700","author":"Steve Abrams","subject":"cycle 86: officer vp-dw-marketing CONFIRMED + refinements folded in (Flag A P4->P3 route to merchandising: catch-all mislabels 127k as Best Seller in feeds + 0-orphan rests on it; nav-link reachability queued as next collection cycle; soften 'collection-rich')","body":""},{"hash":"f4ac7a9","date":"2026-06-18 09:17:14 -0700","author":"Steve Abrams","subject":"cycle 86: collection-membership integrity sweep (DTD 2/1 B) — full active scan 71,726 -> 0 true orphans, 100% in >=1 collection, 88% in 11+; NEG-CONTROL (bulk collection-rich) + publication probe both close caveats (12 single-collection products are in best-seller-internal-use which IS published to all 13 channels = reachable, not browse-dark); CLEAN BILL ruling out dark-by-orphaning fleet-wide; 2 minor non-defect flags (127k catch-all misnamed 'internal use' yet published P4; 8 Torre dups -> fleet-dedup P3); residuals named (image integrity, inventory=2026, nav-link)","body":""},{"hash":"99fbc92","date":"2026-06-18 08:20:24 -0700","author":"Steve Abrams","subject":"cycle 85: officer vp-dw-commerce CONFIRMED + 2 non-blocking softens folded in (thin-PDP subset don't auto-SPLIT; Steve decides relabel-vs-unpublish verb)","body":""},{"hash":"b153437","date":"2026-06-18 08:18:57 -0700","author":"Steve Abrams","subject":"cycle 85: DISAMBIGUATE c84 238 inverse-mislabels (DTD unanimous A) — full active scan 0/238 in showroom collection + 0/238 have custom.showroom_line; NEG-CONTROL proves 100% of 600 deliberate Showroom-Lines carry the metafield (0% tag-only) -> signal validated, 'untagged Showroom batch' hypothesis REFUTED; genuine mislabels not tag; fix=relabel/unpublish (all 238) + SPLIT where cost exists (~74 DW private-label + Lee Jofa; PR 139 SPLIT-blocked no price sheet); 5 unit-named outliers hand-review","body":""},{"hash":"b112a34","date":"2026-06-18 07:13:37 -0700","author":"Steve Abrams","subject":"cycle 84: consistency fix — closing line reflects re-scoped fix (title-promise triage, not blanket SPLIT)","body":""},{"hash":"a7b5af4","date":"2026-06-18 07:12:55 -0700","author":"Steve Abrams","subject":"cycle 84: officer CONFIRMED finding + RE-SCOPED fix — not blanket SPLIT; per-product title-promise triage (tag-as-Showroom vs SPLIT); 233 core + 5 outliers; SPLIT gated on real cost (unexecutable for PR — no price sheet); likely-untagged-Showroom batch","body":""},{"hash":"0a3f9a7","date":"2026-06-18 07:11:04 -0700","author":"Steve Abrams","subject":"cycle 84: inverse-mislabel sweep — 238 active single-variant priced $5 titled as the FULL product (not 'Sample', not showroom-tagged, 233/238 Default Title) = the residual the Sample-sweeps missed; P2 storefront title-mismatch (shopper buys $5 'grasscloth' gets a swatch); heavily Phillipe Romano 129 + DW private-label; SPLIT-fix family; negative control held (26652 Sample-titled + 2768 showroom excluded)","body":""},{"hash":"7c6b2ee","date":"2026-06-18 06:41:26 -0700","author":"Steve Abrams","subject":"cycle 83: consistency fix — body header + closing line retract 'TRULY CLOSED' to 'signature decoded; residuals named'","body":""},{"hash":"acdcf48","date":"2026-06-18 06:38:00 -0700","author":"Steve Abrams","subject":"cycle 83: officer FLAG — retract 'TRULY CLOSED' -> single-variant-Sample signature decoded (active+draft+archived-roll=0/18k); Fentucci NW 38 directly verified (single-variant $5 Wallcovering, sample-only); archived 0 roll-scale (restore-safe); heuristic corrected to structural-not-magnitude; multi-variant + non-Sample-titled residuals named","body":""},{"hash":"fc29b74","date":"2026-06-18 06:32:37 -0700","author":"Steve Abrams","subject":"cycle 83: decode +221 DRAFT abnormal-samples — all SAMPLE-scale, off-storefront, 0 roll-mislabels (Thibaut 183 DWTF disco-line sample side $3.50-9.95 + Fentucci Naturals Walls 38 flat $5); c82 magnitude-gated heuristic load-bearing again; c68 scope TRULY CLOSED active+draft (~753); only customer-facing harm = 455 active roll-mislabels","body":""},{"hash":"ed6f413","date":"2026-06-18 03:59:15 -0700","author":"Steve Abrams","subject":"cycle 82: consistency fix — closing line + rec reflect ACTIVE-decoded-5/5 (not fully closed; +221 draft) + sample-only-no-roll gap + Fentucci sunset check","body":""},{"hash":"749f3e3","date":"2026-06-18 03:58:38 -0700","author":"Steve Abrams","subject":"cycle 82: officer CONFIRMED benign-Fentucci + corrected 'scope CLOSED 5/5' -> ACTIVE-decoded-5/5 (verified draft sweep found +221 draft abnormal: Thibaut 183 + Fentucci Naturals Walls 38); + sample-only-no-roll separate gap, $5-vs-$4.25 Steve decision, lifecycle-sunset check","body":""},{"hash":"0010198","date":"2026-06-18 03:54:57 -0700","author":"Steve Abrams","subject":"cycle 82: Fentucci 21 decode (reused c81 decoder) — benign flat-$5 sample $0.75 above the $4.25 house standard (2026-recent, private-label, not Kravet-MAP, not roll-mislabel, not disco); decoder flat=disco heuristic mis-fired (corrected: flat must be roll-scale); c68 abnormal-sample scope CLOSED 5/5 (532=455 roll-mislabel+56 disco+21 benign)","body":""},{"hash":"dc3d62e","date":"2026-06-18 03:19:19 -0700","author":"Steve Abrams","subject":"cycle 81: officer CONFIRMED — lifecycle/basis/disposition sound + 4 refinements (unrecovered-trade-cost not no-obligation; relabel doesnt legitimize price; UoM+self-heal guardrails; O&L lower-priority than verified-MAP sets); c68 scope 4/5 done","body":""},{"hash":"46b7a60","date":"2026-06-18 03:17:41 -0700","author":"Steve Abrams","subject":"cycle 81: O&L basis decode — 90 = CURRENT-live RRP-basis mislabel (955 active, 2020 import, 21-distinct prices $76-962, barcode=None, 0 in kravet_authoritative_pricing/product_map, 0pct costed); NOT Kravet-MAP, NOT disco; SPLIT-fix bucket; completes c68 scope 4/5 (Fentucci 21 remnant)","body":""},{"hash":"188b25f","date":"2026-06-18 02:41:58 -0700","author":"Steve Abrams","subject":"cycle 80: officer CONFIRMED + post-seed run VERIFIED HEALTHY (153 acknowledged, 0 NEW) — asserted->verified gap closed; c78 installable-now; +temporary-shim & status-key-noise notes; summary table updated","body":""},{"hash":"fc4d261","date":"2026-06-18 02:31:11 -0700","author":"Steve Abrams","subject":"cycle 80: runbook §3 updated — c78 now INSTALLABLE-NOW (ack-baseline coded+seeded); §1 copies ack-baseline.json; re-baseline-to-0-after-reprice steps + SELFTEST/ACK_SEED modes","body":""},{"hash":"479ecde","date":"2026-06-18 02:30:25 -0700","author":"Steve Abrams","subject":"cycle 80: c78 set-difference acknowledged-baseline (c78/c79 officer design) — keyed handle#position#status (draft->active escalation fires); ACK_SEED + SELFTEST modes; seeded 153 tuples (145 active+8 draft); SELFTEST PASS (NEW fires, acknowledged quiet, escalation fires) -> c78 installable NOW (alerts only on NEW regression)","body":""},{"hash":"23c80c1","date":"2026-06-18 01:46:52 -0700","author":"Steve Abrams","subject":"cycle 79: officer REVISE — harden CNCP wrapper (node JSON.stringify body, smoke-tested http=200, log truncate-on-start) + runbook hbAbs watchdog entries + c78 INCONCLUSIVE-during-shrink nuance; chain+exit confirmed","body":""},{"hash":"2718958","date":"2026-06-18 01:42:57 -0700","author":"Steve Abrams","subject":"cycle 79: fix runbook promote-canary.sh invocation — add thin no-arg wrappers (run-sitemap-integrity.sh/run-zero-dollar.sh) since promote-canary runs $SCRIPT with no args + -f checks it; runbook schedules the bare wrappers","body":""},{"hash":"c5b52c5","date":"2026-06-18 01:41:42 -0700","author":"Steve Abrams","subject":"cycle 79: catalog-integrity guard INSTALL RUNBOOK + CNCP-alert wrapper (run-canary-with-cncp.sh) — makes the c77+c78 guards installable via promote-canary.sh in one Steve-gated pass; c77 install-now, c78 after reprice/ack-baseline; PlistBuddy-validate per c56; nothing installed (gated)","body":""},{"hash":"4fdf1b1","date":"2026-06-18 01:06:35 -0700","author":"Steve Abrams","subject":"cycle 78: officer REVISE sign-off appended (3 false-clean blockers + 1 robustness item fixed + re-verified)","body":""},{"hash":"43256c6","date":"2026-06-18 01:06:14 -0700","author":"Steve Abrams","subject":"cycle 78: harden zero-dollar canary per officer REVISE — (1) inventoryQuantity in predicate (DENY+stock>0 false-clean hole), (2) variants first:100 + truncation observable, (3) coverage gate decoupled from RL to completeness-floor (survives the reprice), (4) token-guard; re-verified 145 active + 8 draft, gate PASS, 0 trunc","body":""},{"hash":"fefd684","date":"2026-06-18 00:54:50 -0700","author":"Steve Abrams","subject":"cycle 78: BUILD zero-dollar-orderable canary (P1 free-checkout guard, c75 spec + c77 hardening) — active 145 (coverage gate RL=111 PASS) + NEW 8 DRAFT latent landmines (Arte 5/Romo/DW/Thibaut); abort-on-partial + coverage-gate + status-agnostic; exit 3 ALERT","body":""},{"hash":"423d741","date":"2026-06-18 00:12:27 -0700","author":"Steve Abrams","subject":"cycle 77: officer REVISE sign-off appended (6 hardening items fixed + re-verified)","body":""},{"hash":"213fd60","date":"2026-06-18 00:12:01 -0700","author":"Steve Abrams","subject":"cycle 77: harden canary per officer REVISE — abort-on-partial-crawl, confirm-before-page (re-run), freshness re-based to >72h stale-guard, upward-only baseline ratchet, fileURLToPath, data/latest.json heartbeat; re-verified healthy + crater-through-confirm-rerun","body":""},{"hash":"5427ff2","date":"2026-06-18 00:07:35 -0700","author":"Steve Abrams","subject":"cycle 77: BUILD sitemap-integrity canary (April-mass-archive early-warning) — baseline 72462 product URLs/29 children; asserts index+children 200 + count-crater vs baseline (>10pct) + regen-stall (>24h); HEALTHY now, negative-control fires on 63.8pct crater","body":""},{"hash":"bb81aed","date":"2026-06-17 23:32:40 -0700","author":"Steve Abrams","subject":"cycle 76: officer CONFIRMED (reproduced live) — de-escalation sound; folded in GSC-request-indexing lever for fixed SKUs + narrow count-crater/200/stale canary carve-out (April-archive failure mode) + en-ca duplicate-sitemap tie to c65","body":""},{"hash":"3bedc51","date":"2026-06-17 23:29:59 -0700","author":"Steve Abrams","subject":"cycle 76: sitemap-lastmod freshness audit — recrawl-throttle hypothesis DISPROVEN; lastmod is per-file generation stamp (always fresh, regenerates every ~few min), not stale, not per-product; recrawl path healthy","body":""},{"hash":"5a1c7d5","date":"2026-06-17 22:53:56 -0700","author":"Steve Abrams","subject":"cycle 75: officer CONFIRMED synthesis faithful (no drift, all caveats preserved, canary complete); folded in variants-connection pagination","body":""},{"hash":"ba51039","date":"2026-06-17 22:51:15 -0700","author":"Steve Abrams","subject":"cycle 75: consolidated variant/price-integrity synthesis (c66-c74) + basis-aware dw-map-auditor canary spec (zero-dollar STATUS-AGNOSTIC + abnormal-sample branched-by-basis + disco-completeness) + codified methodology","body":""},{"hash":"d8119d3","date":"2026-06-17 22:16:30 -0700","author":"Steve Abrams","subject":"cycle 74: officer CONFIRMED finding + FLAG action — unpublish-first not archive-first (April caution); split DWTF $3.50 (price-integrity) from DWTT-71xx $125.43 (disco placeholder); hold 66 uninspected as own pass","body":""},{"hash":"c74cbdc","date":"2026-06-17 22:14:51 -0700","author":"Steve Abrams","subject":"cycle 74: Thibaut 56 'abnormal-samples' are DISCONTINUED-line stragglers (32 DWTT-71xx flat $125.43 + 24 DWTF flat $3.50), NOT mislabels; disco-drift 122 active (46 DWTT-71xx+76 DWTF); fix=complete-archive not relabel; memory 301 is vendor-side","body":""},{"hash":"9b8b3ce","date":"2026-06-17 21:38:51 -0700","author":"Steve Abrams","subject":"cycle 73: officer CONFIRMED + stricter gate — per-SKU unit-confirm MANDATORY before split (namespace=prioritization not proof); carve out $1188 outlier (Wallcovering 34in, per-roll-vs-bolt unresolved)","body":""},{"hash":"b81a8e3","date":"2026-06-17 21:36:46 -0700","author":"Steve Abrams","subject":"cycle 73: Kravet 13 verified at MAP per-roll (W-prefix namespace 99.85pct Roll, not tautology) = mislabel only P2; SCOPE CORRECTION: only Kravet+Cole&Son are Kravet-family, O&L/Thibaut/Fentucci deferred (non-Kravet bases)","body":""},{"hash":"8d19017","date":"2026-06-17 20:59:46 -0700","author":"Steve Abrams","subject":"cycle 72: officer FLAG (unit tautology) resolved — independent unit proof (Cole&Son MAP namespace=17 Roll+4 Panel, 0 yard; join 1:1); P3->P2 consumer harm; fix=split+self-heal not rename; scope sibling Kravet vendors","body":""},{"hash":"5b6a19d","date":"2026-06-17 20:56:22 -0700","author":"Steve Abrams","subject":"cycle 72: MAP-verify Cole&Son 352 — all 352 priced at EXACTLY Kravet new_map (0 below MAP), correctly priced just mislabeled; rename MAP-safe. Skeptical save: v1 product_map join false-negatived, real key=barcode->kravet_authoritative_pricing","body":""},{"hash":"c2c95d8","date":"2026-06-17 20:17:15 -0700","author":"Steve Abrams","subject":"cycle 71: officer CONFIRMED+REVISE+FLAG; reframed fix (confirm sample value vs memo; 3-option disposition; min-safe CONTINUE->DENY); tempered draft-flag w/ live Koroseal active=2353 counterexample","body":""},{"hash":"ddadd08","date":"2026-06-17 20:14:46 -0700","author":"Steve Abrams","subject":"cycle 71: root-cause 111 RL $0 Sample = NEVER-PRICED (RL in no pipeline: product_map=0, ~0pct costed, Schu-only seeders, no RL importer); 2025 import != the 33 legacy; fix=reprice $4.25 now + DG cost separate","body":""},{"hash":"60247d9","date":"2026-06-17 19:39:20 -0700","author":"Steve Abrams","subject":"cycle 70: officer CONFIRMED + reframed (producer-elimination is the spine not createdAt; build-roll-scale exonerated at code level; RL-111 follow-up by producer-elim not era)","body":""},{"hash":"a7cac96","date":"2026-06-17 19:36:41 -0700","author":"Steve Abrams","subject":"cycle 70: root-cause 33 $0-roll variants = LEGACY 2018-19 placeholder (100% legacy, 0 in 2026); build-roll-scale EXONERATED; c69 pipeline-bug hypothesis disproven; orderability refined 15 CONTINUE/18 DENY","body":""},{"hash":"5fadfac","date":"2026-06-17 18:59:49 -0700","author":"Steve Abrams","subject":"cycle 69: officer CONFIRMED + position-model re-verified (0/33 render $0 by default; all have in-stock position-1 sample); re-seed=per-product triage","body":""},{"hash":"6526738","date":"2026-06-17 18:56:30 -0700","author":"Steve Abrams","subject":"cycle 69: multi-variant $0 full-catalog GraphQL sweep — default-$0=0, but 33 select-to-free-ROLL products (P2) + orphan straggler (single $0 111->112)","body":""},{"hash":"816dc6e","date":"2026-06-17 18:10:51 -0700","author":"Steve Abrams","subject":"cycle 68: officer CONFIRMED + scope sharpened (single-variant bounded; multi-variant $0-default uncovered -> c69; Cole&Son MAP-verify before rename)","body":""},{"hash":"e0dfb6e","date":"2026-06-17 18:09:10 -0700","author":"Steve Abrams","subject":"cycle 68: fleet $0-Sample signature sweep — P1 BOUNDED to 111 RL (94% coverage, RL-reproduced gate); +534 roll-priced 'Sample' mislabel (P3). v1 hit /products.json 25k cap, v2 collection-enum fixed it","body":""},{"hash":"304aa1f","date":"2026-06-17 16:11:30 -0700","author":"Steve Abrams","subject":"cycle 67: officer FLAG — root-cause corrected (111 RL 'Sample' variants mis-seeded to $0, NOT DG-cost-gap); orderable=true -> P1; fix=reprice sample to $4.25","body":""},{"hash":"b3c9f34","date":"2026-06-17 16:08:22 -0700","author":"Steve Abrams","subject":"cycle 67: price-at-render audit — 111 live Ralph Lauren PDPs render $0 (43.5% of RL), effective-layer confirmed; ties to RL-uncosted-via-DG","body":""},{"hash":"c983851","date":"2026-06-17 15:29:00 -0700","author":"Steve Abrams","subject":"cycle 66: officer REVISE — rendered-layer re-measure (0/46 WCAG violations); WCAG claim retracted, downgraded P2->P3 image-SEO","body":""},{"hash":"c740b1d","date":"2026-06-17 15:23:39 -0700","author":"Steve Abrams","subject":"cycle 66: image alt-text audit — 26.8% images empty alt (WCAG+image-SEO), premise verified (null→rendered alt='')","body":""},{"hash":"a5d6de2","date":"2026-06-17 14:45:48 -0700","author":"Steve Abrams","subject":"cycle 65: officer sign-off + in-cycle collection-locale & sitemap-URL verification (both 302-consolidate, clean)","body":""},{"hash":"d9679e1","date":"2026-06-17 14:43:39 -0700","author":"Steve Abrams","subject":"cycle 65: cross-locale hreflang+canonical audit (0/58 dupe, en-ca/en-gb consolidate to en, negative-control validated)","body":""},{"hash":"2c7c6b5","date":"2026-06-17 14:07:19 -0700","author":"Steve Abrams","subject":"cycle 64: officer sign-off + in-cycle stacked-param & tag-path verification (both clean)","body":""},{"hash":"719c31f","date":"2026-06-17 14:04:59 -0700","author":"Steve Abrams","subject":"cycle 64: collection + faceted-URL canonical audit (0/231 bloat, negative-control validated)","body":""},{"hash":"f80814f","date":"2026-06-17 13:24:30 -0700","author":"Steve Abrams","subject":"cycle 63: canonical+robots indexability audit (347/347 clean, negative-control validated)","body":""},{"hash":"0f99d97","date":"2026-06-17 12:44:03 -0700","author":"Steve Abrams","subject":"jsonld-425-scan: sized the $4.25 JSON-LD leak — 87.8% of multi-variant products (101/115, CI 81.8-93.8%); ~21k fleet estimate, corroborates ~26k GMC bound; systemic across vendors; single-variant showroom-lines excluded; PJ excluded","body":""},{"hash":"2845706","date":"2026-06-17 12:02:43 -0700","author":"Steve Abrams","subject":"jsonld-audit: Product JSON-LD structurally healthy (50/50) but 6/50 leak $4.25 sample into offers.price (multi-variant, real variant exists) — schema.org echo of $4.25 problem; distinct from GMC channel feed (organic rich results + Merchant-Center disapproval)","body":""},{"hash":"1bc3c5b","date":"2026-06-17 11:53:15 -0700","author":"Steve Abrams","subject":"empty-collections audit: 575 advertised -> ~37 live-empty + 14 single-product crawlable pages in sitemap (sitemap-fed to Googlebot, distinct from c58/c59); 33 'errors' were transient 429s","body":""},{"hash":"540c991","date":"2026-06-17 11:10:15 -0700","author":"Steve Abrams","subject":"sitemap-health audit: robots+sitemap clean; 0 genuine dead URLs advertised (9/2000 archived were mirror-lag, live-200) — de-escalates c58 soft-404s (not sitemap-amplified)","body":""}]}