{"slug":"secrets-manager","total":110,"limit":100,"offset":0,"since":null,"commits":[{"hash":"9c94c8a","date":"2026-07-27 09:19:23 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-27T09:19:22 (2 files) — registry.json routes.json","body":""},{"hash":"9309659","date":"2026-07-26 16:14:27 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-26T16:14:26 (1 files) — registry.json","body":""},{"hash":"5907daf","date":"2026-07-23 08:59:47 -0700","author":"Steve Abrams","subject":"routes: GEMINI_API_KEY_WALLCO -> model-arena (image tool fallback backend)","body":""},{"hash":"6c945b4","date":"2026-07-23 08:49:10 -0700","author":"Steve Abrams","subject":"routes: ADOBE_CLIENT_ID/SECRET + FIGMA_TOKEN -> model-arena .env (design tools)","body":""},{"hash":"6c6d1f8","date":"2026-07-22 17:45:48 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T17:45:47 (1 files) — registry.json","body":""},{"hash":"4604d18","date":"2026-07-22 14:44:59 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T14:44:58 (2 files) — registry.json routes.json","body":""},{"hash":"367cf90","date":"2026-07-22 13:14:23 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T13:14:23 (4 files) — dw-scroll-debug.js dw-scroll-debug2.js dw-scroll-debug3.js dw-scroll-verify.js","body":""},{"hash":"2b76a66","date":"2026-07-22 10:35:58 -0700","author":"Steve Abrams","subject":"chore: refactor — rename GOOGLE→GOOGLE_YOUTUBE for clarity (session close, no behavior change)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"d27dd68","date":"2026-07-22 10:13:11 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T10:13:11 (2 files) — registry.json routes.json","body":""},{"hash":"aaa98bd","date":"2026-07-22 09:56:24 -0700","author":"Steve Abrams","subject":"Coordonné Cotswolds: activate 29 wallcoverings LIVE (ACTIVE + Online Store + New Arrival, Google excluded 0/29) per DTD verdict B; 8 murals held with Coco Dávez batch","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"ffff533","date":"2026-07-22 09:40:52 -0700","author":"Steve Abrams","subject":"Coordonné Cotswolds (Ybarra & Serret): create 37 settlement-OK SKUs as DRAFT on Shopify (0 channels), PG-first→Shopify, $4.25 sample + real $169/$113.62 sellable variant; 10 BLOCK held","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"e908b8f","date":"2026-07-22 09:29:22 -0700","author":"Steve Abrams","subject":"Coordonné Cotswolds (Coco Dávez): settlement post-gen-vision gate — 47 rows, 37 OK / 10 BLOCK (5 Royal-Oak + 5 Mallard-Duck, all Part-B bird catches; gemini-2.5-flash)","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"2930b39","date":"2026-07-22 09:14:15 -0700","author":"Steve Abrams","subject":"Coordonné Coco Dávez: create 16 held murals @ $113.62 (DTD Option C); collection now 54/54 by real membership","body":""},{"hash":"b45ce41","date":"2026-07-22 09:12:54 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T09:12:53 (5 files) — coordonne-collab-audit/coco-create-result.json _shopify_channel_fill.py coordonne-collab-audit/check-membership.js coordonne-collab-audit/coco-create-mural.json coordonne-collab-audit/create-coco-mural.js","body":""},{"hash":"4614978","date":"2026-07-22 08:42:07 -0700","author":"Steve Abrams","subject":"Coco Dávez canary: create 38 $169 wallcoverings PG-first→Shopify, publish to Online Store; 16 murals HELD per DTD-C (pricing differs $113.62)","body":""},{"hash":"bdb8510","date":"2026-07-22 08:23:51 -0700","author":"Steve Abrams","subject":"Coco Dávez: settlement post-gen-vision gate — 54/54 OK, 0 BLOCK (gemini-2.5-flash)","body":""},{"hash":"9908896","date":"2026-07-22 08:15:28 -0700","author":"Steve Abrams","subject":"Coordonné: tag 11 Artisan overmatch fabrics with Artisan By Bodo Sperlein (ADD-only)","body":""},{"hash":"9332543","date":"2026-07-22 08:00:49 -0700","author":"Steve Abrams","subject":"Coordonné Phase 1: ADD-only tag 52 Artisan + 48 CSM live DWDC products; both smart-collections populated (52/48)","body":""},{"hash":"d09d321","date":"2026-07-22 07:42:21 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-22T07:42:20 (1 files) — audits/","body":""},{"hash":"3d0b1df","date":"2026-07-21 18:09:05 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T18:09:04 (3 files) — hero-image-fallback.py hero-polish.py set-categories.py","body":""},{"hash":"e415f0e","date":"2026-07-21 17:38:50 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T17:38:50 (1 files) — deploy-faqs-bymaterial.py","body":""},{"hash":"1b7fdd1","date":"2026-07-21 17:08:42 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T17:08:42 (5 files) — deploy-collection-faqs.py greenland-cleanup-backups/dw-collection-hero-BACKUP-banner.liquid greenland-cleanup-backups/dw-collection-hero-BACKUP-v2pre.liquid halve-banner.py update-collection-aeo-v2.py","body":""},{"hash":"fc3b6fb","date":"2026-07-21 16:38:34 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T16:38:33 (3 files) — deploy-collection-aeo.py find-theme-token.sh greenland-cleanup-backups/dw-collection-hero-BACKUP-20260721-manual.liquid","body":""},{"hash":"1afa936","date":"2026-07-21 16:08:26 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T16:08:25 (1 files) — greenland-cleanup-backups/live-titles-backup-20260721-154549.tsv","body":""},{"hash":"e6f3f31","date":"2026-07-21 15:19:17 -0700","author":"Steve Abrams","subject":"Greenland leak cleanup: archive-duplicates script + mirror-orphan backup/plan","body":"143 live '| Greenland' products are stale duplicates of live canonical Phillipe\nRomano twins; DTD panel (5/5) ruled ARCHIVE not rename. Script archives them on\nthe live store + syncs mirror (Steve-gated, dry-run default). 66 mirror-only\norphan rows already deleted locally (reversible; backup TSV included).\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"48f095f","date":"2026-07-21 14:38:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T14:38:01 (3 files) — add-blog-images.py fix-pr-naturals-schema.py publish-pr-naturals-blog.py","body":""},{"hash":"95b77ef","date":"2026-07-21 14:07:55 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-21T14:07:54 (3 files) — alias-content-token.py find-content-token.sh publish-creatures-article.py","body":""},{"hash":"be72efe","date":"2026-07-20 13:32:25 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-20T13:32:24 (1 files) — registry.json","body":""},{"hash":"4bc9b1f","date":"2026-07-20 12:32:08 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-20T12:32:08 (2 files) — registry.json routes.json","body":""},{"hash":"2c94ffa","date":"2026-07-20 10:01:16 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-20T10:01:15 (2 files) — registry.json routes.json","body":""},{"hash":"2f5c548","date":"2026-07-17 11:46:26 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-17T11:46:26 (1 files) — registry.json","body":""},{"hash":"30d247e","date":"2026-07-17 11:24:47 -0700","author":"Steve Abrams","subject":"Add Threads (Meta) key routes → MCC .env","body":""},{"hash":"7183244","date":"2026-07-17 10:46:17 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-17T10:46:15 (2 files) — registry.json routes.json","body":""},{"hash":"30d2c8d","date":"2026-07-16 08:42:12 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-16T08:42:12 (1 files) — registry.json","body":""},{"hash":"77e1515","date":"2026-07-15 14:07:06 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-15T14:07:06 (1 files) — registry.json","body":""},{"hash":"6fddcb6","date":"2026-07-15 09:35:39 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-15T09:35:38 (1 files) — registry.json","body":""},{"hash":"53e2a80","date":"2026-07-14 13:28:14 -0700","author":"Steve Abrams","subject":"routes: pre-stage TikTok client key/secret fan-out to marketing-command-center (local + Kamatera live .env)","body":"Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"1e02273","date":"2026-07-14 10:00:25 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-14T10:00:24 (1 files) — registry.json","body":""},{"hash":"e0ef307","date":"2026-07-14 09:00:08 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-14T09:00:07 (1 files) — registry.json","body":""},{"hash":"aa8138c","date":"2026-07-14 07:59:52 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-14T07:59:52 (1 files) — registry.json","body":""},{"hash":"3718887","date":"2026-07-13 15:55:57 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-13T15:55:55 (2 files) — registry.json routes.json","body":""},{"hash":"54f0bcc","date":"2026-07-13 10:54:31 -0700","author":"Steve Abrams","subject":"routes: fan Meta/IG token to Norma instagram-agent .env (sync master+MCC+Norma+canary on one paste)","body":""},{"hash":"83d15ae","date":"2026-07-12 10:17:37 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-12T10:17:36 (2 files) — registry.json routes.json","body":""},{"hash":"becc8fb","date":"2026-07-10 11:07:58 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-10T11:07:57 (1 files) — registry.json","body":""},{"hash":"19c6f0c","date":"2026-07-10 00:12:55 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-10T00:12:54 (1 files) — registry.json","body":""},{"hash":"e8a1031","date":"2026-07-10 00:02:29 -0700","author":"Steve","subject":"routes: add YORKWALL_USER/PASS fan-out for brewster/york scraper","body":""},{"hash":"6a60280","date":"2026-07-09 23:42:49 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-09T23:42:48 (2 files) — registry.json routes.json","body":""},{"hash":"b8a2534","date":"2026-07-09 19:04:53 -0700","author":"steve","subject":"secrets: arm Low+Medium remote routes per Steve go + DTD-A (31 keys; GEORGE_AUTH kept manual)","body":""},{"hash":"fa26afa","date":"2026-07-09 18:55:38 -0700","author":"steve","subject":"secrets: fleet secrets→service audit → remote-routes.proposed.json (32 candidates, review-before-arm; live routes unchanged)","body":""},{"hash":"15d072c","date":"2026-07-09 18:31:52 -0700","author":"steve","subject":"secrets: register Browserbase key+project-id as remote routes → all-dw prod .env (rotation push-remote coverage)","body":""},{"hash":"2c78874","date":"2026-07-09 18:13:13 -0700","author":"steve","subject":"secrets: explicit remote-route push (push-remote.js) for CF token → Kamatera all-dw .env + pm2 reload; compare-first no-op; sync stays local-only (remote push is opt-in)","body":""},{"hash":"a8646ea","date":"2026-07-09 18:11:37 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-09T18:11:36 (3 files) — cli.js remote-routes.json scripts/push-remote.js","body":""},{"hash":"9c999a3","date":"2026-07-09 17:11:26 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-09T17:11:25 (1 files) — routes.json","body":""},{"hash":"08c4c57","date":"2026-07-08 15:06:24 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-08T15:06:23 (1 files) — registry.json","body":""},{"hash":"ab4778a","date":"2026-07-08 10:05:08 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-08T10:05:08 (1 files) — registry.json","body":""},{"hash":"77326d9","date":"2026-07-08 09:35:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-08T09:35:02 (1 files) — registry.json","body":""},{"hash":"ff4755c","date":"2026-07-07 10:30:01 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-07T10:30:01 (1 files) — registry.json","body":""},{"hash":"7e4f32e","date":"2026-07-07 09:59:54 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-07T09:59:53 (1 files) — registry.json","body":""},{"hash":"75dc44c","date":"2026-07-07 08:56:40 -0700","author":"Steve","subject":"browserbase: pre-stage one-shot prod dedicated-key swap helper (+gitignore stage secrets)","body":""},{"hash":"a9ae69e","date":"2026-07-07 08:56:35 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-07T08:56:34 (2 files) — registry.json stage/","body":""},{"hash":"627cc26","date":"2026-07-07 08:54:53 -0700","author":"Steve","subject":"browserbase: unhook Kamatera prod all-dw from shared key fan-out (dedicated prod key set out-of-band)","body":""},{"hash":"53a3c70","date":"2026-07-07 08:23:06 -0700","author":"Steve Abrams","subject":"routes: fan Browserbase creds to all-designerwallcoverings (local + Kamatera .env) for the live-scrape backend","body":""},{"hash":"b2ee568","date":"2026-07-03 08:08:16 -0700","author":"Steve","subject":"chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew)","body":""},{"hash":"43cd764","date":"2026-06-30 16:41:56 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-30T16:41:53 (1 files) — registry.json","body":""},{"hash":"fd2a12b","date":"2026-06-30 16:35:58 -0700","author":"Steve Abrams","subject":"routes: add SHOPIFY store domain / sample variant / storefront token for vendor microsites","body":""},{"hash":"430f55c","date":"2026-06-29 15:54:25 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-29T15:54:24 (1 files) — registry.json","body":""},{"hash":"6f50c9b","date":"2026-06-29 10:48:33 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-29T10:48:32 (2 files) — registry.json routes.json","body":""},{"hash":"307a2a6","date":"2026-06-27 01:06:38 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-27T01:06:38 (2 files) — registry.json routes.json","body":""},{"hash":"1679ff2","date":"2026-06-26 15:04:14 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-26T15:04:14 (2 files) — registry.json routes.json","body":""},{"hash":"bac2bac","date":"2026-06-26 11:45:26 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-26T11:45:25 (1 files) — registry.json","body":""},{"hash":"e6940f5","date":"2026-06-25 16:41:42 -0700","author":"Steve Abrams","subject":"Route SHOPIFY_THEME_TOKEN to DW-Agents env files (token scrubbed from source)","body":""},{"hash":"5355d14","date":"2026-06-24 14:37:30 -0700","author":"Steve","subject":"Pre-wire GOOGLE_OAUTH_CLIENT_ID/SECRET routes to dw-activation-calendar/.env","body":""},{"hash":"e93bf2c","date":"2026-06-24 13:27:12 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-24T13:27:11 (1 files) — registry.json","body":""},{"hash":"bc755b5","date":"2026-06-24 12:57:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-24T12:57:01 (1 files) — registry.json","body":""},{"hash":"ac2d3d8","date":"2026-06-23 17:36:21 -0700","author":"Steve","subject":"secrets: pre-stage GEMINI_API_KEY_DW_ENRICH route (empty) for leaked-key rotation — instant fan on Steve's new key","body":""},{"hash":"201ce58","date":"2026-06-23 12:21:35 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-23T12:21:34 (1 files) — registry.json","body":""},{"hash":"a8db056","date":"2026-06-23 09:20:42 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-23T09:20:41 (1 files) — registry.json","body":""},{"hash":"8aeb1ce","date":"2026-06-23 08:50:33 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-23T08:50:33 (1 files) — registry.json","body":""},{"hash":"55f7d51","date":"2026-06-22 21:17:54 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-22T21:17:54 (1 files) — registry.json","body":""},{"hash":"b269ff0","date":"2026-06-22 10:35:24 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-22T10:35:23 (1 files) — registry.json","body":""},{"hash":"bc23c75","date":"2026-06-21 20:01:45 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-21T20:01:45 (2 files) — registry.json routes.json","body":""},{"hash":"af4923b","date":"2026-06-21 19:01:27 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-21T19:01:26 (1 files) — CF-TOKEN-LEAK-ROTATION-BLOCKED-20260621.md","body":""},{"hash":"74dfa62","date":"2026-06-21 18:53:02 -0700","author":"Steve Abrams","subject":"auto-save: 2026-06-21T18:53:00 (7 files) — .gitignore registry.json registry.json.bak.20260507-122845 routes.json.bak-1779124119 routes.json.bak.20260505-fanout","body":""},{"hash":"7fe7f4e","date":"2026-06-21 09:03:49 -0700","author":"SteveStudio2","subject":"Reconcile ROTATION-CHECKLIST against 2026-06-21 read-only verification: dw_admin item #1 still genuinely OUTSTANDING (old pw live in 4 DSNs, canonical fan key unset); Shopify item #4 was STALE -> RESOLVED (token HTTP 200). DTD verdict A unanimous: compromised flag stays.","body":"Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"2297149","date":"2026-06-19 16:28:00 -0700","author":"Steve","subject":"secrets: add PG_DW_ADMIN_PASSWORD fan route (4 env_file dests) — unblocks dw_admin rotation fan","body":""},{"hash":"333c740","date":"2026-06-18 08:13:58 -0700","author":"SteveStudio2","subject":"Route SHOPIFY_DRAFT_TOKEN (full-access, write_draft_orders) → DW mural PDP checkout","body":""},{"hash":"da036c7","date":"2026-06-16 06:35:43 -0700","author":"SteveStudio2","subject":"Add automated encrypted off-box backup of secrets master (.env)","body":"Council #1 leftover: secrets-manager/.env had ZERO automated backup (one disk\nloss = total secret loss). backup-env.sh: AES256 GPG-symmetric versioned snapshots\nin ~/.secrets-backups (last 30), round-trip-verified each run (decrypt==source),\nmirrored off-box to iCloud Drive. Passphrase in login Keychain + one-time escrow\nhandoff. Daily launchd com.steve.secrets-env-backup. Both pass+fail paths proven."},{"hash":"f342dbe","date":"2026-06-15 23:43:13 -0700","author":"SteveStudio2","subject":"feat: backup-env.sh — encrypted off-box backup of canonical .env (ciphertext-only to gdrive); dry-run default, --apply gated","body":"Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"e1b76f7","date":"2026-06-11 10:26:43 -0700","author":"SteveStudio2","subject":"retire Desktop secret mirror (~/Desktop/site-factory.env) — DTD verdict A","body":"The Desktop is a high-exposure location (Time Machine / iCloud Desktop-sync /\nscreenshots) and chmod 600 gives no protection against code running as the user\n— the prompt-injection threat that prompted this. The mirror was pure redundancy\nwith the canonical master at ~/Projects/secrets-manager/.env. fanOut() no longer\nwrites the Desktop copy; sync verified it is not recreated. KAMATERA_ORIGIN_IP\nand ANTHROPIC_API_KEY (previously only on the Desktop) were ingested into master\nfirst so no value was lost.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"93d8391","date":"2026-06-09 17:45:59 -0700","author":"SteveStudio2","subject":"fan-out: honor per-destination d.key remap in env_file branch (was writing master key name, ignoring remap); route SHOPIFY_ADMIN_TOKEN -> ImportNewSkufromURL/.env.local as SHOPIFY_ADMIN_ACCESS_TOKEN","body":""},{"hash":"41aafea","date":"2026-06-09 14:11:11 -0700","author":"SteveStudio2","subject":"fix secrets fan: top-level routes invisible (22) + dw_admin never rewrote DATABASE_URL","body":"Root cause of the 2026-06-03 dw_admin rotation half-fire — three stacked bugs,\nall fixed in cli.js with ZERO routes.json churn:\n1. cli.js read only ROUTES.services[key], but ~22 routes (PG_DW_ADMIN_PASSWORD,\n   SHOPIFY_ORDERS_TOKEN, TWILIO_*, GOOGLE_DRIVE_*, ANTHROPIC_*…) live at routes.json\n   top-level -> invisible -> fanned 0 destinations. Fix: routeFor() top-level fallback.\n2. fanOut had no env_file branch (dw_admin dests' type) -> silently skipped. Added it.\n3. fan set a bare *_PASSWORD var, but dw_admin consumers read a full DATABASE_URL DSN.\n   Fix: rewriteDsnPassword() + DSN_REWRITE map rewrites the pw inside DATABASE_URL\n   for dw_admin (URL-encoding + / =).\nVerified: unit + full-branch temp-file tests; route visible (8 dests); routes.json\nbyte-identical to HEAD. Corrected ROTATION-PRESTAGE.md (real step 3 + prod 3b SSH\nstep + revert guard). Prod DATABASE_URL still manual (3b)."},{"hash":"8b0e8f0","date":"2026-06-03 21:03:03 -0700","author":"SteveStudio2","subject":"add rotate-dw-admin-full.sh — complete the forward dw_admin rotation","body":"Console-ready (Steve-run, supervised) script that finishes what ROTATION-PRESTAGE.md\nhalf-did on 2026-06-03: mint new pw (never echoed) -> ALTER dw_admin on Mac2 + prod\n-> fan to Mac2 consumers via secrets cli -> in-place DSN rewrite on Kamatera with\n.pre-rot.bak backups -> restart ONLY affected apps in batches <=6 (never restart all)\n-> converge the 2 split-brain workers -> verify 0 auth failures. --dry-run validated."},{"hash":"4e224ba","date":"2026-06-03 08:30:33 -0700","author":"SteveStudio2","subject":"secrets viewer: add read-only /rotation page (renders ROTATION-CHECKLIST.md as status cards)","body":"- new /rotation route + markdown→HTML renderer (cards w/ outstanding/done pills, summary counts)\n- nav link from main viewer page\n- checklist: added items 4 (SHOPIFY_ADMIN_TOKEN burned) + 5 (repl_user pw lost on sub drop)\n- page shows key names + mint URLs + route-back commands only — never secret values\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>"},{"hash":"f461d5c","date":"2026-06-01 14:44:39 -0700","author":"Steve Abrams","subject":"update tracker: add 'to configure' section for 16 not-set keys (mint links + route-back templates)","body":""},{"hash":"c35aa92","date":"2026-06-01 14:30:20 -0700","author":"Steve Abrams","subject":"credentials/tokens update tracker web viewer (:9778) + dw_admin rotation pre-stage doc","body":""},{"hash":"4fbb01c","date":"2026-06-01 12:56:50 -0700","author":"SteveStudio2","subject":"Add credential rotation checklist (dw_admin pw + 2 Gemini keys + DTD-cleared Norma scoped rotation)","body":""},{"hash":"89bebba","date":"2026-05-31 16:43:51 -0700","author":"Steve Abrams","subject":"durable daily post-bubbe Tier-1 secret-rotation reminder","body":"LaunchAgent-driven (com.steve.postbubbe-rotation-reminder, 8:37am daily,\nsurvives restarts) replacement for the session-only cron. Compares each\nTier-1 key's registry digest against the 2026-05-31 baseline; a changed\ndigest = rotated. Fires a macOS notification listing keys still un-rotated,\nand SELF-RETIRES (boots out the agent + drops a RESOLVED marker) once all 9\nhave been rotated. Re-verify + remind only — never rotates console-only keys.\n\nTracks: the reminder script + the digest baseline (digests are last4:sha-prefix,\nnot secrets). Plist lives in ~/Library/LaunchAgents (outside the repo)."},{"hash":"a1e5d79","date":"2026-05-31 00:03:29 -0700","author":"SteveStudio2","subject":"gitignore: add patterns for backup/scratch files (*.bak, *.bak-*, *.pre-*, *.orig etc)","body":"Prevents future accidental commits of routes.json.bak-* and similar\ntemporary backup files that the secrets-manager tooling generates during\nkey rotations and audits.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"ed8feec","date":"2026-05-19 15:09:34 -0700","author":"Steve","subject":"chore: sync registry + routes","body":""},{"hash":"ebc0fdc","date":"2026-05-19 11:35:49 -0700","author":"Steve","subject":"snapshot — gitify backup 2026-05-19","body":""}]}