{"slug":"dw-material-filter","total":4,"limit":100,"offset":0,"since":null,"commits":[{"hash":"b4e9e00","date":"2026-09-10 17:52:29 -0700","author":"Steve Abrams","subject":"governance(TK-11370): make live-by-default Shopify writers dry-run by default","body":"Flip `DRY = argv.includes('--dry')` -> `DRY = !argv.includes('--apply')` so a\nzero-argument run no longer fires customer-facing Shopify writes.\n\nBackward compatible: `--dry` still means dry; `--apply` now required to write.\nOnly zero-arg invocations change behaviour, and every candidate was checked\nagainst its launchd/cron/pm2/wrapper invocation sites first (4 scripts that a\ncadence job runs flagless were EXCLUDED so this cannot silently disable them).\n\nVerified: node --check/py_compile 87/87 with a positive control proving the\nchecker rejects an injected fault; argv truth-table negative test 5/5.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01L53y4oP2itY3qeJ8WQgMzc"},{"hash":"5fc4e0d","date":"2026-07-16 17:11:03 -0700","author":"Steve","subject":"chore: lint (token guard), refactor (tighten glass-bead regex), v1.0.0 (session close)","body":""},{"hash":"33c1a1f","date":"2026-07-16 12:06:41 -0700","author":"Steve","subject":"material writer: metafieldsSet to custom.material_category (non-destructive, GID-aware); purple pilot 548 ok","body":""},{"hash":"6d0d87c","date":"2026-07-16 12:02:58 -0700","author":"Steve","subject":"material classifier: derive custom.material_category from tags/title (45,284 active, 22 materials)","body":""}]}