{"slug":"dw-image-shrink","total":52,"limit":100,"offset":0,"since":null,"commits":[{"hash":"ad9f2ad","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":"bdffd8b","date":"2026-07-30 19:59:37 -0700","author":"Steve Abrams","subject":"chore: lint ✓ (0 fixes needed), v1.1.0 (video-shrink pipeline + verify scripts, session close)","body":""},{"hash":"2305bbf","date":"2026-07-30 19:45:12 -0700","author":"Steve Abrams","subject":"TK-10048 COMPLETE: ~33GB reclaimed (6893 imgs + 61 vids), 409-sweep + verification scripts, 0 blanked","body":""},{"hash":"0bbfc4d","date":"2026-07-30 15:49:19 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-30T15:49:17 (1 files) — verify-urlgap.js","body":""},{"hash":"8cd54cf","date":"2026-07-30 08:46:24 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-30T08:46:20 (2 files) — files-biggest.md files-inventory.jsonl","body":""},{"hash":"395095e","date":"2026-07-30 08:16:11 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-30T08:16:08 (2 files) — unused-files.jsonl unused-files.jsonl.bak-1785423391","body":""},{"hash":"bae9d65","date":"2026-07-30 07:45:48 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-30T07:45:45 (1 files) — videos-inventory.jsonl","body":""},{"hash":"95ce905","date":"2026-07-30 07:24:48 -0700","author":"Steve Abrams","subject":"TK-10048: add video shrink pipeline (enum/enqueue/worker) + retune image worker to 2400px/q85","body":""},{"hash":"e73a454","date":"2026-07-29 21:06:06 -0700","author":"steve","subject":"chore: untrack audit-log artifacts, version bump (session close)","body":""},{"hash":"1d0a68c","date":"2026-07-29 20:42:11 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T20:42:08 (1 files) — purge-deleted.jsonl","body":""},{"hash":"a60e5e9","date":"2026-07-29 20:12:00 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T20:11:57 (1 files) — purge-deleted.jsonl","body":""},{"hash":"36ecfad","date":"2026-07-29 19:41:50 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T19:41:47 (1 files) — purge-deleted.jsonl","body":""},{"hash":"0b9b7e6","date":"2026-07-29 19:11:40 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T19:11:37 (1 files) — purge-deleted.jsonl","body":""},{"hash":"befeb04","date":"2026-07-29 18:41:29 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T18:41:27 (1 files) — purge-deleted.jsonl","body":""},{"hash":"1acaff5","date":"2026-07-29 18:11:14 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T18:11:10 (1 files) — purge-deleted.jsonl","body":""},{"hash":"5144ffb","date":"2026-07-29 17:41:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T17:41:00 (1 files) — purge-deleted.jsonl","body":""},{"hash":"3f83df6","date":"2026-07-29 17:10:52 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T17:10:49 (1 files) — purge-deleted.jsonl","body":""},{"hash":"0792b6d","date":"2026-07-29 16:40:41 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T16:40:38 (1 files) — purge-deleted.jsonl","body":""},{"hash":"c624f44","date":"2026-07-29 16:27:21 -0700","author":"steve","subject":"Recovery complete: 73/79 Stout re-imaged+reactivated (170 active all-with-image, 6 draft)","body":""},{"hash":"3a95252","date":"2026-07-29 16:19:46 -0700","author":"steve","subject":"Cap CLEARED (GC swept ~8h); add Stout re-attach recovery","body":""},{"hash":"23d06c0","date":"2026-07-29 16:10:30 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T16:10:27 (1 files) — purge-deleted.jsonl","body":""},{"hash":"c621267","date":"2026-07-29 15:40:19 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T15:40:16 (1 files) — purge-deleted.jsonl","body":""},{"hash":"67241d9","date":"2026-07-29 15:10:08 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T15:10:05 (1 files) — purge-deleted.jsonl","body":""},{"hash":"7742d9e","date":"2026-07-29 14:39:58 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T14:39:56 (1 files) — purge-deleted.jsonl","body":""},{"hash":"1cef876","date":"2026-07-29 14:09:48 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T14:09:46 (1 files) — purge-deleted.jsonl","body":""},{"hash":"7cde859","date":"2026-07-29 13:39:38 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T13:39:36 (1 files) — purge-deleted.jsonl","body":""},{"hash":"a1f9554","date":"2026-07-29 13:09:16 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T13:09:06 (1 files) — purge-deleted.jsonl","body":""},{"hash":"53d0813","date":"2026-07-29 12:38:58 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T12:38:56 (1 files) — purge-deleted.jsonl","body":""},{"hash":"4ff48f1","date":"2026-07-29 12:08:48 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T12:08:45 (1 files) — purge-deleted.jsonl","body":""},{"hash":"ef1c38b","date":"2026-07-29 11:38:37 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T11:38:34 (1 files) — purge-deleted.jsonl","body":""},{"hash":"cffc6a9","date":"2026-07-29 11:08:24 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T11:08:21 (1 files) — purge-deleted.jsonl","body":""},{"hash":"e1de5db","date":"2026-07-29 10:38:12 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T10:38:10 (1 files) — purge-deleted.jsonl","body":""},{"hash":"e7bc3b7","date":"2026-07-29 10:21:51 -0700","author":"steve","subject":"Unused set final: 386,736 files/211GB (used_in:none, 99% match orphan analysis); draft approval memo","body":""},{"hash":"ee456ca","date":"2026-07-29 10:08:35 -0700","author":"steve","subject":"Contrarian FIX-FIRST → pivot to Shopify-authoritative used_in:none unused-file set","body":""},{"hash":"edfd874","date":"2026-07-29 10:08:01 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T10:07:58 (7 files) — orphan-diff.js purge-deleted.jsonl enum-metaobject-refs.js gated-imageless-all.jsonl orphan-summary.md","body":""},{"hash":"2e7297e","date":"2026-07-29 10:02:59 -0700","author":"steve","subject":"Store-wide gate: draft any active product with no photo (reversible, logged)","body":""},{"hash":"ae8e73c","date":"2026-07-29 09:37:49 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T09:37:47 (3 files) — purge-deleted.jsonl attached-gids-rest.txt referenced-urls-extra.txt","body":""},{"hash":"bbe23f4","date":"2026-07-29 09:32:53 -0700","author":"steve","subject":"Safety: union REST+GraphQL attached sets so no live product image is mis-orphaned","body":""},{"hash":"53a8114","date":"2026-07-29 09:07:39 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T09:07:36 (2 files) — attached-gids.txt purge-deleted.jsonl","body":""},{"hash":"39c81c8","date":"2026-07-29 08:59:38 -0700","author":"steve","subject":"Complete orphan pipeline: content-refs scan + orphan-diff + gated fileDelete (content token)","body":""},{"hash":"00cae9b","date":"2026-07-29 08:57:39 -0700","author":"steve","subject":"Found cap=Files 495GB (295GB orphaned images); content token has write_files; build orphan-id pipeline","body":""},{"hash":"186a7f3","date":"2026-07-29 08:37:28 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T08:37:25 (3 files) — purge-deleted.jsonl files-audit.js files-inventory.jsonl","body":""},{"hash":"cfb51a7","date":"2026-07-29 08:24:27 -0700","author":"steve","subject":"Add cap-watcher: polls storage gate, notifies on cap-clear to trigger recovery cascade","body":""},{"hash":"d84e955","date":"2026-07-29 08:22:55 -0700","author":"steve","subject":"Expand purge to active spin-GIFs (cat C) with only-image orphan guard (5115 safe, 22 protected)","body":""},{"hash":"dc59771","date":"2026-07-29 08:15:20 -0700","author":"steve","subject":"Add safe-order compression worker (upload-first, delete-after; no imageless window)","body":""},{"hash":"d79e916","date":"2026-07-29 08:09:05 -0700","author":"steve","subject":"Full archived purge running (A+B, Steve-approved ~52GB); enum complete 315198 images","body":""},{"hash":"f3dc93b","date":"2026-07-29 08:07:17 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T08:07:14 (2 files) — purge-deleted.jsonl purge-execute.js","body":""},{"hash":"f84c7bc","date":"2026-07-29 07:53:49 -0700","author":"steve","subject":"Pivot to purge-first strategy: add gated purge-candidates analyzer (archived imgs + spin-GIFs)","body":""},{"hash":"d25c69d","date":"2026-07-29 07:49:15 -0700","author":"steve","subject":"HALT: delete-first fails at cap (async GC); hold 197 rows; add auto-restore for 3 imageless products","body":""},{"hash":"ef8a15e","date":"2026-07-29 07:44:19 -0700","author":"steve","subject":"Add reaper + phase4 verify; encoder validated (3290px 1.2MB→2048px 533KB)","body":""},{"hash":"c9958b6","date":"2026-07-29 07:42:14 -0700","author":"steve","subject":"Image-shrink campaign scaffold: enumerate + measure + encoder + ledger + worker","body":""},{"hash":"d2f7cab","date":"2026-07-29 07:37:04 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-29T07:37:00 (2 files) — .gitignore enumerate.js","body":""}]}