Dw Yolo Loop
Search the build
-
f0a90202026-09-26 TK-12333: remove Scalamandre from showroom-vendors (Steve 2026-09-26: Scalamandre is NOT a showroom line) -
0efe7cc2026-09-26 TK-11860: sync showroom-vendors snapshot to canonical fix-live-board@9bcd81c (+Jeffrey Stevens, Mind the Gap, Sandberg, Scalamandre) -
4c101202026-09-10 deploy-vendor.sh: gate -internal hosts by default (TK-11391 root cause) -
5b0f8602026-09-10 Guard the vendor-microsite generator against showroom-only lines (TK-11200) -
20ab7b02026-09-03 TK-11186: trending-tag-sync twin — guard showroom-only vendors out of Trending tag flow -
ea0eaee2026-09-03 Google feed twin: hard-exclude showroom-only vendors via isShowroomVendor (TK-11186) -
69ecd602026-09-01 refresh GMC leak guard heartbeat -
1b1d8132026-09-01 refresh GMC leak guard heartbeat -
bd5e6812026-09-01 refresh GMC leak guard heartbeat -
6108f5b2026-09-01 fix(gmc-feed-guard): variant-based sample-leak classifier — kills 50,991 false positive, reports real ~457 -
7e33d8b2026-09-01 gmc-feed-guard TK-10952: mirror crash artifact to skill dir, fix cron-fire-canary detection -
1956af92026-09-01 TK-10952: gmc-feed-guard — add unhandledRejection handler for clean crash reporting -
9270cd22026-09-01 TK-11055: lib/shopify.mjs prefer SHOPIFY_FULL_ACCESS_TOKEN for write_inventory scope -
25ac4732026-08-26 feat: read-only GMC full-leak-list exporter (TK-10862 session) -
28e22d52026-08-25 gmc: staged GID-scoped exclude for the 9 true $4.25 leaks (Thibaut+DW), reversible (session close) -
751727e2026-08-25 feat: gmc-fentucci-exclude.js — scoped 462-Fentucci Google feed-exclude (dry-run + canary + restore-map; prevents the blunt-tool 49k mis-fire) -
4f13dec2026-08-20 carnegie landing: add required 'in collaboration with Designer Wallcoverings' About block (config-gated, additive) -
0eba9c02026-08-20 carnegie landing: session-close snapshot -
ab7991d2026-08-20 carnegie: add DW vendor-landing config block + line snapshot (5934 products) -
05f00682026-08-11 chore: TK-10451 scope doc + version bump v0.1.1 (session close) -
57956002026-08-10 gmc-feed-exclude: add --orphans-only (Bucket A / live-verified true orphans) for C-orphans (TK-10446) -
86f28e82026-08-05 TK-10210: fix false no_roll_variant_price exclusion in dw-yolo-loop feed-eligibility -
5df288c2026-08-03 Romo close: batch ledger + price-correction ledger + audit artifacts -
7e55c7b2026-08-03 Romo pricing: fix double-tariff bug from authoritative trade portal -
69ae2e62026-08-03 Romo REPRICE dry-run: 138 live-reconciled candidates (1 below-cost, 137 tariff-uplift) -
e6d07012026-08-03 Romo ADD canary: create script + 10 DRAFT products on live store (ledger) -
671aec72026-08-03 Romo landing: 578-product snapshot + lexicon attribution (color/style/motif facets) -
0510e2b2026-06-18 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) -
e22241f2026-06-18 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 -
cdf1e932026-06-18 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 -
4aa2eb12026-06-18 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 -
7a63e672026-06-18 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) -
90deca52026-06-18 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 -
232ce742026-06-18 cycle 89: consistency fix — decode header reframed (census=proof, probe=flag-honesty audit) -
fbd64492026-06-18 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) -
6ddb9412026-06-18 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) -
e2240da2026-06-18 cycle 88: consistency fix — closing line reflects draft-flip-first disposition -
220c3b92026-06-18 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) -
f38603d2026-06-18 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) -
4ca0d912026-06-18 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) -
ea096112026-06-18 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) -
7a5788f2026-06-18 cycle 86: consistency fix — closing line reflects Flag A upgrade to P3 -
c11af4e2026-06-18 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') -
f4ac7a92026-06-18 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) -
99fbc922026-06-18 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) -
b1534372026-06-18 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 -
b112a342026-06-18 cycle 84: consistency fix — closing line reflects re-scoped fix (title-promise triage, not blanket SPLIT) -
a7b5af42026-06-18 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 -
0a3f9a72026-06-18 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) -
7c6b2ee2026-06-18 cycle 83: consistency fix — body header + closing line retract 'TRULY CLOSED' to 'signature decoded; residuals named' -
acdcf482026-06-18 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 -
fc29b742026-06-18 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 -
ed6f4132026-06-18 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 -
749f3e32026-06-18 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 -
00101982026-06-18 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) -
dc3d62e2026-06-18 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 -
46b7a602026-06-18 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) -
188b25f2026-06-18 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 -
fc4d2612026-06-18 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 -
479ecde2026-06-18 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) -
23c80c12026-06-18 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 -
27189582026-06-18 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 -
c5b52c52026-06-18 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) -
4fdf1b12026-06-18 cycle 78: officer REVISE sign-off appended (3 false-clean blockers + 1 robustness item fixed + re-verified) -
43256c62026-06-18 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 -
fefd6842026-06-18 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 -
423d7412026-06-18 cycle 77: officer REVISE sign-off appended (6 hardening items fixed + re-verified) -
213fd602026-06-18 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 -
5427ff22026-06-18 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 -
bb81aed2026-06-17 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 -
3bedc512026-06-17 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 -
5a1c7d52026-06-17 cycle 75: officer CONFIRMED synthesis faithful (no drift, all caveats preserved, canary complete); folded in variants-connection pagination -
ba510392026-06-17 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 -
d8119d32026-06-17 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 -
c74cbdc2026-06-17 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 -
9b8b3ce2026-06-17 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) -
b81a8e32026-06-17 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) -
8d190172026-06-17 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 -
5b6a19d2026-06-17 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 -
c2c95d82026-06-17 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 -
ddadd082026-06-17 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 -
60247d92026-06-17 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) -
a7cac962026-06-17 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 -
5fadfac2026-06-17 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 -
65267382026-06-17 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) -
816dc6e2026-06-17 cycle 68: officer CONFIRMED + scope sharpened (single-variant bounded; multi-variant $0-default uncovered -> c69; Cole&Son MAP-verify before rename) -
e0dfb6e2026-06-17 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 -
304aa1f2026-06-17 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 -
b3c9f342026-06-17 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 -
c9838512026-06-17 cycle 66: officer REVISE — rendered-layer re-measure (0/46 WCAG violations); WCAG claim retracted, downgraded P2->P3 image-SEO -
c740b1d2026-06-17 cycle 66: image alt-text audit — 26.8% images empty alt (WCAG+image-SEO), premise verified (null→rendered alt='') -
a5d6de22026-06-17 cycle 65: officer sign-off + in-cycle collection-locale & sitemap-URL verification (both 302-consolidate, clean) -
d9679e12026-06-17 cycle 65: cross-locale hreflang+canonical audit (0/58 dupe, en-ca/en-gb consolidate to en, negative-control validated) -
2c7c6b52026-06-17 cycle 64: officer sign-off + in-cycle stacked-param & tag-path verification (both clean) -
719c31f2026-06-17 cycle 64: collection + faceted-URL canonical audit (0/231 bloat, negative-control validated) -
f80814f2026-06-17 cycle 63: canonical+robots indexability audit (347/347 clean, negative-control validated) -
0f99d972026-06-17 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 -
28457062026-06-17 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) -
1bc3c5b2026-06-17 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 -
540c9912026-06-17 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) -
00d45482026-06-17 redirect-health audit: canon clean; archived products soft-404 to homepage fleet-wide (~96% of sample, 69k archived) -
e88d6302026-06-17 gmc-feed-guard: tag FAIL offenders sample-leak vs real-$4.25 (officer vp-compliance refinement) -
edc90032026-06-17 GMC feed-guard canary (c57): full-catalog recount PASS (0 still-on) + standing re-leak guard -
780ef9c2026-06-17 canary fleet REVISE (c56): fix corrupt metafield plist + stagger weekly jobs (officer vp-engineering) -
eff726d2026-06-17 operationalize canary fleet (c56): 7 install-ready packages + consolidated INSTALL sheet -
0af28b12026-06-17 GMC exclusion verification (c55): exclusion CONFIRMED — 20/20 sample off Google, 15/15 real retained, 0 still-on thru 36k -
b9c390f2026-06-16 no-image scan (c54): 50 of 74,441 ACTIVE have no image (0.07%) — catalog image presence 99.93% -
f488a4e2026-06-16 fence-strip APPLY (c53): 60/60 code-fence leaks stripped (Steve-authorized) -
6c536152026-06-16 fence-strip dry-run: tighten to leading-fence-only per officer REVISE (61->60, drop stelios no-op) -
1dc6ff62026-06-16 fence-strip DRY-RUN (c52): 61 code-fence leaks, review-ready, all gates pass (read-only) -
b5a63092026-06-16 body-quality scan (c51): 187 empty + 64 code-fence leaks; 14,772 'truncated' = FALSE POSITIVE -
94244422026-06-16 dup-sku scan (c50): genuine dup-SKU ~0 (all colorways); found 529 placeholder/junk SKUs -
91e962c2026-06-16 orphan-products scan (c49): PASS — 0 un-navigable products of 74,541 ACTIVE -
6c874fe2026-06-16 dup-image scan (c47): clean — no wrong-image errors; all 27 shared-image groups are pattern variants -
b5c27d72026-06-16 isolate read-only yolo loop on its own worktree branch (yolo-loop-readonly-20260616) -
7e353c52026-06-16 Activate 14 1838 $4.25 sample-only drafts as Showroom Lines (tag+custom.showroom_line+inv2026, smart collection auto-includes); hold 2 mispriced paste-tub accessories -
d44cbed2026-06-16 Activate 451 of 467 1838 Wallcoverings drafts (status ACTIVE + inv2026 both variants; 16 sample-only $4.25 held). Steve-authorized. -
074660a2026-06-16 dup-title scan (c46): 18,577 ACTIVE products share non-unique titles; 84% generic/template -
463cd182026-06-16 stage live-price-canary as install-ready launchd package (c45, install Steve-gated) -
5d9d5622026-06-16 live-price canary HARDENED (c45): retry/backoff + N=250 → UNKNOWN 20%→0.4%, number corrected -
ac592b12026-06-16 broken-image scan (c44): PASS — 0% broken on 117-sample (image loadability healthy) -
31803d52026-06-16 cycle-44: broken-image delivery pilot (312 active sampled, 99.7% OK, 0 broken; axis closed, read-only) -
72fbe082026-06-16 add_roll_variants: enforce ROLL-unit in-script (standing rule: no per-yard MAP on per-roll product); verified 305/305 ROLL, 0 dropped -
b10bbb72026-06-16 dark-vendor check (c43): 4 vendors fully DARK (not mis-collected) — 1,943 products -
e3607af2026-06-16 add_roll_variants: commit the 305-target inputs into repo + resolve from inputs/ (reproducible across reboots; /tmp fallback for legacy runs) -
ae2c5c82026-06-16 Showroom Lines: scan + bulk tag/metafield scripts for single-variant $4.25 products (sample-only → showroom category) -
8ff645a2026-06-16 harden add_roll_variants: price floor (>=$10, block $4.25 sample-trap) + require -Sample SKU (skip+log fallback); 0 of approved 305 dropped, guards arm against input drift -
4aeca4e2026-06-16 collection merge+301 map (c42): 28 empties->twin, 15 no-twin (some whole-vendor-empty) -
ba1a1362026-06-16 Kravet add-roll: harden width parser to extract leading number from metafield (fixes 3 PR labels like '20 in (50.8 cm)' -> '20In Wide'); relabeled live -
d32d8a12026-06-16 orphan-collection LIVE re-scan (c41): TRUE empty count = 43 (c39's 4 was a feed-stale undercount) -
5f0ef462026-06-16 Kravet add-roll-variant writer: adds Sold-Per-Roll @ MAP to 305 sample-only wallcoverings (idempotent, custom.width label, qty2026/CONTINUE); canary verified on Gallier Diamond $747 -
c97eb922026-06-16 collection-leak sweep (c40): 3 confirmed collection-level leaks + Brewster false-positive + stale-count catch -
fc12f522026-06-16 orphan-collection scan (c39): 4 empty live collections + a WallQuest leak -
3acda5c2026-06-16 live-price pilot (c38): storefront crawl — true displayed-price, independent of broken mirror -
8068a1c2026-06-16 DTD verdict A (3/3): guarded add-price diff for 305 sample-only Kravet ROLL products (all product_type=Wallcovering verified); WRITE gated pending Steve approval + VCC-flag confirm -
7f378282026-06-16 Kravet ROLL reprice DRY-RUN (read-only, variant-level): 450 targets -> 305 sample-only (no roll price), 145 at-MAP, 0 below-MAP; all vendors display_prices=true -
ccfaa8a2026-06-16 null-price live-check (c37): mirror price column unreliable; no blank/$0 epidemic -
cb534c82026-06-16 dark-inventory scan (c36): only 1,062 sellable-ready archived; cost is the limiter -
71311302026-06-16 Kravet split-brain fix: copy kravet_authoritative_pricing (44734 SKUs) Mac2->Kamatera canonical; 10645 live products now MAP-matched, 457 ROLL safe-reprice target -
ff928c02026-06-16 cycle-33: promote-canary.sh harness — generate launchd plist for a built canary (council #2); install stays Steve-gated, plutil-validated -
d1813962026-06-16 Kravet Jan-2026 price list -> dw_unified: kravet_master_price_2026 keyed master (8191 rows, joins live on mfr_sku, unlocks 457 ROLL wallcovering reprice targets) -
f72b0522026-06-16 sitemap emergence sizing (c35): philipperomano fully generatable (8,229 URLs), novasuede Kamatera-only -
e3d61c12026-06-16 canary promotion harness (c34): stage 5 new canaries as install-ready launchd packages -
150b6a12026-06-16 specs pattern-crosswalk probe (c33): PARTIAL feasibility + structural ceiling -
83eb6fa2026-06-16 specs-reparse sizing (c32): the data exists but won't join — SKU-namespace mismatch -
c79083c2026-06-16 enrichment-board: local synthesis of c26/c28/c29/GMC into one ranked vendor×axis board -
5c719ab2026-06-16 schu roll-adds: complete all 81 (41 clean + 36 edge + 4 oddball); make edge script idempotent across cap-blocked partial runs -
fabc2952026-06-16 alt-text coverage audit: repped-vendor image alt-text (read-only GraphQL) -
d9c88742026-06-16 metafield-coverage: harden specs check w/ global.width + pillow.* fallbacks (c28) -
30b9b802026-06-16 robots/sitemap fleet canary: crawl-directive + sitemap health (read-only) -
acaeef72026-06-16 metafield-coverage audit: repped-vendor specs/images/color coverage (read-only GraphQL) -
3343eea2026-06-16 harden 3 read-only canaries (DTD-A 3/3): dynamic-dated reports + best-effort CNCP alert on FAIL -
587c4e42026-06-16 tls-expiry canary: read-only fleet cert-expiry check (DTD 3/3; PASS, all certs >=41d; grasscloth.com parked off-fleet) -
781635c2026-06-16 handle-freshness canary: storefront 404 check on mirror-ACTIVE handles (DTD 3/3; PASS 4.4% drift, all explained mirror-lag) -
7960af22026-06-16 queue-slo-snapshot: staleness-aware Shopify write-queue SLO probe (Mac2 mirror frozen at Apr-14; refuses fake-live numbers) -
06077902026-06-16 Availability-drift canary: built, tested, found INVALID-as-is for DW (negative result) -
30e9dc12026-06-16 DRAFT reactivation staging plan (report-only, tiered, batched) -
a8d15892026-06-16 Canary board: aggregate all DW canaries into one red/green health pane -
4d885e12026-06-16 Banned-word body-leak scanner: exact cleanup list + strip preview (68 live) -
75f9a552026-06-16 Banned-word 'Wallpaper' title rewrite PREVIEW (report-only, guarded transform) -
7d9aad22026-06-16 Scraper contract test: DB-side field-depth canary for top-revenue vendors -
65f918b2026-06-16 April mass-archive restore staging plan (report-only, tiered, batched) -
e122d4f2026-06-16 CF DNS drift snapshotter: read-only zone export + diff vs last commit -
5159ca62026-06-16 docs: verify resume-roll-adds REMAIN-counter edge-set concern (RESUME-COUNTER-NOTE) -
d2d776f2026-06-16 refactor: add scripts/lib/shopify.mjs shared GQL client + migrate 2 read-only auditors (proof of pattern) -
540e2422026-06-15 Contract-scope auditor: read-only dw_unified canary for vendor-scope integrity -
ceef3ac2026-06-15 feat(staged): backup-freshness + secrets-env-backup LaunchAgents + INSTALL (Steve-gated install) -
d6bb2f32026-06-15 Add blocked-vendor cost-coverage ledger (2026-06-15): 7 vendors re-confirmed still-blocked via full-Drive walk (0 price docs) -
36a2b0f2026-06-15 Canary Meta-Watchdog: heartbeat verifier for com.steve.* jobs (read-only) -
f5311b12026-06-15 chore: gitignore runtime artifacts + un-track gmc-425-result.json -
fd37d082026-06-15 chore: remove dead rw-price-group one-off cluster (9 unreferenced Rebel Walls price-group experiment forks, ~2700 LOC) -
7debeb62026-06-15 Stage GDrive cost-mine 2026-06-15: 772 rows (DW Exclusives 512, Mini/Mid-Century 141, Ralph Lauren DGD 114, Milton&King 4 collection-level) -
21bdbc02026-06-15 Stage Kravet below-MAP fix-list (208 ROLL-eligible, 2026-06-15 analysis) -
0bd224f2026-06-15 GMC $4.25 feed-exclusion: staged Shopify-side fix (dry-run: 60,232 mispriced products in Google feed) -
6e2c6a12026-06-15 Stage banned-word Wallpaper->Wallcovering rewrite PLAN + AI-preamble strip list (READ-ONLY, no Shopify writes) -
af6f41a2026-06-15 Extend hue-sort runbook to all 34 color collections (cov_<hue> now written for all 14 hues, 127,880 metafields) -
26d77652026-06-15 Add Boost hue-sort runbook (Half A client-side + Half B server-side cov_<hue> metafields) -
c1e6e702026-06-15 Move DWLK-829420 (probe-renamed to Size:Sample) from edge→clean roll-add CSV so tomorrow's resume finishes it hands-off -
7532fe42026-06-15 Fleet dedup: archived 559 true duplicate products live + 301 redirects (Shopify -N handle signal, keeper-ACTIVE guard, read-back verified, 0 err); rejected 860 polluted count from maker-name SKUs -
e36e0e22026-06-15 Resolve 4 Schumacher oddballs via sku-swap (bare->Roll, existing->-Sample); wire into tomorrow's resume wrapper -
50b1d332026-06-15 Add resume wrapper + persist target CSVs for tomorrow's remaining 77 Schumacher roll-adds (run manually after Shopify daily-cap reset) -
e96c9722026-06-15 Add Schumacher edge add-roll handler (37 Default-Title via option-rename; 4 oddballs flagged for manual; separate revert log) -
11048a72026-06-15 Schumacher add-roll: idempotent skip + accumulate revert-log across runs; 2-product live test verified (Sample+Roll @ retail, inv 2026) -
d8390e12026-06-15 Kravet dedup: archived 18 duplicate products live + 301 redirects to keeper handles (keeper-ACTIVE guard, read-back verified, 0 err) -
5cb00ac2026-06-15 Trending 2026: hard cap, raise to newest 1000 SKUs (no Artmura union); expanded 500->1000 -
cf0c7f02026-06-15 Kravet dedup verifier: handle-driven keeper selection + redirect targets; 18-product verified archive plan (15 HIGH, 3 REVIEW) -
7f7c9f12026-06-15 Trending 2026 tag reconciler: newest-500 active + all Artmura, daily launchd cron (trimmed 5130→500) -
2cde42a2026-06-15 Add Schumacher add-roll-variant builder (532 targets, inventory=2026, scope-gated preflight, reversible) — paused for upgraded token -
e3ad9a12026-06-15 Kravet dedup sweep: bulk full-catalog true-dup detector (vendor+SKU / vendor+SKU+title keys); 18 real dup clusters found, 18 removable -
1193fa72026-06-15 Add Schumacher roll-price pusher + propagate price-sheet costs to Kamatera canonical (1,174 costed) -
89650362026-06-15 Resolve staged price-sheet costs into shopify_products.cost (1,177 active Schumacher+Ralph Lauren, unit-aware, tagged & reversible) -
1856ee22026-06-15 Ingest GDrive vendor price sheets into dw_unified.vendor_price_sheets (19,797 rows) -
18fc2852026-06-15 Kravet under-MAP reprice: 73 variants lifted to MAP (live, verified); variant-centric resolver dodges dup-SKU products; sample/unit/drift guards -
f57943b2026-06-15 Kravet off-MAP: read-only paginated measurer (no bulk-op, no Kamatera; joins live price to 2026 MAP via custom.manufacturer_sku) -
f9f091b2026-06-15 brands: repoint push script to recreated page id 208010608691 (cache-evict delete+recreate) -
29272192026-06-15 brands: drop Zeuxis Parrhasius floral room-bg (settlement foliage); sync room maps -
fd8f8ac2026-06-15 Push the 59 held ROLL anomalies up to MAP (Steve-authorized 2026-06-15) -
c50964f2026-06-15 brands page: 3 audit fixes — promote title to <h1> (SEO), inject ItemList JSON-LD (100 brands, rich-result), strip 'Wallpaper wallcovering' double-noun from bg-img alt (banned-word + grammar). 100 tiles, all image+logo, 385KB. -
d9b77f92026-06-15 GMC $4.25 feed-price blast-radius count (read-only audit); remove incomplete gate-probe scratch -
f1da7162026-06-15 ROOT CAUSE + FIX: Kravet MAP push now unit-aware (ROLL-only gate) -
182a3682026-06-15 Kravet MAP revert tool (DTD verdict B): restore the 448 written prices to original -
6f4cc862026-06-15 Kravet MAP push tool: roll-variant-only price=MAP, dry-run gate + anomaly guard -
2dae1502026-06-15 Kravet cost campaign: 6,373/8,317 (77%) MAP-resolved from free sources + 1,944 disco-tail isolated -
f145eb52026-06-15 Kravet-family cost drive: MAP resolver + parallel per-brand currency-check -
90c7e9a2026-06-15 Google feed: prep-actions (punch-list + unpublish-list) + gated apply-unpublish -
257f9f82026-06-15 feed-eligibility: leak-check on feed-emitted fields only (title/handle/vendor) -
5de67262026-06-15 Google feed scoping: live-Shopify-driven eligibility gate + calibration proof + SCOPE.md -
69673152026-06-15 Color-SEO landings: SEO title + meta description + editorial intro on all 17 live color collections (council idea #2 'Wallcoverings by Color'); GraphQL collectionUpdate via write_products -
451c9232026-06-15 brands page: consolidate Scalamandré to single /collections tile (drop 2 old /pages tiles) — final staged state: 100 A-Z tiles, 0 missing logo/image, 1838 pulled, Surface Stick→apartmentwallpaper, +8 high-volume brands -
20610f52026-06-14 Add read-only Active/Draft gate-integrity audit script (ACTIVE+DRAFT GraphQL paging) -
d086ddd2026-06-14 Add fail-closed pre-flight validator (rules.json + preflight-validate.js) codifying MEMORY/CLAUDE.md hard rules -
148daae2026-06-14 brands-page: drop dead 1838 tile, repoint Surface Stick to apartmentwallpaper.com, add 8 high-inventory brands (Phillipe Romano/Hollywood/Malibu/Jeffrey Stevens/Scalamandré/Christian Lacroix/Marimekko/Artmura) each w/ logo+bg → populated collections; 102 tiles, 0 missing logo/bg -
1489f682026-06-14 Kravet disco: rigorous Algolia-index verification (URL-agnostic, exact-sku) + archive 121 confirmed-discontinued (dual-confirmed, AMW excluded), 0 failed; audit log saved -
bd389382026-06-14 Brands directory: every card now has bg image + logo chip (0 text-only) -
094cdc72026-06-14 Brands page: add Featured Fabrics row (Pierre Frey/Lee Jofa/Romo/Designers Guild/Holland & Sherry); rename first row to Featured Wallcoverings for clean pairing -
5fce4e02026-06-14 Brands page: add Featured Houses prestige row (Schumacher/Thibaut/Cole&Son/Ralph Lauren/Kravet) above All-Brands-A-Z divider+search (DW Marketing officer); fix Schumacher logo (was FREDERIC sub-brand -> schumacher-shopify) -
074ac332026-06-14 Brands page officer refinements: type-to-filter search, editorial subtitle+intro copy w/ anchor-brand links, per-tile alt text+data-name, CSS typo fix (.dw-dard), Elitis->plain grasscloth swatch (compliance). Officers: commerce/marketing/steward/compliance all PASS -
394aa032026-06-14 Kravet MAP integrity tools: coverage audit (GraphQL, REST-metafields-broken), unit-aware off-MAP delta, sample-trap exclusion, 1104 unit-verified reprice to 2026 MAP -
ad1f1a22026-06-13 Brands page: fix broken DW Exclusive link (/pages/dw-exclusive-1 404 -> /pages/dw-exclusive 200); found via live link test -
454032f2026-06-13 Brands page DTD-C: upgrade 8 flat-swatch tiles to settlement-clean room shots (Elitis,Fentucci,Koroseal,Laura Ashley,Maya Romanoff,Mulberry,Nina Campbell,Ralph Lauren via images[1] lifestyle); audited, leave clean logo tiles untouched -
7863e7d2026-06-13 Brands page: design-panel synthesis (graphic-designer 4/5 + interior-designer) — chip min-width+double shadow, object-position center, tighter heading tracking -
a249bd72026-06-13 Brands page: apply graphic-designer pass — uniform logo chips (fixed 66% width), drop-shadow to lift faint logos, tighter 10px grid gap, consistent chip opacity/shadow -
b065f652026-06-13 Brands page redesign: room-setting bg + vendor logo chip on top for 48 vendors; settlement-audited every bg (no tropical/leaves/florals/birds); curated clean room map persisted -
018a8ab2026-06-13 Brands page: settlement scrub — block 9 vendor room images with tropical/leaves/florals/birds/butterflies (AS Creation,Wallpaper NYC,Harlequin,Sancar,Mulberry,Backdrop,Peg Norriss,SUGARBOO,Brunschwig) -> clean wordmarks; permanent SETTLEMENT_BLOCK guard in build -
efd6d5f2026-06-13 Brands page LIVE on /pages/brands (new design, leak-free); preview unpublished per DTD verdict C (fallback retained) -
71696a62026-06-12 Refine: splitName strips trailing Wallcoverings + never uses junk tags as eyebrow -
fca0d802026-06-12 Brands page: delete+recreate canonical (still cache-frozen); park working design at /pages/brands-preview; snapshot original; memory update -
b51969d2026-06-12 Cole & Son MAP reconcile by title-pattern (248/249 patterns uniform MAP); reprice 789 over-MAP products to MAP -
783ea1b2026-06-12 Brands page: 62 real logos (vendor-logos CDN set + 14 dig-and-find sourced inline) + 23 vendor room images; tighten grid (6-col, dense); force-purge attempts -
c106b302026-06-12 Schumacher title fix (517 doubled-Wallcoverings) + Cole&Son MAP audit/apply + build-line title-strip handles redundant Wallcoverings -
ee9be2e2026-06-12 Brands page redesign: pill-tile logo grid for /pages/brands (52 real logos + elegant wordmarks; drop WallQuest+Nicolette leaks; write_content push) -
4791fbe2026-06-12 Schumacher landing LIVE (2326 products, 38/38 clickthrough); spec-rows assertion data-agnostic -
51eefb72026-06-12 Schumacher: junk-product filter in build-line (skip vendor-name-only titles + imageless); snapshot 2326 clean, colors extracted -
66accf52026-06-12 Schumacher config block + collection created (/collections/schumacher, 2326 products) + DNS staged -
bcd29242026-06-12 Fix broken Trade nav link: /pages/trade-program (404) → /pages/trade (real page) -
eee1f4d2026-06-12 Landing: all line labels config-driven (card label, books heading, footer, gate, PDP crumbs/spec/share/story/JSON-LD) — fixes Thibaut showing 'Artmura' -
c8841df2026-06-12 Thibaut color-extract script + color filter enabled (38/38 clickthrough) -
e49d2c22026-06-12 Landing shopbar text now config-driven (line name + product count) — was hardcoded Artmura/161 -
9ab487d2026-06-12 clickthrough: data-agnostic count + optional book/color checks (Thibaut 37/37, Artmura 39/39) -
2f4b8ae2026-06-12 Thibaut snapshot: 1903 products built + cleaned (-SAMPLE suffix), store_url prefers live handle -
584bf8a2026-06-12 Vendor-landing template: generalize to any DW line + dw-vendor-landing skill -
4ec71ec2026-06-12 Artmura landing: add Playwright component click-through (39/39 live regression test) -
8382b472026-06-12 Artmura: apply Cost/.75/.85 retail markup + hide prices on landing + add social share -
700117a2026-06-12 Artmura landing: Shop links now land on the real /collections/artmura collection -
702c6d22026-06-12 Artmura landing: re-skin as Designer Wallcoverings house brand (not vendor-branded) -
6d727712026-06-12 Artmura deploy: auto-pick free port on Kamatera (:9920 taken by another app) + pm2 start with PORT env -
f3575172026-06-12 Artmura landing: self-contained BUNDLE mode + turnkey deploy script for artmura.designerwallcoverings.com -
8a03eb42026-06-12 Artmura site README: document the clone-a-line template flow + deploy-gated status -
5af2df52026-06-12 Vendor-landing factory: build-line.js generates a branded landing for ANY live DW vendor from Shopify -
8489a632026-06-12 Vendor-landing template: config-driven + links to live Shopify (not a competing store) -
8f441ef2026-06-12 Artmura go-live: inventory=2026 both variants + publish to all 13 DW channels + status=ACTIVE -
52f8e552026-06-12 Artmura titles: insert 'Wallcovering' → '<name> Wallcovering | Artmura' -
91724512026-06-12 Artmura site: per-series 'Pattern' filter in catalog (21 collections) — honors committed per-series browsing -
55fc3972026-06-12 Artmura push: fix 422 (drop metafields from create — store defs collide), add req timeout + metafield backfill -
c695c882026-06-12 Thibaut: strip 160 junk parenthetical tags from live store (GET-strip-PUT, preserves trailing color, 0 failed) -
7a525502026-06-12 Artmura site: README documenting features, data, endpoints, preview/gated status -
528cdf42026-06-12 Artmura site (B): 'Pairs well with' recs + per-product JSON-LD on PDP -
3e3a3bd2026-06-12 Artmura site (B/catalog): dominant-color extraction → true-hue color sort + color dots + color filter bar -
ecdd0e42026-06-12 Artmura site (C/production-readiness): APCA hero fix + perf + deploy scaffold -
16611052026-06-12 Artmura: direct Shopify draft-create pusher (models thibaut path; queue worker dead) -
dfb4bac2026-06-12 Artmura site: pricing finalized at website price, no trade discount (Steve directive); drop reference framing -
6bb84ee2026-06-12 Artmura microsite: editorial Italian storefront (Express) for the 161 staged products -
f4eba662026-06-12 Artmura onboard: full-monte feed-first capture of 161 newwall.com Artmura products -
ca94dcb2026-06-11 Thibaut mfr-fix: COMPLETE — 1096/1096 pushed live (0 failed), verified on store; store=designer-laboratory-sandbox IS prod -
8da5a202026-06-11 Thibaut mfr-fix: one-line run-push.sh wrapper (no line-wrap mangling; store=prod confirmed) -
cd8b70e2026-06-11 Thibaut mfr-fix: direct Shopify Admin REST pusher (DTD verdict A) — bypasses sandbox queue, writes live store from staging, dry-run + per-row logging -
298b81b2026-06-11 Thibaut mfr-fix: flag jobs are in wrong queue DB (worker reads separate Kamatera-side queue); re-enqueue needed -
bdd29b72026-06-11 Thibaut mfr-SKU fix: queue 1027 tag backfills, stage 69 title rewrites + backlog -
d8a86332026-06-03 Scrub residual vendor names from products.json (title/vendor/tags); preserve sku/handle -
dcc62552026-06-03 Add *.bak to .gitignore to exclude backup files from tracking -
25254452026-06-01 hero/ideas: single big full-bleed hero (remove 2x2 four-square grid + hero-4grid.js/json + inert CSS), collapse Ideas to one rail -
8eb1ccd2026-05-31 Add per-site favicon (kills /favicon.ico 404) -
b4b59202026-05-28 scrub vendor name leaks from products.json source (176 products: title/vendor/tags cleaned per sku-redact denylist) -
7ace0822026-05-13 polish: tech-violet palette, editorial hero, 3-step how-it-works section -
579e2262026-05-12 dw site: log Gemini image-classify usage to cost-tracker -
f29cf272026-05-10 deploy: pm2 port 9925 + nginx :80 vhost, gemini env loader -
469fcec2026-05-10 initial scaffold + GA gtag — designerwallcoverings.ai room-match landing
Authors
- Steve269
- steve-office5
- steve3
Agents used
- vp-dw-commerce5
- vp-engineering2
- vp-compliance-policy1
Skills used
- /pages8
- /products6
- /collections6
- /claude5
- /code5
- /latest5
- /backoff5
- /config4
- /color4
- /vendor4
- /spec3
- /facets3
- /pillow3
- /handle3
- /artmura3
- /skills2
- /shopify2
- /lead-time2
- /unpublish2
- /stale2
- /robots-sitemap2
- /alt-text2
- /trailing2
- /junk2
- /material2
- /template2
- /draft2
- /images2
- /global2
- /sitemap2
Creative ideas + design notes
f0a9020 · 2026-09-26 · TK-12333: remove Scalamandre from showroom-vendors (Steve 2026-09-26: Scalamandre is NOT a showroom line)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66
0efe7cc · 2026-09-26 · TK-11860: sync showroom-vendors snapshot to canonical fix-live-board@9bcd81c (+Jeffrey Stevens, Mind the Gap, Sandberg, Scalamandre)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018HHVEexYEwkT1HYJzkvv66
4c10120 · 2026-09-10 · deploy-vendor.sh: gate -internal hosts by default (TK-11391 root cause)
This template emitted an nginx vhost with NO auth_basic at all, so every microsite it deployed came up publicly browsable. That is how 65 "-internal" hosts ended up ungated — including phillip-jeffries-internal, which served 4,377 SKUs of a SHOWROOM-ONLY line to anyone. Gating the 64 by hand fixes the instances; this fixes the source. Gate is chosen from the fleet's own naming convention: an "-internal" host is a trade/spec viewer and gets auth_basic + /etc/nginx/.htpasswd-dwvendors (same realm as the other ~453); a public vendor landing (artmura, grasscloth) does not. GATE=1 / GATE=0 override either way. Refuses to deploy an internal host at all if the htpasswd file is missing on the target, rather than silently shipping it ungated. Adds a post-deploy edge check that warns loudly if a host meant to be gated answers anything but 401/403. Verified by rendering the template for all three cases: -internal gated, public landing open, GATE=1 forces gating on a public name. bash -n clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5b0f860 · 2026-09-10 · Guard the vendor-microsite generator against showroom-only lines (TK-11200)
The *.designerwallcoverings.com vendor microsites are minted by this artmura-site
template, not by dw-domain-fleet — so the isShowroomVendor guard added there never
covered them. Showroom-only lines (Phillip Jeffries) must stay "addressable but not
discoverable", and a public browsable grid on its own subdomain is a discovery surface.
New showroom.js (self-contained so it rsyncs with a BUNDLE=1 deploy) + a local copy of
the canonical showroom-vendors.json, wired into all three stages:
- build-line.js refuses to snapshot a showroom vendor; drops showroom-TAGGED products
from any snapshot; and refuses to write a 0-product snapshot (a bad
token silently blanked a live microsite's grid).
- deploy-vendor.sh refuses by slug, domain label, or the snapshot's own vendor field.
- server.js refuses to serve a showroom-vendor config; hides showroom-TAGGED
products from the grid at catalog load.
Matching normalization collapses the "Philip"/"Phillip" spelling split and separator-less
slugs, so a one-letter typo or a renamed slug can't walk past the guard.
Escape hatch: ALLOW_SHOWROOM=1 (always logs loudly).
Verified locally: showroom vendor/slug/domain refused at all three stages; carnegie line
still boots and serves 5934 products (/api/config, /api/products, /api/facets all 200);
tag filter hides exactly the tagged rows. Nothing deployed — prod stays gated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cwgg8nQa46x1QZewDe7bGn
20ab7b0 · 2026-09-03 · TK-11186: trending-tag-sync twin — guard showroom-only vendors out of Trending tag flow
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YXf9gMQQWRfNex6EestZhp
ea0eaee · 2026-09-03 · Google feed twin: hard-exclude showroom-only vendors via isShowroomVendor (TK-11186)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BgCcr9t5zNGdb43pS4f1ks
7e33d8b · 2026-09-01 · gmc-feed-guard TK-10952: mirror crash artifact to skill dir, fix cron-fire-canary detection
- Add _SKILL_GUARD constant and mirror crash-handler writes to ~/.claude/skills/gmc-feed-guard/data/latest.json so the crash artifact stays in sync with the main artifact path. - Previous session (HEAD) already added SKILL_DIR mirror for normal runs and verdict field — this extends the same pattern to crashes. - Rebuilt cron-fire-canary manifest: primary_artifact_path now set to skill dir, so cron-fire-canary correctly detects freshness vs stale and classifies exit=2 (FAIL verdict) as a designed signal exit (ok), not a crash. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1956af9 · 2026-09-01 · TK-10952: gmc-feed-guard — add unhandledRejection handler for clean crash reporting
Script was crashing mid-run (exit code 2 = unhandled rejection) without writing to data/latest.json, causing cron-fire-canary to see stale-unknown state. Now: on any unhandled rejection, writes FAIL verdict to data/latest.json and exits 1 so the error is visible + the fleet-health-rollup sees FAIL not silence.
86f28e8 · 2026-08-05 · TK-10210: fix false no_roll_variant_price exclusion in dw-yolo-loop feed-eligibility
Port the TK-10209 fix from designerwallcoverings to dw-yolo-loop: 1. isSample now uses price-beats-label logic: a variant priced >$5 is a real roll even if labeled "Sample" — fixes the Osborne W7351-01 class where the sole roll variant was mislabeled "Size: Sample" @ $76.02, causing rollPrice=null -> false no_roll_variant_price exclusion. 2. Wrap /tmp/cost_map.tsv readFileSync in try/catch: the file is GC-prone and the script is designed to flag kravet_map_unverified_no_cost when cost is missing — a hard crash here defeated that intent. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5df288c · 2026-08-03 · Romo close: batch ledger + price-correction ledger + audit artifacts
- 207-draft batch ledger, 117-product price-correction ledger (before->after) - full-catalog audit: prices correct, descriptions clean, 2 sample-only structure exceptions (Floris/Raya)
7e55c7b · 2026-08-03 · Romo pricing: fix double-tariff bug from authoritative trade portal
- Root cause: our_price built from net_cost (trade + 2x tariff) not total_price_per_roll (trade + 1x) - Confirmed vs trade.theromogroup.com: Figura W948/03 Total/Roll $946.05 -> retail $1712.31 - Catalog: recomputed our_price for 382 rows (backup: our_price_pre_tariff_fix) - Store: corrected 117 created products ($2890.79 overcharge removed, 6 active), ledgered before->after - REPRICE-138 was BACKWARDS (compared correct-live vs wrong-our_price) -> cancelled
e6d0701 · 2026-08-03 · Romo ADD canary: create script + 10 DRAFT products on live store (ledger)
- W-code reconciliation vs live store → 817 true-new safe-to-ADD - mirrors live Romo structure (Title option, Single Roll + $4.25 Sample) - 10/10 verified: sellable variant, sample, image, attribution tags, draft - idempotency guard (skip existing SKU) + reversibility ledger
671aec7 · 2026-08-03 · Romo landing: 578-product snapshot + lexicon attribution (color/style/motif facets)
- site.config.js: add romo block (DW house chrome, collection handle 'romo') - build-romo-enrich.js: attribute live products onto interior-designer lexicon from Shopify tags - server.js: styles/motifs on each record + in /api/facets; vendor-aware startup banner - index.html: Style + Motif filter selects + color bar (auto-hide when empty) - lines/romo-colors.json: 578/578 color buckets, 522 styles, 525 motifs
e88d630 · 2026-06-17 · gmc-feed-guard: tag FAIL offenders sample-leak vs real-$4.25 (officer vp-compliance refinement)
Non-blocking refinement per vp-compliance-policy CONFIRMED sign-off: FAIL still fires on any min-variant<=4.25-on-Google (fail-closed, correct), but each offender is now tagged [sample-leak] (has a higher real variant = the expected import re-leak class) vs [real-$4.25] (genuinely sample-only SKU) so the alert is actionable. PASS unchanged (0).
edc9003 · 2026-06-17 · GMC feed-guard canary (c57): full-catalog recount PASS (0 still-on) + standing re-leak guard
Hardened the c55 recount (retry/backoff on non-JSON/429/5xx — fixes the crash that stopped it at 36k). Full catalog now: 74,441 scanned, 0 $4.25-still-on-Google in 232s → COMPLETES the c55 verification (GMC exclusion confirmed catalog-wide, not half-scan). Promoted as a daily standing GMC feed-guard via the c34 harness: FAILs if any $4.25 product reappears on the Google channel (catches re-leak from new imports). Package PlistBuddy-validated (c56 lesson). Install Steve-gated.
780ef9c · 2026-06-17 · canary fleet REVISE (c56): fix corrupt metafield plist + stagger weekly jobs (officer vp-engineering)
vp-engineering sign-off caught: (1) metafield-coverage plist was a bare JSON array (no Label/StartInterval) — plutil-lint passed it as valid syntax but it was a dead launchd job; regenerated + now PlistBuddy-valid. (2) all 5 weekly jobs shared StartInterval 604800 → would fire concurrently (3x 74k scans at once); converted to day-staggered StartCalendarInterval (Mon-Fri 2-3am, heavy scans Wed/Thu/Fri). All 7 PlistBuddy-valid. Stable-home rec = main-repo scripts/. Install Steve-gated.
eff726d · 2026-06-17 · operationalize canary fleet (c56): 7 install-ready packages + consolidated INSTALL sheet
Promoted the run's shippable read-only canaries to install-ready launchd packages via the c34 harness: handle-freshness + live-price (daily), tls-expiry/robots-sitemap/ metafield-coverage/alt-text/no-image (weekly). Each = plist + heartbeat-wrapper + meta-watchdog manifest row + INSTALL.txt; all plists lint OK. Consolidated INSTALL-FLEET sheet written. FIXED a harness bug: promote-canary.sh had a hardcoded main-repo BASE path (wrote packages into the main repo, contaminating the write-session tree) — reverted that contamination + made BASE script-relative (worktree-aware). Caveat flagged: scripts live in the worktree; move to a stable path before installing permanent jobs. Install Steve-gated.
0af28b1 · 2026-06-17 · GMC exclusion verification (c55): exclusion CONFIRMED — 20/20 sample off Google, 15/15 real retained, 0 still-on thru 36k
Read-only verification of the completed surgical exclusion (apply log: 57,744 unpublished, 0 failed). Live spot-check: 20/20 formerly-$4.25 products now publishedOnPublication(Google) =false; 15/15 real-priced (>$4.25) STILL on Google (good listings retained — surgical goal met, no over-exclusion). Catalog-wide recount showed 0 $4.25-still-on through ~36k active before a transient non-JSON Shopify response crashed the unhardened loop (robustness gap, not a data issue). $4.25-to-Google suspension risk neutralized while keeping the ~12.6k good products on Google.
b9c390f · 2026-06-16 · no-image scan (c54): 50 of 74,441 ACTIVE have no image (0.07%) — catalog image presence 99.93%
Read-only full-catalog sweep (closes c26 gap: that was repped-only via metafields). Verified live: 2 no-image samples genuinely 0 images (admin + storefront); control returns 1 (query valid, not a false-zero). 50 no-image, top vendors Anna French 23, Versace 9, Phillipe Romano 4, LA Walls 4. A no-image PDP is dead-on-arrival + a Google feed disqualifier. Small concrete list; fix gated (source/attach image or de-list).
f488a4e · 2026-06-16 · fence-strip APPLY (c53): 60/60 code-fence leaks stripped (Steve-authorized)
Applied the officer-CONFIRMED fix: 60 ACTIVE products (Kravet 49/Scalamandre 8/ Graduate 2/Thibaut 1) had a leaked leading markdown code-fence in body_html. Per product: re-fetched fresh, re-ran guards (leading-fence present, unwrap changes it, non-empty + no banned word), set descriptionHtml=cleaned + seo.description=regen. 60 stripped, 0 skipped, 0 failed. Rollback (60 old bodies) saved to yolo-queue/fence-strip-ROLLBACK-2026-06-16.json. Verified live: herb-garden + all-over-leopard now fence-free w/ clean body + seo. $0 (Shopify Admin API).
6c53615 · 2026-06-16 · fence-strip dry-run: tighten to leading-fence-only per officer REVISE (61->60, drop stelios no-op)
vp-dw-marketing sign-off caught 1 false-positive (stelios-grey-grasscloth: normal Fire-Rating body, stray mid-body marker, no leading fence -> a no-op write violating gate-A). Tightened matcher to require the body to START with a fence. Re-run: 60/60, stelios excluded, banned-word 0, meta-regen 60. Vendors Kravet 49/Scalamandre 8/ Graduate 2/Thibaut 1. Officer verdict now CONFIRMED-READY-TO-APPLY, Steve-gated.
1dc6ff6 · 2026-06-16 · fence-strip DRY-RUN (c52): 61 code-fence leaks, review-ready, all gates pass (read-only)
Staged the c51-officer-approved fix as read-only dry-run. Self-corrected mid-cycle: v1 only matched complete fenced blocks (1/61); real leaks are UNCLOSED leading fences, patched unwrap to strip leading/trailing fence markers -> v2 strips all 61 cleanly. Gates: 0 banned-word Wallpaper after strip; all 61 need derived meta/OG regen (null seo.description); 3 extra from c51 64 were bold false-positives, excluded. Vendors Kravet 49 / Scalamandre 8. Worklist before/after x61 in yolo-queue. NO write, apply Steve-gated.
b5a6309 · 2026-06-16 · body-quality scan (c51): 187 empty + 64 code-fence leaks; 14,772 'truncated' = FALSE POSITIVE
Read-only scan of 74,541 ACTIVE bodies, segmented by defect. Real cohorts: empty/
near-empty 187 (0.3%); code-fence/markdown 64 — the ```html-wrapper leaks confirmed
genuine live (herb-garden, all-over-leopard show raw markdown on the PDP, same class
as the Versace preamble); preamble-only leftover 2 (Versace fix mop-up); raw-AI
artifact 1. The 'truncated' heuristic flagged 14,772 but spot-checks prove it's a
FALSE POSITIVE — minimal name/spec bodies that just lack terminal punctuation
('Grasscloth Basketweave #GRS-3012; Foreground: Brown... Sold per yard'), NOT
truncations. Discarded. Net real body defects ~254.
9424442 · 2026-06-16 · dup-sku scan (c50): genuine dup-SKU ~0 (all colorways); found 529 placeholder/junk SKUs
Read-only. 2-layer skeptical decode: 2,539 shared-SKU groups raw, but the top are maker-name placeholders (SANCAR=Versace, the known false positive) and the digit-SKU shares are colorways of one pattern sharing the vendor's pattern-level SKU (Scalamandre WP####, Nina Campbell NCW####). Genuine two-different-products-same-real-SKU defects ~0. REAL finding: 529 ACTIVE products carry a placeholder/junk SKU (no-digit, shared): SANCAR 179 / TRUE 91 (boolean string leaked into SKU!) / YORK 57 / OSBORNE 56 / INNOVATIONS 52 / DONGHIA 16 + descriptive strings. Breaks SKU lookup/dedup + junk MPN to Google. Fix gated.
91e962c · 2026-06-16 · orphan-products scan (c49): PASS — 0 un-navigable products of 74,541 ACTIVE
Read-only sweep using authoritative product->collections membership (not stale feed counts). Every ACTIVE product belongs to >=1 collection (usually 10+, via the 'exclusive' + tag-based smart collections). Verified the query returns real membership (spot-checked: products show glitter-wallpaper/modern-originals/ exclusive/innovative). Product-level navigability healthy; negative result rules out an un-browsable-product defect.
6c874fe · 2026-06-16 · dup-image scan (c47): clean — no wrong-image errors; all 27 shared-image groups are pattern variants
Read-only. ACTIVE products sharing exact primary image_url: 27 groups / 56 products. Two-step skeptical decode caught the false positives: 20 are colorways (Babington Check Indigo/Red/Green/Teal share Mulberry's one pattern photo), 7 are substrate variants (Simpatico Paper/Print, Sporting Life/Velvet, Arioso Paper/Print). In every case the shared photo is the CORRECT pattern across that pattern's color/material variants (vendor one-photo limitation) — NOT a wrong-image copy-paste defect. Clean PASS. First isolated-worktree commit.
074660a · 2026-06-16 · dup-title scan (c46): 18,577 ACTIVE products share non-unique titles; 84% generic/template
Read-only. 3,285 ACTIVE titles shared across >1 handle (18,577 products); ~84% (2,771) are GENERIC/template titles (vendor+material only — Versace Wallcovering x99, Roberto Cavalli x149, Coordonne Durable Vinyl x366) — verified distinct real products (distinct SKU handles) never differentiated by pattern+color. SEO cannibalization + poor shopper differentiation. NOT accidental dup products (fleet-dedup handled those). Fix = title-enrichment from existing pattern/color data; GATED (title rewrite = customer-facing at scale, per banned-word rule).
5d9d562 · 2026-06-16 · live-price canary HARDENED (c45): retry/backoff + N=250 → UNKNOWN 20%→0.4%, number corrected
Hardened the c38 pilot into a promotable standing canary. retry/backoff cut UNKNOWN from 30/150 (20%) to 1/245 (0.4%). Tighter+corrected number: SAMPLE_ONLY 43.7% / HAS_REAL 56.3% / NO_PRICE 0% (c38's noisy 59/40 was inflated by its high UNKNOWN). Writes data/latest.json (c34 heartbeat shape); verdict PASS (FAIL if NO_PRICE spikes — a blank-price regression the broken mirror can't catch).
ac592b1 · 2026-06-16 · broken-image scan (c44): PASS — 0% broken on 117-sample (image loadability healthy)
Read-only live products.json + CDN HEAD with retry/backoff. Prior cycles checked image PRESENCE; this checks LOADABILITY. 120 sampled, 117 decided: OK=117, BROKEN=0, NO_IMAGE=0, PDP_404=3 (known mirror-status lag, c23). Broken rate 0% (95% CI <~3% by rule-of-three). Negative result — rules out a broken-image problem. Shippable as a standing canary via the c34 harness.
b10bbb7 · 2026-06-16 · dark-vendor check (c43): 4 vendors fully DARK (not mis-collected) — 1,943 products
Read-only. c42's all-empty-collection vendors resolved: Colefax&Fowler (361), Carlisle & Co. Walls (441), 1838 Wallcoverings (467 DRAFT+14 arch), Paul Montgomery (656) = 1,943 products. All have empty live collections + sample PDPs 404 live + mirror 100% archived/draft → CATALOG-DARK, not mis-collected. 1838 is DRAFT (staged-never-launched, likeliest reactivation candidate); others archived. Reactivation gated + needs cost-enrichment (c36: 1.4% archived cost coverage).
4aeca4e · 2026-06-16 · collection merge+301 map (c42): 28 empties->twin, 15 no-twin (some whole-vendor-empty)
Read-only. Turns c41's 43 empties into a merge proposal. 28 have a populated twin (notably 18 phillipe-romano-* sub-collections -> phillipe-romano-1; clean ones china-seas-fabrics->china-seas, ralph-lauren-fabrics->ralph-lauren, gold-wallpaper ->gold-wallcoverings). ~6 twins are generic/cross-category (paul-montgomery-murals ->murals, kravet-contract-1->kravet, york->brewster-york) = VERIFY before 301. 15 no-twin: 3 leaks/gone (wallquest, nicolette-mayer x2, stacy-garcia) + a deeper signal — Colefax&Fowler, Carlisle, 1838, Paul-Montgomery have ALL collections empty (products dark/unpublished or mis-collected). All merges GATED + per-pair verify.
d32d8a1 · 2026-06-16 · orphan-collection LIVE re-scan (c41): TRUE empty count = 43 (c39's 4 was a feed-stale undercount)
Read-only, retry/backoff. c40 proved collections.json products_count is stale, so c39 undercounted empties. Live per-collection products.json: 43 EMPTY (0 live), 27 near(<4), 507 ok(4+), 1 unknown of 578. Suspected products.json was a Boost false-zero, but cross-checked the authoritative Boost PFS API (collection_scope by id) — it ALSO returns 0 for samples, and 507/578 populate fine via the same probe, so the 43 are REAL empties (stale feed count had masked them). Many are duplicate- handle pairs (carlisle-co/carlisle-and-company, colefax-fowler/colefax-and-fowler, nicolette-mayer x2). 3 leak collections persist (wallquest + nicolette-mayer x2).
c97eb92 · 2026-06-16 · collection-leak sweep (c40): 3 confirmed collection-level leaks + Brewster false-positive + stale-count catch
Read-only live sweep of 578 collections vs private-label denylist. 4 raw hits; after live verification: CONFIRMED leaks = wallquest-wallcoverings (0 live), nicolette-mayer + nicolette-mayer-designs (0 live but public, must-stay-off names). FALSE POSITIVE = brewster-york (1,010 products, but vendor=Daisy Bennett, a legit brand under the Brewster&York distributor; 'brewster' denylist term too broad). Methodology catch: collections.json products_count is STALE (NM showed 214, live=0) so c39's orphan scan undercounted empties — empty detection must use live products.json. NM products correctly 0-live (no reactivation regression); leak is collection-name residue. Fixes gated.
fc12f52 · 2026-06-16 · orphan-collection scan (c39): 4 empty live collections + a WallQuest leak
Read-only live /collections.json. 578 collections; 4 EMPTY (0 products, all HTTP 200 = dead nav): gold-wallpaper, phillipe-romano-all-wallcoverings, stacy-garcia, wallquest-wallcoverings. wallquest-wallcoverings is ALSO a private-label LEAK (WallQuest must never be customer-facing → Malibu) — empty AND leaking, top priority. 10 near-empty (<3). Fixes (hide/merge/unpublish) are gated prod writes.
3acda5c · 2026-06-16 · live-price pilot (c38): storefront crawl — true displayed-price, independent of broken mirror
Read-only GETs of /products/<handle>.json on 150 random ACTIVE handles (117 decided). Confirms c37: NO_PRICE (blank/$0) is ~0.9%, NOT the mirror's 70% (that was an artifact). Customer-facing picture: 59% display ONLY the $4.25 sample, 40% show a real roll >$4.25 — sizes the live impact of the sample-split remodel from the shopper's view (GMC measured feed-side only). 30/150 UNKNOWN = needs retry/ backoff hardening before standing-canary promotion. Warranted as a live-price canary (the only honest measure since the mirror price col is unreliable).
ccfaa8a · 2026-06-16 · null-price live-check (c37): mirror price column unreliable; no blank/$0 epidemic
Read-only. ACTIVE shows 41,987/60,075 (70%) null price in the Mac2 mirror, but a live storefront cross-check proves those products DO have variant prices ($4.25 sample, +real roll where applicable). The mirror price column is only ~30% populated (split-brain — not in the replicated set), so it cannot measure live mispricing and NO DB-side price canary may trust it. The real live issue is the already-known $4.25-sample-as-displayed-price (GMC, 60,455), not a distinct null/$0 mode. Negative result + instrument caveat.
cb534c8 · 2026-06-16 · dark-inventory scan (c36): only 1,062 sellable-ready archived; cost is the limiter
Read-only. Of 85,993 archived/draft, only 1,062 are fully sellable-ready (imaged+real-priced>4.25+costed) — because cost coverage on archived is just 1.4% (1,221 rows) and 79% have null/zero price. So the 82k archived CANNOT be bulk-reactivated without cost re-enrichment. Split: 916 non-April + 146 April. Top vendors Brunschwig 257/Jeffrey Stevens 249/Lee Jofa 224/Thibaut 119. EXCLUDE before reactivating: Phillip Jeffries 18 (display-excluded), Nicolette Mayer 6 (hard-archived stay-off), Jeffrey Stevens 249 (likely disco per c8). Mirror- approximate (c23 status lag).
f72b052 · 2026-06-16 · sitemap emergence sizing (c35): philipperomano fully generatable (8,229 URLs), novasuede Kamatera-only
Council #4. c27 found both flagship microsites lack a usable sitemap. Sizing: neither is a Shopify products.json store — both are custom Next/Express sites. philipperomano has local data/products.json (8,227 products) + a /p/:handle route, so a valid sitemap (8,229 URLs, xmllint-clean, 965KB, one file) is generatable from local data — PROOF written to yolo-queue, NOT deployed (route+deploy gated). novasuede has no local project on Mac2 (Kamatera-only); ~153 colorways, fix is Kamatera-side.
e3d61c1 · 2026-06-16 · canary promotion harness (c34): stage 5 new canaries as install-ready launchd packages
Inventory found this run's read-only canaries are loose one-offs (no plist) while 15 prior-gen com.steve.* canaries are wired. promote-canary.sh generates, per canary, a plist + heartbeat-writing run wrapper + dw-canary-watchdog manifest row + INSTALL.txt — staged only, never bootstrapped (Steve-gated). Staged 5 shippable: handle-freshness (daily), tls-expiry/robots-sitemap/metafield-coverage/alt-text (weekly). Heartbeat stamp convention matches the meta-watchdog (stamp>artifact). Correction: dw-backup-canary/restore-rehearsal/meta-watchdog ARE loaded (council claimed otherwise).
150b6a1 · 2026-06-16 · specs pattern-crosswalk probe (c33): PARTIAL feasibility + structural ceiling
Read-only follow-up to c32. Width/material are per-pattern, so pattern_name (100% populated both sides) can bridge the SKU-namespace gap WITHOUT exact-SKU. Coverage: Clarke 288/1392 (21%), Coordonné 451/1320 (34%) live products. Ceiling is structural — vendor-direct catalog is wallpaper-only (CCW), so it can't cover the 1,028 distributor-imported Clarke fabrics (F#). Path: pattern-crosswalk for the partial free win + distributor (Cowtan) re-scrape for the rest.
83eb6fa · 2026-06-16 · specs-reparse sizing (c32): the data exists but won't join — SKU-namespace mismatch
Read-only sizing of council idea #1. Per-vendor *_catalog tables carry ~100% width (+ vendor-varying material), but the live Shopify products were imported via distributor channels (Cowtan F#/W#.CAC.0) while the catalog was scraped vendor-direct (Clarke CCW####) — naive mfr_sku join matches ~0 (Clarke 0, Coordonne 0, LeeJofa 1, Brunschwig 4; Gaston 55, Osborne 50). Width isn't constant either (Coordonne bimodal 19.7in papers vs 157in murals). So the specs gap is a SKU-crosswalk/channel-reconciliation problem, NOT a cheap DB push.
c79083c · 2026-06-16 · enrichment-board: local synthesis of c26/c28/c29/GMC into one ranked vendor×axis board
Cycle-30 (/bin/zsh, no new scan). Joins metafield-coverage (specs/images/color), alt-text-coverage, and GMC $4.25 worklist per repped vendor; ranks by total products-needing-work. Result: specs is the dominant gap (TOP fix for ~all repped vendors); Clarke & Clarke 3,573 leads, then Gaston Y Daniela/China Seas/ Coordonné/Lee Jofa/Brunschwig; Wolf Gordon is the lone alt-led vendor. Phillip Jeffries excluded from ranking (display-excluded by rule).
5c719ab · 2026-06-16 · schu roll-adds: complete all 81 (41 clean + 36 edge + 4 oddball); make edge script idempotent across cap-blocked partial runs
Edge bug: a prior cap-blocked run renamed Title->Size/Default Title->Sample but died before creating the Roll variant; created.json only records after a successful create, so re-runs found no 'Default Title' and skipped all 36. Fix: handle already-renamed (Size:Sample) state + skip(roll exists) guard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fabc295 · 2026-06-16 · alt-text coverage audit: repped-vendor image alt-text (read-only GraphQL)
Cycle-29 read-only canary; image-QUALITY companion to c26 presence (~100%). Per ACTIVE product: all-alt/some-alt/no-alt + image-level alt%. Result: weighted repped all-alt 77.6% (89.x% excluding display-excluded Phillip Jeffries, whose 2,470 no-alt are by-design). Real fixable gaps: Wolf Gordon, China Seas, Maya Romanoff, Graham & Brown, Elitis, Romo, Harlequin. Cross-finding: Clarke & Clarke 100% alt but 0% specs (c28) — enrichment axes independent.
d9c8874 · 2026-06-16 · metafield-coverage: harden specs check w/ global.width + pillow.* fallbacks (c28)
Accept width from custom.width/global.width/pillow.width_inches/pillow.dimensions and material from custom.material/global.Contents/pillow.face_content; track specs-strict (custom-only, c26) alongside to expose namespace artifacts. Result: Scalamandre 0%->98.1% (the lone artifact, removed from gap list); all 12 remaining repped gaps confirmed TRUE (specs==strict, fallbacks found nothing). Fixed a GraphQL PARSE_ERROR from a // comment inside the query string (GraphQL uses #).
30b9b80 · 2026-06-16 · robots/sitemap fleet canary: crawl-directive + sitemap health (read-only)
Cycle-27 read-only canary (uncovered SEO/indexing gap). Per core fleet host, GETs /robots.txt + /sitemap.xml: flags a Googlebot-effective Disallow:/ (UA precedence-aware), missing/invalid/empty/stale sitemaps, sitemap-not-in-robots. Result: NO site-wide block anywhere (good); 3 real FAILs (philipperomano 404, novasuede serves HTML-as-sitemap, raffia parked/broken), 7 no-lastmod WARNs. Hardened mid-cycle: blocksGooglebot() honors UA-group precedence + relative Sitemap: URLs resolved against base (killed 2 false positives before reporting).
acaeef7 · 2026-06-16 · metafield-coverage audit: repped-vendor specs/images/color coverage (read-only GraphQL)
Cycle-26 read-only canary. Scans ACTIVE Shopify products, counts per-vendor coverage of image (>=1/>=3), specs (custom.material+width), color-enrichment (custom.color_hex/color_details), pattern_name metafields; tags repped vendors from vendor_registry (active + non-private-label + discount_confirmed). Result: images 100% + color 100% (solved), specs 51.9% weighted = the real gap, 13 repped vendors <60%. Price coverage tracked separately via GMC scan.
3343eea · 2026-06-16 · harden 3 read-only canaries (DTD-A 3/3): dynamic-dated reports + best-effort CNCP alert on FAIL
- Fix hardcoded 2026-06-16 output filename → dynamic ${today} so a scheduled
run can't clobber a prior day's report or stamp a stale date.
- Wire a timeout-bounded, never-throws CNCP parking-lot alert on FAIL (these
canaries previously only console.log'd — a 3am FAIL was silently written to
a JSON nobody reads).
- queue-slo alert gated on !STALE && live-backup so the by-design Mac2 frozen-
mirror STALE doesn't cry-wolf every run.
Smoke-tested tls-expiry: PASS, 15 hosts, dynamic date confirmed.
0607790 · 2026-06-16 · Availability-drift canary: built, tested, found INVALID-as-is for DW (negative result)
DTD-voted (2/3). variant.available conflates DW's trade/memo-sample inquiry model (~97% of ACTIVE products are inquiry-only by design → available=false) with real stockouts — would cry wolf. Store confirmed UP (shop-wide /products.json 250/250 buyable). Script header marked INVALID-AS-BUILT, not wired. Real sub-signal: ~3-18% mirror→live handle 404 drift (data-quality). Honest negative result. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
30e9dc1 · 2026-06-16 · DRAFT reactivation staging plan (report-only, tiered, batched)
2,494 sellable DRAFTs (image+not-Nicolette+not-disco) → tiered T1/T2/T3, batched 1k/day, same pattern + stage-time gate as April plan. Malibu 1,632 + 1838 Walls 467 dominate. Sets inventory=2026 on both variants on activation. NO writes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
File tree
- .coll-audit.py
- .git.bak-1785779086
- .gitignore
- .yolo-loop-marker
- TK-10451-bucketB-feed-fix-scope.md
- artmura-site/.deploy.conf
- artmura-site/.gitignore
- artmura-site/README.md
- artmura-site/build-line.js
- artmura-site/build-romo-enrich.js
- artmura-site/clickthrough.js
- artmura-site/config/showroom-vendors.json
- artmura-site/create-collection.js
- artmura-site/deploy-landing.sh
- artmura-site/deploy-vendor.sh
- artmura-site/ecosystem.config.cjs
- artmura-site/extract-colors-cdn.py
- artmura-site/package-lock.json
- artmura-site/package.json
- artmura-site/public/index.html
- artmura-site/public/product.html
- artmura-site/public/styles.css
- artmura-site/romo-batch-create.py
- artmura-site/romo-canary-create.py
- artmura-site/romo-reprice-candidates.json
- artmura-site/romo-reprice.py
- artmura-site/server.js
- artmura-site/showroom.js
- artmura-site/site.config.js
- data/price-sheets/banned-word-rewrite-plan-2026-06-15.csv
- data/price-sheets/blocked-vendor-ledger-2026-06-15.md
- data/price-sheets/gdrive-costmine-2026-06-15.jsonl
- data/price-sheets/kravet-below-map-2026-06-15.csv
- data/price-sheets/schu-addroll-edge.csv
- data/price-sheets/schu-addroll-oddball.csv
- data/price-sheets/schu-addroll-targets.csv
- data/products.json
- digests/CONSOLIDATION-DIGEST-2026-06-18.md
- docs/boost-hue-sort-runbook.md
- ecosystem.config.js
- gate-integrity-audit.mjs
- gmc-425-count.js
- gmc-feed-exclude.js
- gmc-fentucci-exclude.js
- gmc-thibaut-dw-9-exclude.js
- package-lock.json
- package.json
- public/favicon.ico
- public/favicon.svg
- romo-audit.json
- romo-batch-created.jsonl
- romo-broken-variants.json
- romo-canary-created.jsonl
- romo-price-correction-applied.jsonl
- romo-price-correction.json
- scripts/activate-1838/activate-1838-showroom.mjs
- scripts/activate-1838/activate-1838.mjs
- scripts/activate-1838/last-run.json
- scripts/activate-1838/showroom-run.json
- scripts/ai-preamble-leak-sweep/FINDING.md
- scripts/ai-preamble-leak-sweep/ai-preamble-leak-sweep.mjs
- scripts/ai-preamble-leak-sweep/body-start-classifier.mjs
- scripts/ai-preamble-leak-sweep/broad-net-bound.mjs
- scripts/ai-preamble-leak-sweep/wallpaper-reconcile.mjs
- scripts/alt-text-coverage/alt-text-coverage-audit.mjs
- scripts/apply-1104-map.js
- scripts/april-restore-plan/build-april-restore-plan.mjs
- scripts/artmura-onboard/README.md
- scripts/artmura-onboard/apply-markup.js
- scripts/artmura-onboard/backfill_metafields.js
- scripts/artmura-onboard/data/artmura-colors.json
- scripts/artmura-onboard/data/artmura-store-handles.json
- scripts/artmura-onboard/data/artmura.json
- scripts/artmura-onboard/db_write.py
- scripts/artmura-onboard/extract_colors.py
- scripts/artmura-onboard/fill_specs.py
- scripts/artmura-onboard/go-live-artmura.js
- scripts/artmura-onboard/onboard.py
- scripts/artmura-onboard/push-artmura-live.js
- scripts/artmura-onboard/run-push-artmura.sh
- scripts/artmura-onboard/update-live-titles.js
- scripts/availability-drift/availability-drift-canary.mjs
- scripts/banned-word-rewrite-plan.js
- scripts/bannedword-body-leak/bannedword-body-leak.mjs
- scripts/bannedword-title-preview/bannedword-title-preview.mjs
- scripts/body-quality-scan/body-quality-scan.mjs
- scripts/brands-page/README.md
- scripts/brands-page/brands-map.json
- scripts/brands-page/build-brands.cjs
- scripts/brands-page/fetch-bgs.cjs
- scripts/brands-page/gen-wordmarks.cjs
- scripts/brands-page/page-79444574259-snapshot.json
- scripts/brands-page/page-brands-OLD-backup.html
- scripts/brands-page/page-brands-new.html
- scripts/brands-page/probed-logos.json
- scripts/brands-page/push-brands.cjs
- scripts/brands-page/room-final-clean.json
- scripts/brands-page/room-final.json
- scripts/broken-image-pilot/broken-image-pilot.mjs
- scripts/broken-image-scan/broken-image-scan.mjs
- scripts/buyability-audit/FINDING.md
- scripts/buyability-audit/buyability-audit.mjs
- scripts/buyability-audit/policy-mechanism-probe.mjs
- scripts/canary-board/canary-board.mjs
- scripts/canary-install/INSTALL-RUNBOOK.md
- scripts/canary-install/run-canary-with-cncp.sh
- scripts/canary-install/run-sitemap-integrity.sh
- scripts/canary-install/run-zero-dollar.sh
- scripts/canary-meta-watchdog/canary-meta-watchdog.js
- scripts/canary-meta-watchdog/com.steve.canary-meta-watchdog.plist
- scripts/canonical-robots-audit/canonical-robots-audit.mjs
- scripts/cf-dns-snapshot/cf-dns-snapshot.js
- scripts/cf-dns-snapshot/snapshots/cf-zones-latest.json
- scripts/cole-son-apply-map.js
- scripts/cole-son-apply-pattern-map.js
- scripts/cole-son-map-verify/cole-son-map-verify.mjs
- scripts/cole-son-price-audit.mjs
- scripts/cole-son-reconcile-pattern.js
- scripts/cole-son-reprice-2026.js
- scripts/collection-canonical-audit/collection-canonical-audit.mjs
- scripts/collection-leak-sweep/collection-leak-sweep.mjs
- scripts/collection-orphan-sweep/FINDING.md
- scripts/collection-orphan-sweep/collection-orphan-sweep.mjs
- scripts/collection-orphan-sweep/low-membership-probe.mjs
- scripts/color-seo/push-color-seo.cjs
- scripts/continue-masked-segmentation/FINDING.md
- scripts/continue-masked-segmentation/continue-masked-segmentation-v2.mjs
- scripts/continue-masked-segmentation/continue-masked-segmentation.mjs
- scripts/contract-scope-auditor/contract-scope-auditor.mjs
- scripts/dark-inventory/dark-inventory-scan.sh
- scripts/dark-vendor-check/dark-vendor-check.sh
- scripts/dedup-archive-all.js
- scripts/dedup-bulk-all.js
- scripts/dedup-verify-all.js
- scripts/draft-abnormal-decode/FINDING.md
- scripts/draft-abnormal-decode/draft-abnormal-decode.mjs
- scripts/draft-reactivation-plan/build-draft-reactivation-plan.mjs
- scripts/dup-image-scan/dup-image-scan.sh
- scripts/dup-sku-scan/dup-sku-scan.sh
- scripts/dup-title-scan/dup-title-scan.sh
- scripts/empty-collections/empty-collections-list-2026-06-17.json
- scripts/empty-collections/empty-collections.mjs
- scripts/enrichment-board/build-enrichment-board.mjs
- scripts/fence-strip/fence-strip-apply.mjs
- scripts/fence-strip/fence-strip-dryrun.mjs
- scripts/fentucci-basis/FINDING.md
- scripts/fix-schumacher-double-wallcovering.js
- scripts/fleet-dedup-handle.js
- scripts/gmc-feed-guard/data/latest.json
- scripts/gmc-feed-guard/export-leak-list.mjs
- scripts/gmc-feed-guard/gmc-feed-guard.mjs
- scripts/gmc-verify/gmc-verify.mjs
- scripts/google-feed/SCOPE.md
- scripts/google-feed/apply-unpublish.mjs
- scripts/google-feed/calibrate-price.mjs
- scripts/google-feed/feed-eligibility.mjs
- scripts/google-feed/prep-actions.mjs
- scripts/handle-freshness/handle-freshness-canary.mjs
- scripts/hreflang-locale-audit/hreflang-locale-audit.mjs
- scripts/image-alt-audit/image-alt-audit-rendered.mjs
- scripts/image-alt-audit/image-alt-audit.mjs
- scripts/image-integrity-sweep/FINDING.md
- scripts/image-integrity-sweep/image-integrity-sweep.mjs
- scripts/inverse-mislabel-disambig/FINDING.md
- scripts/inverse-mislabel-disambig/inverse-mislabel-disambig.mjs
- scripts/inverse-mislabel-disambig/showroom-negctrl.mjs
- scripts/inverse-mislabel-sweep/FINDING.md
- scripts/inverse-mislabel-sweep/inverse-mislabel-sweep.mjs
- scripts/jsonld-425-scan/jsonld-425-scan-2026-06-17.json
- scripts/jsonld-425-scan/jsonld-425-scan.mjs
- scripts/jsonld-audit/jsonld-audit-2026-06-17.json
- scripts/jsonld-audit/jsonld-audit.mjs
- scripts/kravet-2026-coverage-audit.mjs
- scripts/kravet-backfill-mfrsku.js
- scripts/kravet-cost/SUMMARY.md
- scripts/kravet-cost/currency-check.js
- scripts/kravet-cost/push-anomalies.mjs
- scripts/kravet-cost/push-map-prices.mjs
- scripts/kravet-cost/revert-map-push.mjs
- scripts/kravet-cost/run-parallel.sh
- scripts/kravet-dedup-archive.js
- scripts/kravet-dedup-bulk.js
- scripts/kravet-dedup-sweep.js
- scripts/kravet-dedup-verify.js
- scripts/kravet-disco-algolia-verify.js
- scripts/kravet-disco-archive.js
- scripts/kravet-disco-archived-2026-06-14.csv
- scripts/kravet-master-2026/add_roll_variants.mjs
- scripts/kravet-master-2026/build_csv.py
- scripts/kravet-master-2026/dryrun_roll_reprice.mjs
- scripts/kravet-master-2026/inputs/kravet_305_source.txt
- scripts/kravet-master-2026/inputs/kravet_roll_dryrun.csv
- scripts/kravet-master-2026/kravet_addprice_diff_2026-06-16.csv
- scripts/kravet-master-2026/kravet_roll_dryrun_2026-06-16.csv
- scripts/kravet-master-2026/load.sh
- scripts/kravet-master-2026/sync_authoritative_mac2_to_kamatera.sh
- scripts/kravet-offmap-paginated.js
- scripts/kravet-offmap-unitaware.js
- scripts/kravet-price-vs-map.js
- scripts/kravet-reprice-apply.js
- scripts/kravet-reprice-dryrun.js
- scripts/kravet-sibling-map-verify/kravet-sibling-map-verify.mjs
- scripts/kravet-true-coverage.js
- scripts/lib/shopify.mjs
- scripts/live-price-canary/data/latest.json
- scripts/live-price-canary/live-price-canary.mjs
- scripts/live-price-canary/live-price-pilot.mjs
- scripts/metafield-coverage/metafield-coverage-audit.mjs
- scripts/multivariant-zero-sweep/multivariant-zero-sweep.mjs
- scripts/nav-link-reachability/FINDING.md
- scripts/nav-link-reachability/PROBE-NOTES.md
- scripts/nav-link-reachability/navmenus-admin-probe.mjs
- scripts/no-image-scan/no-image-scan.mjs
- scripts/null-price-probe/null-price-livecheck.sh
- scripts/orphan-collections/build-merge-map.mjs
- scripts/orphan-collections/orphan-collection-livecount.mjs
- scripts/orphan-collections/orphan-collection-scan.mjs
- scripts/orphan-products/orphan-products-scan.mjs
- scripts/osborne-little-basis/FINDING.md
- scripts/osborne-little-basis/ol-basis-decode.mjs
- scripts/preflight/preflight-validate.js
- scripts/preflight/rules.json
- scripts/price-render-audit/price-render-audit.mjs
- scripts/price-sheets/RESUME-COUNTER-NOTE.md
- scripts/price-sheets/add-roll-variant-edge.mjs
- scripts/price-sheets/add-roll-variant-oddball.mjs
- scripts/price-sheets/add-roll-variant.mjs
- scripts/price-sheets/load-price-sheets.py
- scripts/price-sheets/push-schu-roll-prices.mjs
- scripts/price-sheets/resolve-staging-to-cost.sql
- scripts/price-sheets/resume-roll-adds.sh
- scripts/promote-canary.sh
- scripts/queue-slo-snapshot/queue-slo-snapshot.mjs
- scripts/redirect-health/redirect-health.mjs
- scripts/rl-zero-rootcause/rl-diag.mjs
- scripts/robots-sitemap/robots-sitemap-canary.mjs
- scripts/scraper-contract-test/scraper-contract-test.mjs
- scripts/sitemap-emergence/gen-philipperomano-sitemap.mjs
- scripts/sitemap-health/sitemap-health.mjs
- scripts/sitemap-integrity-canary/.gitignore
- scripts/sitemap-integrity-canary/baseline.json
- scripts/sitemap-integrity-canary/sitemap-integrity-canary.mjs
- scripts/sitemap-lastmod-freshness/sitemap-lastmod-freshness.mjs
- scripts/specs-crosswalk-probe/probe-pattern-crosswalk.sh
- scripts/specs-reparse-sizing/size-specs-reparse.sh
- scripts/staged-launchd/INSTALL-FLEET-2026-06-16.md
- scripts/staged-launchd/INSTALL.md
- scripts/staged-launchd/alt-text-coverage/INSTALL.txt
- scripts/staged-launchd/alt-text-coverage/com.steve.alt-text-coverage.plist
- scripts/staged-launchd/alt-text-coverage/manifest-row.json
- scripts/staged-launchd/alt-text-coverage/run-alt-text-coverage.sh
- scripts/staged-launchd/com.steve.backup-freshness.plist
- scripts/staged-launchd/com.steve.secrets-env-backup.plist
- scripts/staged-launchd/gmc-feed-guard/INSTALL.txt
- scripts/staged-launchd/gmc-feed-guard/com.steve.gmc-feed-guard.plist
- scripts/staged-launchd/gmc-feed-guard/manifest-row.json
- scripts/staged-launchd/gmc-feed-guard/run-gmc-feed-guard.sh
- scripts/staged-launchd/handle-freshness/INSTALL.txt
- scripts/staged-launchd/handle-freshness/com.steve.handle-freshness.plist
- scripts/staged-launchd/handle-freshness/manifest-row.json
- scripts/staged-launchd/handle-freshness/run-handle-freshness.sh
- scripts/staged-launchd/live-price-canary/INSTALL.txt
- scripts/staged-launchd/live-price-canary/com.steve.live-price-canary.plist
- scripts/staged-launchd/live-price-canary/manifest-row.json
- scripts/staged-launchd/live-price-canary/run-live-price-canary.sh
- scripts/staged-launchd/metafield-coverage/INSTALL.txt
- scripts/staged-launchd/metafield-coverage/com.steve.metafield-coverage.plist
- scripts/staged-launchd/metafield-coverage/manifest-row.json
- scripts/staged-launchd/metafield-coverage/run-metafield-coverage.sh
- scripts/staged-launchd/no-image-scan/INSTALL.txt
- scripts/staged-launchd/no-image-scan/com.steve.no-image-scan.plist
- scripts/staged-launchd/no-image-scan/manifest-row.json
- scripts/staged-launchd/no-image-scan/run-no-image-scan.sh
- scripts/staged-launchd/promote-canary.sh
- scripts/staged-launchd/robots-sitemap/INSTALL.txt
- scripts/staged-launchd/robots-sitemap/com.steve.robots-sitemap.plist
- scripts/staged-launchd/robots-sitemap/manifest-row.json
- scripts/staged-launchd/robots-sitemap/run-robots-sitemap.sh
- scripts/staged-launchd/tls-expiry/INSTALL.txt
- scripts/staged-launchd/tls-expiry/com.steve.tls-expiry.plist
- scripts/staged-launchd/tls-expiry/manifest-row.json
- scripts/staged-launchd/tls-expiry/run-tls-expiry.sh
- scripts/thibaut-disco-drift/thibaut-disco-drift.mjs
- scripts/tls-expiry/tls-expiry-canary.mjs
- scripts/trending-2026/README.md
- scripts/trending-2026/trending-tag-sync.cjs
- scripts/variant-price-integrity-synthesis/SYNTHESIS-and-canary-spec.md
- scripts/zero-dollar-orderable-canary/.gitignore
- scripts/zero-dollar-orderable-canary/ack-baseline.json
- scripts/zero-dollar-orderable-canary/zero-dollar-orderable-canary.mjs
- scripts/zero-roll-rootcause/era-33-diagnosis.mjs
- scripts/zero-sample-sweep/zero-sample-sweep-v2.mjs
- scripts/zero-sample-sweep/zero-sample-sweep.mjs
- server.js
- showroom-lines-scan.js
- showroom-lines-tag.js
- thibaut-mfr-fix/BACKLOG.md
- thibaut-mfr-fix/README.md
- thibaut-mfr-fix/TITLES-FOR-REVIEW.md
- thibaut-mfr-fix/push-thibaut-live.js
- thibaut-mfr-fix/run-push.sh
- thibaut-mfr-fix/strip-junk-tags.js
- thibaut-mfr-fix/title_scrub.py