{"slug":"dw-daily-catchup-20260909","total":36,"limit":100,"offset":0,"since":null,"commits":[{"hash":"5fbea1e","date":"2026-09-09 12:31:05 -0700","author":"Steve Abrams","subject":"Finalize catch-up proof after approved channel cleanup","body":""},{"hash":"c3c3dd8","date":"2026-09-09 12:30:33 -0700","author":"Steve Abrams","subject":"Remove approved Google assignments and verify channel cleanup","body":""},{"hash":"aa2f88d","date":"2026-09-09 12:25:09 -0700","author":"Steve Abrams","subject":"Verify storefront catch-up, repair missed publication and retain Google exception review","body":""},{"hash":"8f77ddc","date":"2026-09-09 12:17:07 -0700","author":"Steve Abrams","subject":"Record catch-up audit exceptions before publication repair","body":""},{"hash":"7ec14eb","date":"2026-09-09 11:30:25 -0700","author":"Steve Abrams","subject":"Bound catch-up retries to the 462 verified remaining candidates","body":""},{"hash":"5e650c1","date":"2026-09-09 11:29:27 -0700","author":"Steve Abrams","subject":"Add dated daily activation catch-up while retaining the 500 cap","body":""},{"hash":"ea60cf7","date":"2026-09-09 11:15:52 -0700","author":"Steve Abrams","subject":"Keep released runtime worker locks out of repository snapshots","body":""},{"hash":"7396a48","date":"2026-09-09 11:15:15 -0700","author":"Steve Abrams","subject":"Verify full Gemini-free batch and shared hourly activation limit","body":""},{"hash":"c3b8011","date":"2026-09-09 11:10:39 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-09T11:09:48 (1 data files) — .drain.lock/TK-11321-owner.json","body":""},{"hash":"b03419a","date":"2026-09-09 11:09:38 -0700","author":"Steve Abrams","subject":"Apply Steve-authorized Gemini skip and verify first live product","body":""},{"hash":"f9e5125","date":"2026-09-09 10:34:41 -0700","author":"Steve Abrams","subject":"Record successful scheduled activation and remaining image funding block","body":""},{"hash":"c88ff69","date":"2026-09-09 10:20:13 -0700","author":"Steve Abrams","subject":"Restore draft readiness checks and verify live activation canary","body":""},{"hash":"37bb28a","date":"2026-09-03 12:07:07 -0700","author":"steve","subject":"TK-11186 Step D prep: rotation-activator skips showroom vendors (no activate/New Arrival tag/browse publish)","body":""},{"hash":"99013ea","date":"2026-09-01 08:02:16 -0700","author":"Steve Abrams","subject":"feat(golive-gate): mfr_sku provenance gate blocks blank/fabricated codes at DRAFT->ACTIVE","body":"Adds lib/mfr-gate.js (pure, tested) + lib/mfr-gate-resolve.js (dw_unified I/O),\nwired into rotate-activate.js / mdc-activate.js / cmo-activate.js before the flip.\nBlocks: blank/null/unknown mfr, cross-vendor reused counters, and fabricated\n<base>+<seq> runs (Carnegie Grain 6300->63001.. via placeholder 'Color N' staging).\nBlocked drafts tag Needs-MfrSKU + hold; by-colour lines (Novasuede) exempt. TK-11063.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"d9e84e1","date":"2026-08-31 12:42:22 -0700","author":"Steve","subject":"rotation-activator: block $4.25 sample-leak price from passing the activation gate (TK-10456)","body":"The 5-field gate required a sellable variant with price>0, but the universal\n$4.25 memo-sample price is >0, so any draft whose only sellable roll was stuck\nat $4.25 passed the gate and the rotation flipped it DRAFT->ACTIVE — re-leaking\nreverted discontinued/no-price products (5 Thibaut murals + 6 Chloe re-activated\nat $4.25 hours after being reverted). Now a sellable variant priced at exactly\nthe sample-leak $4.25 no longer counts as a real price; a real price on any\nsellable variant still passes. Fail-safe: can only block an activation.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"c4f1747","date":"2026-08-28 21:40:54 -0700","author":"Steve Abrams","subject":"Fail closed on malformed activation fields","body":""},{"hash":"ee136fc","date":"2026-08-28 21:37:35 -0700","author":"Steve Abrams","subject":"Unify pre-activation five-field checks","body":""},{"hash":"3b23d46","date":"2026-08-11 18:50:20 -0700","author":"steve@designerwallcoverings.com","subject":"chore: fail-closed activation guard in drain.sh (session close)","body":""},{"hash":"6074d75","date":"2026-08-11 13:45:39 -0700","author":"steve@designerwallcoverings.com","subject":"rotation drain: pre-flight re-intro guard check — abort activation tick on drift (TK-10474)","body":""},{"hash":"382423f","date":"2026-08-11 13:39:51 -0700","author":"steve@designerwallcoverings.com","subject":"collapse rotation-order.js to single source: symlink activator copy → canonical calendar copy (kills the two-drifting-copies footgun)","body":""},{"hash":"81ca301","date":"2026-08-10 22:13:25 -0700","author":"Steve","subject":"TK-10446 Tier-1: live-verify (892 orphans/48 have-roll/3 inactive) + gated revert script (dry-run default, re-checks live before each revert)","body":""},{"hash":"7f4f53f","date":"2026-08-10 21:36:14 -0700","author":"Steve","subject":"Save TK-10446 Tier-1 cleanup id list (943 rotation-published last-7d)","body":""},{"hash":"0117f7a","date":"2026-08-10 21:22:34 -0700","author":"Steve","subject":"Exclude samples, Gracie/bespoke vendors, and re-introductions from activation queue (TK-10446)","body":""},{"hash":"6ec5f49","date":"2026-07-26 20:21:41 -0700","author":"Steve","subject":"chore: refactor (summary label reflects COMMIT vs DRY mode), session close","body":""},{"hash":"04ef58e","date":"2026-07-26 20:14:52 -0700","author":"Steve","subject":"Add mdc-activate.js: private-label MDC→Phillipe Romano activator (mdc_catalog PID-scoped, settlement+5-field gate, ex-Google, MDC-coinage leak guard, Dublin-Vital hold)","body":""},{"hash":"f8d9655","date":"2026-07-25 12:36:20 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-25T12:36:15 (1 files) — cmo-activate.js","body":""},{"hash":"0b70591","date":"2026-07-23 12:30:51 -0700","author":"Steve Abrams","subject":"rotation gate: quote-only ('quotes' tag) lines exempt from no-sellable-variant too (Koroseal/Vahallan sample-only by design)","body":""},{"hash":"469d6e0","date":"2026-07-22 13:18:30 -0700","author":"Steve Abrams","subject":"leakGuard: add rigo / rigowall / rigo wallcovering (RIGO PL onboard 2026-07-22)","body":""},{"hash":"e06f84c","date":"2026-07-22 11:01:34 -0700","author":"Steve","subject":"drain: prune the activation-calendar cadence after each hourly run","body":"After flipping the per-slot batch DRAFT->ACTIVE, call the calendar's\nprune-active.js so already-live SKUs never linger in the projected cadence\nbetween nightly regens (Steve: cadence = staged items only)."},{"hash":"3466936","date":"2026-07-21 16:16:21 -0700","author":"steve@designerwallcoverings.com","subject":"chore: clarify _HARD_RE/_VENDOR_RE are [token,RegExp] pairs (session close)","body":""},{"hash":"3f4f5ae","date":"2026-07-21 15:41:52 -0700","author":"steve@designerwallcoverings.com","subject":"activator: word-boundary leak matching — fixes 'versa' false-positive on legit Versace brand","body":""},{"hash":"eb84eed","date":"2026-07-21 15:38:11 -0700","author":"steve@designerwallcoverings.com","subject":"activator: align leak guard to canonical dw-leak-scanner denylist (add york/brewster/lillian-august/momentum/versa; drop schumacher); cite source (DTD-B)","body":""},{"hash":"ade810f","date":"2026-07-21 15:28:10 -0700","author":"steve@designerwallcoverings.com","subject":"activator: private-label leak guard — never activate a product with a source name (Greenland/WallQuest/etc) in title or vendor","body":""},{"hash":"329e3f2","date":"2026-07-21 13:26:11 -0700","author":"Steve","subject":"Add per-product settlement gate to rotation activator (texture auto-pass + Gemini vision, fail-closed, dual-key)","body":""},{"hash":"9976a6b","date":"2026-07-21 13:02:12 -0700","author":"Steve","subject":"add hourly drip drain.sh + STAGED launchd plist (not loaded — bootstrap gated on Steve approval)","body":""},{"hash":"fca7d4c","date":"2026-07-21 12:56:54 -0700","author":"Steve","subject":"rotation activator: textures-first + vendor round-robin DRAFT->ACTIVE, all 15,863 drafts, live 5-field re-gate, own daily activation cap","body":""}]}