← back to Claude Codex Meeting
codex-meeting · hook cost-tracker for call-count attribution · Every successful 'claude --print' meeting run now appends a ledger entry to ~/.claude/cost-ledger.jsonl tagged app=codex-meeting. Rates are anthropic_max_plan (/bin/zsh incremental against the flat Max plan) so dollar total stays /bin/zsh — the value is in call-count attribution + char-as-token proxy so report.js --since 7d shows how much input/output volume each meeting consumes. Pattern mirrors the what-landed-video hook from earlier today. Skips logging on STATUS != ok (claude-error / leaked-meta / no-claude-cli) so the ledger doesn't get poisoned by failed runs.
4cc9f28288c50724b95c3fd4aa18db0d0e761830 · 2026-05-12 16:39:17 -0700 · SteveStudio2
Files touched
A .last-actedM last-meeting.mdM logs/email.logM logs/run.logA meetings/2026-05-01_144729-morning.mdA meetings/2026-05-01_170002-evening.mdA meetings/2026-05-01_173651-morning.mdA meetings/2026-05-01_183809-morning.mdA meetings/2026-05-01_183915-morning.mdA meetings/2026-05-02_090006-morning.mdA meetings/2026-05-02_170309-evening.mdA meetings/2026-05-03_090002-morning.mdA meetings/2026-05-03_170002-evening.mdA meetings/2026-05-03_180001-sunday-digest.mdA meetings/2026-05-04_090001-morning.mdA meetings/2026-05-04_170001-evening.mdA meetings/2026-05-05_090004-morning.mdA meetings/2026-05-05_120029-morning.mdA meetings/2026-05-05_170004-evening.mdA meetings/2026-05-06_090005-morning.mdA meetings/2026-05-06_170005-evening.mdA meetings/2026-05-07_090002-morning.mdA meetings/2026-05-07_170001-evening.mdA meetings/2026-05-08_090021-morning.mdA meetings/2026-05-08_170018-evening.mdA meetings/2026-05-09_090004-morning.mdA meetings/2026-05-09_170234-evening.mdA meetings/2026-05-10_090007-morning.mdA meetings/2026-05-10_170003-evening.mdA meetings/2026-05-10_180006-sunday-digest.mdA meetings/2026-05-11_090005-morning.mdA meetings/2026-05-11_170004-evening.mdA meetings/2026-05-12_090001-morning.mdM run-meeting.sh
Diff
commit 4cc9f28288c50724b95c3fd4aa18db0d0e761830
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Tue May 12 16:39:17 2026 -0700
codex-meeting · hook cost-tracker for call-count attribution · Every successful 'claude --print' meeting run now appends a ledger entry to ~/.claude/cost-ledger.jsonl tagged app=codex-meeting. Rates are anthropic_max_plan (/bin/zsh incremental against the flat Max plan) so dollar total stays /bin/zsh — the value is in call-count attribution + char-as-token proxy so report.js --since 7d shows how much input/output volume each meeting consumes. Pattern mirrors the what-landed-video hook from earlier today. Skips logging on STATUS != ok (claude-error / leaked-meta / no-claude-cli) so the ledger doesn't get poisoned by failed runs.
---
.last-acted | 1 +
last-meeting.md | 2 +-
logs/email.log | 24 ++
logs/run.log | 416 ++++++++++++++++++++++++++++
meetings/2026-05-01_144729-morning.md | 57 ++++
meetings/2026-05-01_170002-evening.md | 52 ++++
meetings/2026-05-01_173651-morning.md | 53 ++++
meetings/2026-05-01_183809-morning.md | 53 ++++
meetings/2026-05-01_183915-morning.md | 52 ++++
meetings/2026-05-02_090006-morning.md | 47 ++++
meetings/2026-05-02_170309-evening.md | 46 +++
meetings/2026-05-03_090002-morning.md | 43 +++
meetings/2026-05-03_170002-evening.md | 41 +++
meetings/2026-05-03_180001-sunday-digest.md | 66 +++++
meetings/2026-05-04_090001-morning.md | 49 ++++
meetings/2026-05-04_170001-evening.md | 49 ++++
meetings/2026-05-05_090004-morning.md | 94 +++++++
meetings/2026-05-05_120029-morning.md | 54 ++++
meetings/2026-05-05_170004-evening.md | 57 ++++
meetings/2026-05-06_090005-morning.md | 56 ++++
meetings/2026-05-06_170005-evening.md | 49 ++++
meetings/2026-05-07_090002-morning.md | 51 ++++
meetings/2026-05-07_170001-evening.md | 51 ++++
meetings/2026-05-08_090021-morning.md | 54 ++++
meetings/2026-05-08_170018-evening.md | 49 ++++
meetings/2026-05-09_090004-morning.md | 54 ++++
meetings/2026-05-09_170234-evening.md | 48 ++++
meetings/2026-05-10_090007-morning.md | 55 ++++
meetings/2026-05-10_170003-evening.md | 56 ++++
meetings/2026-05-10_180006-sunday-digest.md | 68 +++++
meetings/2026-05-11_090005-morning.md | 53 ++++
meetings/2026-05-11_170004-evening.md | 51 ++++
meetings/2026-05-12_090001-morning.md | 55 ++++
run-meeting.sh | 12 +
34 files changed, 2017 insertions(+), 1 deletion(-)
diff --git a/.last-acted b/.last-acted
new file mode 100644
index 0000000..c350e7a
--- /dev/null
+++ b/.last-acted
@@ -0,0 +1 @@
+2026-05-12_090001-morning.md
diff --git a/last-meeting.md b/last-meeting.md
index 8a2f8ae..9ca84dd 120000
--- a/last-meeting.md
+++ b/last-meeting.md
@@ -1 +1 @@
-meetings/2026-05-01_143439-morning.md
\ No newline at end of file
+meetings/2026-05-12_090001-morning.md
\ No newline at end of file
diff --git a/logs/email.log b/logs/email.log
index 3bce3b8..e52ddf8 100644
--- a/logs/email.log
+++ b/logs/email.log
@@ -2,3 +2,27 @@
{"success":true,"messageId":"19de53157ea7b868","threadId":"19de53157ea7b868","account":"info"}
{"success":true,"messageId":"19de538a65a36271","threadId":"19de538a65a36271","account":"info"}
{"ts":"2026-05-01T21:35:18Z","meeting":"2026-05-01_143439-morning.md","type":"morning","chars": 3570,"resp":{"success":true,"messageId":"19de577ab72badf9","threadId":"19de577ab72badf9","account":"info"}}
+{"ts":"2026-05-01T21:48:35Z","meeting":"2026-05-01_144729-morning.md","type":"morning","chars":3494,"http":200,"resp":{"success":true,"messageId":"19de583d2975e1a1","threadId":"19de583d2975e1a1","account":"info"}}
+{"ts":"2026-05-02T00:00:35Z","meeting":"2026-05-01_170002-evening.md","type":"evening","chars":2808,"http":200,"resp":{"success":true,"messageId":"19de5fcada264071","threadId":"19de5fcada264071","account":"info"}}
+{"ts":"2026-05-02T00:37:39Z","meeting":"2026-05-01_173651-morning.md","type":"morning","chars":3288,"http":200,"resp":{"success":true,"messageId":"19de61e9e295c3bd","threadId":"19de61e9e295c3bd","account":"info"}}
+{"ts":"2026-05-02T01:38:53Z","meeting":"2026-05-01_183809-morning.md","type":"morning","chars":3516,"http":200,"resp":{"success":true,"messageId":"19de656af0808d2e","threadId":"19de656af0808d2e","account":"info"}}
+{"ts":"2026-05-02T01:40:00Z","meeting":"2026-05-01_183915-morning.md","type":"morning","chars":3487,"http":200,"resp":{"success":true,"messageId":"19de657b53af1008","threadId":"19de657b53af1008","account":"info"}}
+{"ts":"2026-05-02T16:00:53Z","meeting":"2026-05-02_090006-morning.md","type":"morning","chars":3578,"http":200,"resp":{"success":true,"messageId":"19de96bdd36a3a14","threadId":"19de96bdd36a3a14","account":"info"}}
+{"ts":"2026-05-03T00:38:00Z","meeting":"2026-05-02_170309-evening.md","type":"evening","chars":2270,"http":200,"resp":{"success":true,"messageId":"19deb454bbdb3ba5","threadId":"19deb454bbdb3ba5","account":"info"}}
+{"ts":"2026-05-03T16:00:33Z","meeting":"2026-05-03_090002-morning.md","type":"morning","chars":3167,"http":200,"resp":{"success":true,"messageId":"19dee91e83ec9dce","threadId":"19dee91e83ec9dce","account":"info"}}
+{"ts":"2026-05-04T00:00:37Z","meeting":"2026-05-03_170002-evening.md","type":"evening","chars":2222,"http":200,"resp":{"success":true,"messageId":"19df0496d99e8da0","threadId":"19df0496d99e8da0","account":"info"}}
+{"ts":"2026-05-04T01:00:36Z","meeting":"2026-05-03_180001-sunday-digest.md","type":"sunday-digest","chars":4363,"http":200,"resp":{"success":true,"messageId":"19df080588101292","threadId":"19df080588101292","account":"info"}}
+{"ts":"2026-05-04T16:00:28Z","meeting":"2026-05-04_090001-morning.md","type":"morning","chars":3236,"http":200,"resp":{"success":true,"messageId":"19df3b8314fb3861","threadId":"19df3b8314fb3861","account":"info"}}
+{"ts":"2026-05-05T00:00:49Z","meeting":"2026-05-04_170001-evening.md","type":"evening","chars":2600,"http":200,"resp":{"success":true,"messageId":"19df56ff9749c4d9","threadId":"19df56ff9749c4d9","account":"info"}}
+{"ts":"2026-05-05T19:01:08Z","meeting":"2026-05-05_120029-morning.md","type":"morning","chars":3348,"http":200,"resp":{"success":true,"messageId":"19df983f5e59f2b8","threadId":"19df983f5e59f2b8","account":"info","source":"curl/8.7.1"}}
+{"ts":"2026-05-06T00:00:48Z","meeting":"2026-05-05_170004-evening.md","type":"evening","chars":3486,"http":200,"resp":{"success":true,"messageId":"19dfa9653309eed3","threadId":"19dfa9653309eed3","account":"info","source":"curl/8.7.1","inThread":false}}
+{"ts":"2026-05-06T16:00:53Z","meeting":"2026-05-06_090005-morning.md","type":"morning","chars":4046,"http":200,"resp":{"success":true,"messageId":"19dfe054b6a71d01","threadId":"19dfe054b6a71d01","account":"info","source":"curl/8.7.1","inThread":false}}
+{"ts":"2026-05-07T00:01:04Z","meeting":"2026-05-06_170005-evening.md","type":"evening","chars":3229,"http":200,"resp":{"success":true,"messageId":"19dffbced403e0e3","threadId":"19dffbced403e0e3","account":"info","source":"curl/8.7.1","inThread":false}}
+{"ts":"2026-05-07T16:00:40Z","meeting":"2026-05-07_090002-morning.md","type":"morning","chars":4072,"http":200,"resp":{"success":true,"messageId":"19e032b764c91a12","threadId":"19e032b764c91a12","account":"info","source":"curl/8.7.1","inThread":false}}
+{"ts":"2026-05-08T00:00:56Z","meeting":"2026-05-07_170001-evening.md","type":"evening","chars":3225,"http":200,"resp":{"success":true,"messageId":"19e04e329ae719ab","threadId":"19e04e329ae719ab","account":"info","source":"curl/8.7.1","inThread":false}}
+{"ts":"2026-05-08T16:23:26Z","meeting":"2026-05-08_090021-morning.md","type":"morning","chars":3636,"http":500,"resp":{"error":"invalid_grant"}}
+{"ts":"2026-05-09T00:19:07Z","meeting":"2026-05-08_170018-evening.md","type":"evening","chars":2613,"http":500,"resp":{"error":"invalid_grant"}}
+{"ts":"2026-05-09T16:00:46Z","meeting":"2026-05-09_090004-morning.md","type":"morning","chars":3600,"http":500,"resp":{"error":"invalid_grant"}}
+{"ts":"2026-05-10T00:03:11Z","meeting":"2026-05-09_170234-evening.md","type":"evening","chars":2452,"http":500,"resp":{"error":"invalid_grant"}}
+{"ts":"2026-05-10T20:21:14Z","meeting":"2026-05-10_090007-morning.md","type":"morning","chars":3698,"http":401,"resp":{"error":"Invalid credentials"}}
+{"ts":"2026-05-12T16:00:46Z","meeting":"2026-05-12_090001-morning.md","type":"morning","chars":3689,"http":200,"resp":{"success":true,"messageId":"19e1ceb561689850","threadId":"19e1ceb561689850","account":"info","source":"curl/8.7.1","inThread":false}}
diff --git a/logs/run.log b/logs/run.log
index 31650b4..8590250 100644
--- a/logs/run.log
+++ b/logs/run.log
@@ -422,3 +422,419 @@
[14:35:17] symlink updated last-meeting.md → 2026-05-01_143439-morning.md
[14:35:18] email queued via george (health=200)
[14:35:18] ===== meeting end =====
+[14:47:29] ===== meeting start type=morning ts=2026-05-01_144729 dow=Friday =====
+[14:47:30] context bundled 122 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-01_144729-morning.context.md
+[14:47:30] calling claude --print model=sonnet …
+[14:48:34] meeting written lines=57 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-01_144729-morning.md
+[14:48:34] symlink updated last-meeting.md → 2026-05-01_144729-morning.md
+[14:48:35] email queued via george (health=200 post=200)
+[14:48:35] ===== meeting end =====
+[17:00:02] ===== meeting start type=evening ts=2026-05-01_170002 dow=Friday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[17:00:03] context bundled 79 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-01_170002-evening.context.md
+[17:00:03] calling claude --print model=sonnet …
+[17:00:34] meeting written lines=52 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-01_170002-evening.md
+[17:00:34] symlink updated last-meeting.md → 2026-05-01_170002-evening.md
+[17:00:35] email queued via george (health=200 post=200)
+[17:00:35] ===== meeting end =====
+[17:36:51] ===== meeting start type=morning ts=2026-05-01_173651 dow=Friday =====
+[17:36:52] context bundled 118 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-01_173651-morning.context.md
+[17:36:52] calling claude --print model=sonnet …
+[17:37:39] meeting written lines=53 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-01_173651-morning.md
+[17:37:39] symlink updated last-meeting.md → 2026-05-01_173651-morning.md
+[17:37:39] email queued via george (health=200 post=200)
+[17:37:39] ===== meeting end =====
+[18:38:09] ===== meeting start type=morning ts=2026-05-01_183809 dow=Friday =====
+[18:38:10] context bundled 120 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-01_183809-morning.context.md
+[18:38:10] calling claude --print model=sonnet …
+[18:38:53] meeting written lines=53 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-01_183809-morning.md
+[18:38:53] symlink updated last-meeting.md → 2026-05-01_183809-morning.md
+[meeting] marked unavailable, falling back to <pre> plaintext: Cannot find module '/Users/stevestudio2/Projects/claude-codex-meeting/node_modules/marked'
+Require stack:
+- /Users/stevestudio2/Projects/claude-codex-meeting/[eval]
+[18:38:53] email queued via george (health=200 post=200)
+[18:38:53] ===== meeting end =====
+[18:39:15] ===== meeting start type=morning ts=2026-05-01_183915 dow=Friday =====
+[18:39:16] context bundled 120 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-01_183915-morning.context.md
+[18:39:16] calling claude --print model=sonnet …
+[18:40:00] meeting written lines=52 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-01_183915-morning.md
+[18:40:00] symlink updated last-meeting.md → 2026-05-01_183915-morning.md
+[18:40:00] email queued via george (health=200 post=200)
+[18:40:00] ===== meeting end =====
+[09:00:06] ===== meeting start type=morning ts=2026-05-02_090006 dow=Saturday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[09:00:07] context bundled 74 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-02_090006-morning.context.md
+[09:00:08] calling claude --print model=sonnet …
+[09:00:53] meeting written lines=47 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-02_090006-morning.md
+[09:00:53] symlink updated last-meeting.md → 2026-05-02_090006-morning.md
+[09:00:53] email queued via george (health=200 post=200)
+[09:00:53] ===== meeting end =====
+[17:03:09] ===== meeting start type=evening ts=2026-05-02_170309 dow=Saturday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[17:03:10] context bundled 69 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-02_170309-evening.context.md
+[17:03:10] calling claude --print model=sonnet …
+[17:37:59] meeting written lines=46 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-02_170309-evening.md
+[17:37:59] symlink updated last-meeting.md → 2026-05-02_170309-evening.md
+[17:38:00] email queued via george (health=200 post=200)
+[17:38:00] ===== meeting end =====
+[09:00:02] ===== meeting start type=morning ts=2026-05-03_090002 dow=Sunday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[09:00:03] context bundled 68 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-03_090002-morning.context.md
+[09:00:03] calling claude --print model=sonnet …
+[09:00:31] meeting written lines=43 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-03_090002-morning.md
+[09:00:31] symlink updated last-meeting.md → 2026-05-03_090002-morning.md
+[09:00:33] email queued via george (health=200 post=200)
+[09:00:33] ===== meeting end =====
+[17:00:02] ===== meeting start type=evening ts=2026-05-03_170002 dow=Sunday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[17:00:03] context bundled 65 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-03_170002-evening.context.md
+[17:00:03] calling claude --print model=sonnet …
+[17:00:36] meeting written lines=41 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-03_170002-evening.md
+[17:00:36] symlink updated last-meeting.md → 2026-05-03_170002-evening.md
+[17:00:37] email queued via george (health=200 post=200)
+[17:00:37] ===== meeting end =====
+[18:00:01] ===== meeting start type=sunday-digest ts=2026-05-03_180001 dow=Sunday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[18:00:02] context bundled 65 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-03_180001-sunday-digest.context.md
+[18:00:02] calling claude --print model=sonnet …
+[18:00:35] meeting written lines=66 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-03_180001-sunday-digest.md
+[18:00:35] symlink updated last-meeting.md → 2026-05-03_180001-sunday-digest.md
+[18:00:36] email queued via george (health=200 post=200)
+[18:00:36] ===== meeting end =====
+[09:00:01] ===== meeting start type=morning ts=2026-05-04_090001 dow=Monday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[09:00:02] context bundled 106 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-04_090001-morning.context.md
+[09:00:02] calling claude --print model=sonnet …
+[09:00:27] meeting written lines=49 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-04_090001-morning.md
+[09:00:27] symlink updated last-meeting.md → 2026-05-04_090001-morning.md
+[09:00:28] email queued via george (health=200 post=200)
+[09:00:28] ===== meeting end =====
+[17:00:01] ===== meeting start type=evening ts=2026-05-04_170001 dow=Monday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[17:00:02] context bundled 89 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-04_170001-evening.context.md
+[17:00:02] calling claude --print model=sonnet …
+[17:00:48] meeting written lines=49 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-04_170001-evening.md
+[17:00:48] symlink updated last-meeting.md → 2026-05-04_170001-evening.md
+[17:00:49] email queued via george (health=200 post=200)
+[17:00:49] ===== meeting end =====
+[09:00:04] ===== meeting start type=morning ts=2026-05-05_090004 dow=Tuesday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[09:00:06] context bundled 90 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-05_090004-morning.context.md
+[09:00:06] calling claude --print model=sonnet …
+[09:00:12] claude --print returned non-zero exit; saving stub
+[09:00:12] meeting written lines=94 status=claude-error → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-05_090004-morning.md
+[09:00:12] symlink NOT updated — status=claude-error (this run quarantined; carryover stays clean)
+[09:00:12] email skipped — status=claude-error
+[09:00:12] ===== meeting end =====
+[12:00:29] ===== meeting start type=morning ts=2026-05-05_120029 dow=Tuesday =====
+[12:00:36] context bundled 137 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-05_120029-morning.context.md
+[12:00:36] calling claude --print model=sonnet …
+[12:01:07] meeting written lines=54 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-05_120029-morning.md
+[12:01:07] symlink updated last-meeting.md → 2026-05-05_120029-morning.md
+[12:01:08] email queued via george (health=200 post=200)
+[12:01:08] ===== meeting end =====
+[17:00:04] ===== meeting start type=evening ts=2026-05-05_170004 dow=Tuesday =====
+[17:00:06] context bundled 144 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-05_170004-evening.context.md
+[17:00:06] calling claude --print model=sonnet …
+[17:00:48] meeting written lines=57 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-05_170004-evening.md
+[17:00:48] symlink updated last-meeting.md → 2026-05-05_170004-evening.md
+[17:00:48] email queued via george (health=200 post=200)
+[17:00:48] ===== meeting end =====
+[09:00:05] ===== meeting start type=morning ts=2026-05-06_090005 dow=Wednesday =====
+[09:00:08] context bundled 170 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-06_090005-morning.context.md
+[09:00:08] calling claude --print model=sonnet …
+[09:00:52] meeting written lines=56 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-06_090005-morning.md
+[09:00:52] symlink updated last-meeting.md → 2026-05-06_090005-morning.md
+[09:00:53] email queued via george (health=200 post=200)
+[09:00:53] ===== meeting end =====
+[17:00:05] ===== meeting start type=evening ts=2026-05-06_170005 dow=Wednesday =====
+[17:00:07] context bundled 173 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-06_170005-evening.context.md
+[17:00:07] calling claude --print model=sonnet …
+[17:01:04] meeting written lines=49 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-06_170005-evening.md
+[17:01:04] symlink updated last-meeting.md → 2026-05-06_170005-evening.md
+[17:01:04] email queued via george (health=200 post=200)
+[17:01:04] ===== meeting end =====
+[09:00:02] ===== meeting start type=morning ts=2026-05-07_090002 dow=Thursday =====
+[09:00:04] context bundled 188 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-07_090002-morning.context.md
+[09:00:04] calling claude --print model=sonnet …
+[09:00:39] meeting written lines=51 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-07_090002-morning.md
+[09:00:39] symlink updated last-meeting.md → 2026-05-07_090002-morning.md
+[09:00:40] email queued via george (health=200 post=200)
+[09:00:40] ===== meeting end =====
+[17:00:01] ===== meeting start type=evening ts=2026-05-07_170001 dow=Thursday =====
+[17:00:03] context bundled 195 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-07_170001-evening.context.md
+[17:00:03] calling claude --print model=sonnet …
+[17:00:56] meeting written lines=51 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-07_170001-evening.md
+[17:00:56] symlink updated last-meeting.md → 2026-05-07_170001-evening.md
+[17:00:56] email queued via george (health=200 post=200)
+[17:00:56] ===== meeting end =====
+[09:00:31] ===== meeting start type=morning ts=2026-05-08_090021 dow=Friday =====
+[09:20:29] context bundled 140 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-08_090021-morning.context.md
+[09:20:33] calling claude --print model=sonnet …
+[09:23:26] meeting written lines=54 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-08_090021-morning.md
+[09:23:26] symlink updated last-meeting.md → 2026-05-08_090021-morning.md
+[09:23:26] email POST FAILED (health=200 post=500) — george reachable but rejected
+[09:23:26] ===== meeting end =====
+[17:00:30] ===== meeting start type=evening ts=2026-05-08_170018 dow=Friday =====
+[17:18:15] context bundled 144 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-08_170018-evening.context.md
+[17:18:15] calling claude --print model=sonnet …
+[17:19:07] meeting written lines=49 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-08_170018-evening.md
+[17:19:07] symlink updated last-meeting.md → 2026-05-08_170018-evening.md
+[17:19:07] email POST FAILED (health=200 post=500) — george reachable but rejected
+[17:19:07] ===== meeting end =====
+[09:00:04] ===== meeting start type=morning ts=2026-05-09_090004 dow=Saturday =====
+[09:00:06] context bundled 138 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-09_090004-morning.context.md
+[09:00:06] calling claude --print model=sonnet …
+[09:00:46] meeting written lines=54 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-09_090004-morning.md
+[09:00:46] symlink updated last-meeting.md → 2026-05-09_090004-morning.md
+[09:00:46] email POST FAILED (health=200 post=500) — george reachable but rejected
+[09:00:46] ===== meeting end =====
+[17:02:34] ===== meeting start type=evening ts=2026-05-09_170234 dow=Saturday =====
+[17:02:37] context bundled 143 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-09_170234-evening.context.md
+[17:02:37] calling claude --print model=sonnet …
+[17:03:11] meeting written lines=48 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-09_170234-evening.md
+[17:03:11] symlink updated last-meeting.md → 2026-05-09_170234-evening.md
+[17:03:11] email POST FAILED (health=200 post=500) — george reachable but rejected
+[17:03:11] ===== meeting end =====
+[09:00:12] ===== meeting start type=morning ts=2026-05-10_090007 dow=Sunday =====
+<anonymous_script>:1
+
+
+SyntaxError: Unexpected end of JSON input
+ at JSON.parse (<anonymous>)
+ at Socket.<anonymous> ([eval]:1:84)
+ at Socket.emit (node:events:530:35)
+ at endReadableNT (node:internal/streams/readable:1698:12)
+ at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
+
+Node.js v22.14.0
+[13:20:11] context bundled 102 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-10_090007-morning.context.md
+[13:20:11] calling claude --print model=sonnet …
+[13:21:13] meeting written lines=55 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-10_090007-morning.md
+[13:21:13] symlink updated last-meeting.md → 2026-05-10_090007-morning.md
+[13:21:14] email POST FAILED (health=200 post=401) — george reachable but rejected
+[13:21:14] ===== meeting end =====
+[17:00:03] ===== meeting start type=evening ts=2026-05-10_170003 dow=Sunday =====
+[17:00:14] context bundled 148 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-10_170003-evening.context.md
+[17:00:14] calling claude --print model=sonnet …
+[17:01:21] meeting written lines=56 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-10_170003-evening.md
+[17:01:22] symlink updated last-meeting.md → 2026-05-10_170003-evening.md
+[17:01:22] george unreachable (health=000); meeting saved locally only
+[17:01:22] ===== meeting end =====
+[18:00:06] ===== meeting start type=sunday-digest ts=2026-05-10_180006 dow=Sunday =====
+[18:05:02] context bundled 159 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-10_180006-sunday-digest.context.md
+[18:05:02] calling claude --print model=sonnet …
+[18:06:29] meeting written lines=68 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-10_180006-sunday-digest.md
+[18:06:29] symlink updated last-meeting.md → 2026-05-10_180006-sunday-digest.md
+[18:06:30] george unreachable (health=000); meeting saved locally only
+[18:06:30] ===== meeting end =====
+[09:00:05] ===== meeting start type=morning ts=2026-05-11_090005 dow=Monday =====
+[09:00:14] context bundled 158 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-11_090005-morning.context.md
+[09:00:15] calling claude --print model=sonnet …
+[09:01:09] meeting written lines=53 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-11_090005-morning.md
+[09:01:09] symlink updated last-meeting.md → 2026-05-11_090005-morning.md
+[09:01:09] george unreachable (health=000); meeting saved locally only
+[09:01:09] ===== meeting end =====
+[17:00:04] ===== meeting start type=evening ts=2026-05-11_170004 dow=Monday =====
+[17:00:06] context bundled 147 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-11_170004-evening.context.md
+[17:00:06] calling claude --print model=sonnet …
+[17:00:46] meeting written lines=51 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-11_170004-evening.md
+[17:00:46] symlink updated last-meeting.md → 2026-05-11_170004-evening.md
+[17:00:46] george unreachable (health=000); meeting saved locally only
+[17:00:46] ===== meeting end =====
+[09:00:01] ===== meeting start type=morning ts=2026-05-12_090001 dow=Tuesday =====
+[09:00:03] context bundled 149 lines → /Users/stevestudio2/Projects/claude-codex-meeting/logs/2026-05-12_090001-morning.context.md
+[09:00:03] calling claude --print model=sonnet …
+[09:00:45] meeting written lines=55 status=ok → /Users/stevestudio2/Projects/claude-codex-meeting/meetings/2026-05-12_090001-morning.md
+[09:00:45] symlink updated last-meeting.md → 2026-05-12_090001-morning.md
+[09:00:46] email queued via george (health=200 post=200)
+[09:00:46] ===== meeting end =====
diff --git a/meetings/2026-05-01_144729-morning.md b/meetings/2026-05-01_144729-morning.md
new file mode 100644
index 0000000..2996215
--- /dev/null
+++ b/meetings/2026-05-01_144729-morning.md
@@ -0,0 +1,57 @@
+# Daily Stand-up — Fri 2026-05-01 14:47 PDT
+
+---
+
+### 1. Carryover (from 14:34 PDT, 13 min ago)
+
+⏳ `am-recrawl` — stopped, 90 restarts. No change. Root cause still undiagnosed.
+⏳ `pd-api` — had 26 restarts at last meeting. **Now absent from PM2 entirely.** Killed or dropped by PM2 — status unknown.
+⏳ `visual-factory-orchestrator` — 16 restarts, no new restarts since prefetch fix. Tentatively ✅ pending full clean hour.
+⏳ Directory consolidation — doctors + lawyers, one platform or two. Still owed.
+
+---
+
+### 2. Last 13 minutes
+
+**Crashes / instability**
+- `pd-api` — ⚠️ was climbing (26 restarts) at last meeting; now gone from PM2 list. Either killed intentionally or crashed out of PM2's list entirely. Highest-priority unknown.
+- `animals-viewer` — 29 restarts, up from 28. Rate has slowed sharply (+1 in 13 min vs. +7/hr earlier). `animals` commit landed 16 min ago — may be working. Watch through 15:00.
+- `sf-orchestrator` — 7 restarts; appears in crashed list but not in prior carryover. New entrant. No diagnosis yet.
+- `am-recrawl` — stopped, 90 restarts. No change. Still the fleet's biggest open wound.
+- `george-gmail` — 3 restarts at 2h uptime. Not resolved.
+
+**Long-running jobs**
+- `silas-sku-agent`, `update-sku-agent`, `full-monty-agent`, `gap-agent` — 0 restarts, 30h uptime. No output signal visible. Silent idle remains unconfirmed.
+
+**Git activity**
+- `animals` (16 min ago): "fix(community): debate-driven fixes for visibility, comments, signup" — correlates with slowdown in `animals-viewer` restarts. Not confirmed yet.
+- `visual-factory` (15h ago): prefetch fix correlates with orchestrator stability.
+
+---
+
+### 3. Today's plan + agent assignments
+
+- `Steve` — confirm `pd-api` state: killed, renamed, or crashed out of PM2 — it had 26 restarts an hour ago; silence now is a loose end — verify and either restart or mark resolved
+- `Steve` — compare `animals-viewer` restart timestamps against the 14:31 commit — rate drop is promising but 13 min is too short to confirm — success = 0 new restarts by 15:00
+- `Steve` — pull `am-recrawl` logs and identify crash root cause — 90 restarts / stopped is a hard block — go/no-go decision before any endpoint work
+- `pm2-crash-watcher` — investigate `sf-orchestrator` (7 restarts, new to crash list) — no prior carryover means this is unmonitored — identify crash reason
+- `Steve` — check `george-gmail` OAuth token — 3 restarts in 2h is almost always a credential issue — stable for 2h
+- `Steve` — confirm `silas-sku-agent` / `update-sku-agent` are producing output, not idling — 30h / 0 restarts with no visible commits is a silent-idle pattern — queue drain evidence in last 6h
+- `Steve` — written one-liner: one professionals platform or two — pre-scale window is closing
+
+---
+
+### 4. Blockers & decisions Steve owes
+
+- `pd-api` — whereabouts unknown; was failing, now gone
+- `am-recrawl` — nothing proceeds without a diagnosis
+- `animals-viewer` — 30-min post-commit confirmation window in progress
+- `sf-orchestrator` — new crash entrant, no root cause
+- `george-gmail` OAuth — every flap is a potential silent email drop
+- Directory consolidation — doctors + lawyers, one codebase or two
+
+---
+
+### 5. One thing to think about
+
+`pd-api` had 26 restarts an hour ago and is now absent from PM2 entirely — if it's wired to any live endpoint or background job, its absence is silent failure right now, not a clean shutdown.
diff --git a/meetings/2026-05-01_170002-evening.md b/meetings/2026-05-01_170002-evening.md
new file mode 100644
index 0000000..a3a264b
--- /dev/null
+++ b/meetings/2026-05-01_170002-evening.md
@@ -0,0 +1,52 @@
+# Daily Wrap-up — Fri 2026-05-01 17:00 PDT
+
+---
+
+### 1. Plan vs. reality
+
+Tasks set at the 14:47 stand-up:
+
+- `🟨 pd-api` — state never confirmed. Was 26 restarts at 13:00, absent from PM2 by 14:47, still absent at 17:00. Carries forward unresolved.
+- `🟨 animals-viewer` — 14:31 commit correlated with restart-rate drop. No 15:00 confirmation on record; pm2 unavailable at close so result unverified.
+- `❌ am-recrawl` — no log pull, no root cause. Still stopped at 90 restarts.
+- `❌ sf-orchestrator` — new crash entrant at 14:47. No investigation result surfaced.
+- `❌ george-gmail OAuth` — no credential check recorded.
+- `❌ silas/update-sku-agent output check` — silent-idle concern unaddressed.
+- `❌ directory decision` — doctors + lawyers, one platform or two. Not written.
+- `🆕 claude-codex-meeting` — run-meeting script patched (round-8 debate fixes), no fleet impact.
+
+---
+
+### 2. What agents actually did today
+
+- `animals` — fix(community): debate-driven visibility, comments, signup fixes — committed ~14:31; restart-rate drop observed shortly after, full confirmation pending.
+- `claude-codex-meeting` — fix(run-meeting): round-8 debate regression patch — committed ~14:45.
+- `visual-factory` — prefetch socket fix landed 17h ago (overnight); orchestrator stable through today's window.
+- `lawyer-directory-builder` / `professional-directory` — last touched 2 days ago; idle today.
+- All other fleet agents (`silas-sku-agent`, `update-sku-agent`, `full-monty-agent`, `gap-agent`, `am-recrawl`, `sf-orchestrator`, `george-gmail`) — idle or in failed state; no commits.
+
+---
+
+### 3. Production health
+
+- `pm2` — unavailable at close of day; fleet state at 17:00 is unverified.
+- `am-recrawl` — stopped, 90 restarts. Undiagnosed. Hard blocker.
+- `pd-api` — absent from PM2. Last known state: 26 restarts. Silent failure or manual kill — unknown.
+- `sf-orchestrator` — 7 restarts as of 14:47. No diagnosis.
+- `george-gmail` — 3 restarts at 2h uptime. OAuth suspected; not confirmed.
+- No credential rotations or security events recorded today.
+
+---
+
+### 4. Carryover into tomorrow morning
+
+1. `pd-api` — locate it: `pm2 list | grep pd-api`, check if killed/renamed/crashed out. If gone, decide restart or retire.
+2. `am-recrawl` — pull logs, identify crash loop root cause. Nothing downstream proceeds without this.
+3. `sf-orchestrator` + `george-gmail` — quick triage on both; both were new/unresolved at EOD.
+4. Directory decision — doctors + lawyers: one codebase or two. Pre-scale window is closing.
+
+---
+
+### 5. The day's takeaway
+
+Fleet diagnosis work from the afternoon carried little to no visible resolution by close — tomorrow opens with the same four open wounds plus a pm2 availability gap that needs clearing first.
diff --git a/meetings/2026-05-01_173651-morning.md b/meetings/2026-05-01_173651-morning.md
new file mode 100644
index 0000000..32aef9f
--- /dev/null
+++ b/meetings/2026-05-01_173651-morning.md
@@ -0,0 +1,53 @@
+# Daily Stand-up — Fri 2026-05-01 17:36 PDT
+
+---
+
+### 1. Carryover from last meeting
+
+- ⏳ `pd-api` — still absent from PM2. Not killed-intentionally, not restarted. Fate unknown.
+- ⏳ `am-recrawl` — stopped, 90 restarts. No diagnosis yet. Hard blocker for anything downstream.
+- ⏳ `sf-orchestrator` — still at 7 restarts in fleet data. No investigation result.
+- ⏳ `george-gmail` — 3 restarts at 5h uptime. OAuth suspected, unconfirmed.
+- ⏳ Directory decision — doctors + lawyers on one platform or two. Pre-scale window closing.
+
+---
+
+### 2. Overnight (last 12 hours)
+
+**Crashes / instability:**
+- `am-recrawl` — stopped, 90 restarts. No new data; still the priority wound.
+- `animals-viewer` — 30 restarts, technically online. The 14:31 community fix has not stabilized it; restart count is high.
+- `visual-factory-orchestrator` — 16 restarts. The prefetch/socket fix landed 18h ago but this restart count contradicts "stable." Fix may not be holding.
+- `gemini-catalog-tagger` — 7 restarts in only 2h uptime. Fast crash loop; relatively new entrant to the problem list.
+- `sf-orchestrator` — 7 restarts, still undiagnosed.
+
+**Long-running jobs:** `am-recrawl` stopped — nothing crawling. All enrichment agents (full-monty, gap, update-sku, silas-sku) show 0 restarts / 32h uptime — stable and running.
+
+**External signals:** No remote commits from collaborators. git activity is local only.
+
+---
+
+### 3. Today's plan + agent assignments
+
+- `Steve / debugger-agent` — pull am-recrawl logs, identify crash-loop root cause — nothing downstream (recrawl feeds enrichment) — commit or restart with a fix within 24h
+- `Steve` — decide pd-api fate: `pm2 list | grep pd-api`, then restart or formally retire — it's been a ghost since at least 14:47 — clear yes/no
+- `pm2-crash-watcher` — deep triage on gemini-catalog-tagger (7 restarts / 2h) — fast crasher, new entrant — root cause identified
+- `debugger-agent` — check visual-factory-orchestrator logs; 16 restarts says the prefetch fix didn't hold — success = either confirmed-stable or a follow-up patch committed
+- `Steve` — confirm george-gmail OAuth credentials are valid — 3 restarts in 5h is the signature — credentials verified or rotated
+- `Steve` — write the directory decision (one platform or two for doctors + lawyers) — deadline for this is now — decision in writing
+
+---
+
+### 4. Blockers and decisions Steve owes
+
+- **am-recrawl root cause** — needs log pull before anyone can fix it
+- **pd-api fate** — restart or retire; has been silent since at least early afternoon
+- **george-gmail credentials** — OAuth check is a 2-minute task but it's blocked on Steve running it
+- **Directory decision** — lawyers + doctors platform scope; every day without this is scope drift risk
+- **visual-factory stability** — if the prefetch fix isn't holding, a second patch decision is needed
+
+---
+
+### 5. One thing to think about
+
+`animals-viewer` is online but at 30 restarts — the community fix committed 3h ago may have reduced the *rate* but the process is clearly still unstable. Is the fix incomplete, or is there a separate crash path (memory leak, external dep) the debate-driven patches didn't address? Worth one log read before calling it resolved.
diff --git a/meetings/2026-05-01_183809-morning.md b/meetings/2026-05-01_183809-morning.md
new file mode 100644
index 0000000..b0c9bf7
--- /dev/null
+++ b/meetings/2026-05-01_183809-morning.md
@@ -0,0 +1,53 @@
+# Daily Stand-up — Fri 2026-05-01 18:38 PDT
+
+---
+
+### 1. Carryover from last meeting
+
+- ✅ `pd-api` — back online (status=online, restarts=4). Was a ghost; now visible. Monitor for stability.
+- ⏳ `am-recrawl` — still stopped, 90 restarts. No fix landed. Critical path blocker.
+- ⏳ `sf-orchestrator` — 7 restarts, still undiagnosed. No change.
+- ⏳ `george-gmail` — 3 restarts / 6h uptime. No new crash in the last hour, but OAuth still unverified.
+- ⏳ Directory decision — lawyers + doctors platform scope. Still outstanding.
+
+---
+
+### 2. Last hour (since 17:36 meeting)
+
+**Crashes / instability:**
+- `animals-viewer` — climbed from 30 → 34 restarts in one hour. The 4h-old community fix is not holding; crash rate is active right now.
+- `visual-factory-orchestrator` — 17 restarts (was 16). Prefetch fix committed 19h ago is not stabilizing it.
+- `am-recrawl` — still stopped at 90 restarts. Unchanged; nothing crawling.
+- `gemini-catalog-tagger` — 7 restarts / 3h uptime. No new crashes this hour, but fast prior loop.
+- `sf-orchestrator` — 7 restarts, no diagnosis.
+
+**Long-running jobs:** Enrichment agents (full-monty, gap, update-sku, silas-sku) stable at 0 restarts / 33h uptime. No crawl input feeding them since am-recrawl is down.
+
+**External signals:** No remote commits from collaborators. `lawyer-directory-builder` and `professional-directory` last touched 2 days ago — no new activity.
+
+---
+
+### 3. Plan + agent assignments
+
+- `debugger-agent` — pull am-recrawl crash logs, identify root cause — feeds all downstream enrichment — commit fix or restart with diagnosis within 24h
+- `debugger-agent` — read animals-viewer logs post community fix (34 restarts, still climbing) — confirm whether fix is incomplete or there's a second crash path — clear diagnosis documented
+- `debugger-agent` — audit visual-factory-orchestrator logs; 17 restarts says prefetch fix didn't hold — root cause identified or follow-up patch committed
+- `pm2-crash-watcher` — deep triage gemini-catalog-tagger (7 restarts / 3h uptime) — fast new crasher with no diagnosis — root cause named
+- `Steve` — verify george-gmail OAuth credentials — 3 restarts in 6h is the OAuth signature; no new crash this hour but still unconfirmed — credentials verified or rotated
+- `Steve` — write the lawyers + doctors platform decision — two active repos, no architectural decision; pre-scale window closing — decision in writing
+
+---
+
+### 4. Blockers and decisions Steve owes
+
+- **am-recrawl** — log pull needed before anyone can fix it; enrichment queue is coasting on prior data
+- **animals-viewer second crash path** — debate patches won't catch a memory leak or external dep; log read is prerequisite
+- **visual-factory follow-up patch** — needs a go/no-go after log audit
+- **george-gmail OAuth** — 2-minute check, blocked on Steve running it
+- **Directory platform decision** — `lawyer-directory-builder` + `professional-directory` are diverging in parallel; every day without a decision is rework risk
+
+---
+
+### 5. One thing to think about
+
+`animals-viewer` added 4 restarts in the last hour — it's actively crashing right now, not just carrying a stale restart count. The debate-driven community fix committed 4h ago clearly didn't close the loop. Before triggering another round of patches, one log read may reveal whether this is a completely different crash path (memory ceiling, external dep timeout, race condition) that code debates won't surface.
diff --git a/meetings/2026-05-01_183915-morning.md b/meetings/2026-05-01_183915-morning.md
new file mode 100644
index 0000000..4cf2df6
--- /dev/null
+++ b/meetings/2026-05-01_183915-morning.md
@@ -0,0 +1,52 @@
+# Daily Stand-up — Fri 2026-05-01 18:39 PDT
+
+---
+
+### 1. Carryover from last meeting
+
+- ✅ `pd-api` — back online, now 5 restarts (was 4). One additional restart since last check; stable but watch closely.
+- ⏳ `am-recrawl` — still stopped, 90 restarts. No fix landed. Enrichment queue coasting on stale data.
+- ⏳ `sf-orchestrator` — 7 restarts, undiagnosed. No change.
+- ⏳ `george-gmail` — 3 restarts / 6h uptime. No new crash this hour; OAuth still unverified.
+- ⏳ Directory platform decision — lawyers + doctors still unresolved. Repos diverging.
+
+---
+
+### 2. Overnight (last 12 hours)
+
+**Crashes / instability:**
+- `animals-viewer` — 34 restarts, actively climbing. Debate-driven fix committed 4h ago is not holding. Second crash path likely.
+- `visual-factory-orchestrator` — 17 restarts. Prefetch fix committed 19h ago (`agent:false` socket reset) not stabilizing it.
+- `gemini-catalog-tagger` — 7 restarts in 3h uptime. Fast new crasher; no root cause named yet.
+- `am-recrawl` — stopped, 90 restarts. No log pull, no fix.
+- `sf-orchestrator` — 7 restarts, no diagnosis.
+
+**Long-running jobs:** Enrichment agents (full-monty, gap, update-sku, silas-sku) all stable at 0 restarts / 33h uptime. Idle — no crawl input since am-recrawl is down.
+
+**External signals:** No remote commits from collaborators. Fleet otherwise stable — 30+ agents at 0 restarts.
+
+---
+
+### 3. Today's plan + agent assignments
+
+- `Steve` — verify george-gmail OAuth credentials — 3 restarts in 6h is the OAuth signature; every hour without this risks losing email routing — credentials confirmed or rotated
+- `debugger-agent` — pull am-recrawl crash logs, identify root cause — downstream enrichment is coasting; no new data ingesting — commit fix or clear diagnosis within 24h
+- `debugger-agent` — read animals-viewer logs post-community-fix (34 restarts, still climbing) — patch debates won't surface a memory leak or dep timeout — second crash path named or ruled out
+- `debugger-agent` — audit visual-factory-orchestrator logs; 17 restarts says prefetch fix didn't close it — root cause identified or follow-up patch committed
+- `pm2-crash-watcher` — deep-triage gemini-catalog-tagger (7 restarts / 3h uptime) — fastest new crasher, no diagnosis yet — root cause named
+- `Steve` — write the lawyers + doctors platform decision — two active repos, no architecture decision; pre-scale window closing — decision in writing today
+
+---
+
+### 4. Blockers and decisions Steve owes
+
+- **george-gmail OAuth** — 2-minute credential check; blocked on Steve. Every restart risks missed mail.
+- **am-recrawl log pull** — no one can fix it without reading the logs first; enrichment agents are idle.
+- **animals-viewer second crash path** — patch debates are hitting a wall; log read is prerequisite before another fix attempt.
+- **Directory platform decision** — `lawyer-directory-builder` + `professional-directory` are diverging daily; no decision = accumulating rework.
+
+---
+
+### 5. One thing to think about
+
+`animals-viewer` has 34 restarts and is still climbing right now — the debate-driven community fix committed 4h ago is clearly insufficient. Before triggering another round of code patches, a single log read may reveal a completely different failure mode (memory ceiling, race condition, external dep timeout) that no amount of community-logic debate will surface. The next action should be read-then-fix, not fix-then-observe.
diff --git a/meetings/2026-05-02_090006-morning.md b/meetings/2026-05-02_090006-morning.md
new file mode 100644
index 0000000..ba29f8a
--- /dev/null
+++ b/meetings/2026-05-02_090006-morning.md
@@ -0,0 +1,47 @@
+# Daily Stand-up — Sat 2026-05-02 09:00 PDT
+
+---
+
+### 1. Carryover from last meeting
+
+- ⏳ `george-gmail` OAuth — 3 restarts / still unverified. Steve's 2-minute credential check still hasn't landed.
+- ⏳ `am-recrawl` — stopped at 90 restarts. No fix in git overnight. Enrichment pipeline remains idle.
+- ⏳ `sf-orchestrator` — 7 restarts, undiagnosed. No commits targeting it.
+- ⏳ Directory platform decision — lawyers + doctors repos still diverging. No written decision.
+- ✅ `animals-viewer` + `visual-factory` — codex fixes committed 14h ago (XSS/dedupe + SSRF blocklist). Commit landed; runtime stability unknown — PM2 unavailable this morning.
+
+---
+
+### 2. Overnight (last 12 hours)
+
+**Crashes / instability:** PM2 not available — no live fleet data. Cannot confirm whether last night's fixes stabilized `animals-viewer` (was 34 restarts, climbing) or `visual-factory-orchestrator` (17 restarts). Treat both as open until PM2 is accessible or logs are pulled.
+
+**Long-running jobs:** No new scraper/ingest activity visible in git. `am-recrawl` remains stopped; enrichment agents were idle as of last meeting and likely still are.
+
+**External signals:** `professional-directory` had a commit 2h ago — `apply-templates.js` (deterministic mockup template-rotation). That's the only overnight change. No collaborator commits on other repos. Codex quota not visible.
+
+---
+
+### 3. Today's plan + agent assignments
+
+- `Steve` — confirm or rotate george-gmail OAuth credentials — 3 restarts in 6h is the OAuth signature; weekend mail routing at risk — credentials verified and logged
+- `debugger-agent` — pull am-recrawl crash logs and identify root cause — 90 restarts, stopped, zero enrichment input — root cause named or fix committed
+- `debugger-agent` — check animals-viewer runtime post-codex-fix (XSS + dedupe patch landed 14h ago) — must confirm stability before marking closed — restart count flat or zero
+- `debugger-agent` — confirm visual-factory-orchestrator post-SSRF-fix state — 17 restarts before patch; patch is in but runtime unknown — stable or second crash path named
+- `pm2-crash-watcher` — triage gemini-catalog-tagger (7 restarts / 3h uptime as of last night) — fastest new crasher with no diagnosis — root cause identified
+- `Steve` — write the lawyers + doctors platform decision — `lawyer-directory-builder` + `professional-directory` both active; `apply-templates.js` landed 2h ago, divergence accelerating — decision document written today
+
+---
+
+### 4. Blockers & decisions Steve owes
+
+- **george-gmail OAuth** — blocked on Steve; 2-minute credential check. Every hour of inaction risks missed weekend mail.
+- **am-recrawl root cause** — no one can fix 90 restarts without reading the logs. Enrichment is coasting on stale data until this lands.
+- **PM2 access** — fleet is a black box this morning. Cannot confirm whether last night's three fixes actually held.
+- **Directory platform decision** — `apply-templates.js` just shipped to `professional-directory` 2h ago. Each new commit makes the eventual merge/split more expensive. Decision in writing today.
+
+---
+
+### 5. One thing to think about
+
+PM2 is unavailable this morning, which means last night's three commits (animals XSS, visual-factory SSRF, claude-codex email rendering) may or may not have fixed anything — and you have no way to know without manually checking. Before spinning up new debug work, restore PM2 visibility first; otherwise you're navigating blind and risk duplicating effort on already-fixed problems.
diff --git a/meetings/2026-05-02_170309-evening.md b/meetings/2026-05-02_170309-evening.md
new file mode 100644
index 0000000..a6c7ac2
--- /dev/null
+++ b/meetings/2026-05-02_170309-evening.md
@@ -0,0 +1,46 @@
+---
+
+# Claude-Codex Evening Wrap-up — Sat 2026-05-02 17:03 PDT
+
+---
+
+### 1. Plan vs Reality
+
+- 🟨 `george-gmail OAuth` — No evidence of credential check or rotation in git. Mail routing risk carries into Sunday.
+- ❌ `am-recrawl root cause` — No commits, no logs surfaced. 90-restart stop remains undiagnosed. Enrichment pipeline still cold.
+- 🟨 `animals-viewer runtime check` — XSS/dedupe fix was committed 22h ago (before this morning's meeting). Runtime stability still unconfirmed; PM2 unavailable all day.
+- 🟨 `visual-factory-orchestrator SSRF check` — Fix committed 22h ago. Runtime unknown; PM2 still down.
+- ❌ `gemini-catalog-tagger triage` — No evidence of investigation. PM2 black box all day.
+- ❌ `lawyers + doctors platform decision` — No document committed or linked. `apply-templates.js` is now 10h older; divergence cost rising.
+
+---
+
+### 2. What the Agents Actually Did Today
+
+- `professional-directory` — `apply-templates.js` landed ~10h ago (before morning meeting; no new follow-up commits today)
+- All other agents — idle, no new commits between 09:00 and 17:03 PDT
+- PM2 fleet — black box entire day; no crash data, no restart counts, no health signal
+
+---
+
+### 3. Production Health
+
+- PM2 inaccessible all day — fleet state completely unknown
+- `george-gmail` (3 restarts as of morning) — unresolved; Sunday mail routing at continued risk
+- `am-recrawl` (90 restarts, stopped) — still stopped, no fix
+- `animals-viewer`, `visual-factory-orchestrator`, `gemini-catalog-tagger` — all have open crash histories; none confirmed stable or investigated today
+- No new security incidents, no credential rotations logged
+
+---
+
+### 4. Carryover into Tomorrow Morning
+
+1. **Restore PM2 access first** — nothing else can be confirmed or closed without it; four agents have unverified fixes.
+2. **george-gmail OAuth** — third consecutive carryover; Sunday is the highest-risk day for missed mail. Two-minute credential check.
+3. **am-recrawl + platform decision** — both require active time, not just a PM2 check. Enrichment is stale; directory divergence compounds daily.
+
+---
+
+### 5. The Day's Takeaway
+
+PM2 was down all day, nothing new shipped, and every open item from this morning rolls intact into Sunday.
diff --git a/meetings/2026-05-03_090002-morning.md b/meetings/2026-05-03_090002-morning.md
new file mode 100644
index 0000000..3830f6f
--- /dev/null
+++ b/meetings/2026-05-03_090002-morning.md
@@ -0,0 +1,43 @@
+# Claude-Codex Morning Meeting — Sun 2026-05-03 09:00 PDT
+
+---
+
+### 1. Carryover from Last Meeting
+
+- ⏳ **PM2 access** — down all day Saturday; fleet state unknown. Nothing else can be confirmed closed without it.
+- ⏳ **george-gmail OAuth** — 3rd consecutive carryover. 3 restarts as of Friday, unresolved. Sunday = highest mail-volume risk day.
+- ⏳ **am-recrawl root cause** — 90-restart stop, still stopped, undiagnosed. Enrichment pipeline cold.
+- ⏳ **lawyers + doctors platform decision** — `apply-templates.js` shipped 26h ago; directory divergence compounds daily without a decision on which DB pattern to lock.
+
+---
+
+### 2. Overnight (Last 12 Hours)
+
+- **Crashes / instability** — PM2 not available. Fleet state unknown for the fourth consecutive check. `george-gmail`, `am-recrawl`, `animals-viewer`, `visual-factory-orchestrator`, `gemini-catalog-tagger` all carry open crash histories with no runtime confirmation.
+- **Long-running jobs** — No scraper or ingest activity visible in git. No overnight runs confirmed.
+- **External signals** — No new remote commits since yesterday's `professional-directory` push (26h ago). Fleet silent.
+
+---
+
+### 3. Today's Plan + Agent Assignments
+
+- `Steve — restore PM2 access — nothing can be verified or closed without it — pm2 list returns clean output with ≥10 processes`
+- `Steve — george-gmail credential check (2 min) — Sunday is highest-risk day for missed mail; third consecutive skip — OAuth token validates, restart count stops climbing`
+- `debugger-agent — diagnose am-recrawl 90-restart stop — enrichment pipeline has been cold since Friday — root cause identified, fix or stop decision made`
+- `Steve — make lawyers + doctors platform decision — apply-templates.js divergence compounds daily — written decision committed or linked before EOD`
+- `pm2-crash-watcher — once PM2 is restored, run full fleet scan — animals-viewer, visual-factory-orchestrator, gemini-catalog-tagger fixes are committed but unconfirmed at runtime — all three show stable (restart_time stable, no errored status)`
+
+---
+
+### 4. Blockers & Decisions Steve Owes
+
+- **PM2 access** — root blocker for everything; unclear if this is a process, permissions, or machine issue. Needs Steve to diagnose directly.
+- **george-gmail OAuth rotation** — two-minute task that has slipped three days. Today is the highest-risk window.
+- **lawyers + doctors platform decision** — `apply-templates.js` is live; the two directories are drifting. Steve needs to commit a decision doc or comment before agents do more template work.
+- **am-recrawl** — needs a judgment call: fix and restart, or decomission the agent and route enrichment elsewhere?
+
+---
+
+### 5. One Thing to Think About
+
+PM2 has been inaccessible for over 24 hours and none of Saturday's committed fixes (animals-viewer XSS, visual-factory SSRF, george-gmail) have been verified at runtime. Is PM2 down because of a machine/permissions issue on the host, or is it a deeper process manager problem — and is there a fallback health check (e.g., direct `ps aux` or Docker stats) that agents can use while it's unavailable?
diff --git a/meetings/2026-05-03_170002-evening.md b/meetings/2026-05-03_170002-evening.md
new file mode 100644
index 0000000..50b0a47
--- /dev/null
+++ b/meetings/2026-05-03_170002-evening.md
@@ -0,0 +1,41 @@
+# Claude-Codex Evening Meeting — Sun 2026-05-03 17:00 PDT
+
+---
+
+### 1. Plan vs Reality
+
+- `❌ skipped` — **Steve: restore PM2 access** — No git evidence of resolution; PM2 still not available at report time. Fifth consecutive missed check.
+- `❌ skipped` — **Steve: george-gmail credential check** — No commit or token rotation visible. Fourth consecutive skip on highest-risk mail day.
+- `❌ skipped` — **debugger-agent: diagnose am-recrawl** — No commits to am-recrawl or related enrichment code today. Pipeline remains cold.
+- `❌ skipped` — **Steve: lawyers + doctors platform decision** — No decision doc committed. `apply-templates.js` is now ~58h old with no follow-on work.
+- `❌ skipped` — **pm2-crash-watcher: full fleet scan** — Blocked on PM2 access. Never ran.
+
+---
+
+### 2. What the Agents Actually Did Today
+
+No git commits landed on 2026-05-03 across any tracked project. All agents: idle, no commits.
+
+---
+
+### 3. Production Health
+
+- PM2 inaccessible — fifth consecutive missed status check. Fleet state entirely unknown.
+- george-gmail — last known: 3 restarts as of Friday, OAuth unrotated, no Sunday confirmation.
+- am-recrawl — still stopped, 90-restart history, enrichment pipeline cold since Friday.
+- animals-viewer, visual-factory-orchestrator — XSS/SSRF fixes are committed (2 days ago) but unconfirmed at runtime; PM2 block prevents verification.
+- ⚠️ No crashes confirmed today because we have no observability.
+
+---
+
+### 4. Carryover into Tomorrow Morning
+
+1. **PM2 access** — still the root blocker. Without it, nothing can be verified or safely restarted. Steve must diagnose directly (permissions, process, machine state) before anything else.
+2. **george-gmail OAuth** — five days overdue; rotate the token first thing Monday before the morning mail window opens.
+3. **am-recrawl + lawyers/doctors decision** — both have been deferred long enough to compound. Pair: diagnose am-recrawl (fix or decommission) and commit the platform decision doc in the same session.
+
+---
+
+### 5. The Day's Takeaway
+
+Complete standstill — no commits, no fleet visibility, no decisions made; Monday must open with PM2 restoration before anything else can move.
diff --git a/meetings/2026-05-03_180001-sunday-digest.md b/meetings/2026-05-03_180001-sunday-digest.md
new file mode 100644
index 0000000..409011f
--- /dev/null
+++ b/meetings/2026-05-03_180001-sunday-digest.md
@@ -0,0 +1,66 @@
+# DW Overnight Digest — May 03 2026
+
+**State of the shop:** DW catalog quiet this week — all energy went to directory platforms and security hardening. Fleet visibility is zero due to a five-day PM2 outage; SKU direction cannot be confirmed until access is restored.
+
+---
+
+## 1. The Week in Commits
+
+**Security hardening**
+- `animals` (2d ago) — XSS patch on /shows map event handler; deduplication collision fix
+- `visual-factory` (2d ago) — SSRF IPv6 reserved-range blocklist now catches in-range address forms (codex P2 close-out)
+- `claude-codex-meeting` (2d ago) — markdown→HTML conversion so Gmail renders meeting reports correctly
+
+**Directory platform build**
+- `lawyer-directory-builder` (4d ago) — Dashboard counters for professionals, phones, emails; wiki-lawyers bulk importer wired in
+- `professional-directory` (35h ago) — `apply-templates.js` committed: deterministic mockup template-rotation for doctor directory
+- `VictoryStays` (6d ago) — Deep Dive Agent shipped; 230 individual home pages with claim flow scaffolded
+
+**Stale / quiet**
+- `Forza` (10d ago) — diary chapters 10–11 only; no functional changes
+- `Bertha` — last meaningful work 6 weeks ago; effectively dormant
+
+---
+
+## 2. Agent Fleet — Who Earned Their Keep
+
+**Active this week:**
+1. **codex-security-reviewer** — closed two P1/P2 findings in animals and visual-factory within the same 24h window; clean execution
+2. **lawyer-build-agent** — dashboard counters + wiki-lawyers importer shipped; directory is gaining shape
+3. **doctor-agent** — apply-templates.js is a real deliverable; mockup pipeline now has deterministic rotation
+4. **VictoryStays orchestrator** — 230 home pages + claim flow is substantial output for one week
+5. **claude-codex-meeting** — email rendering fix was small but unblocked the daily report loop
+
+**Idle / stuck / blocked:**
+1. **pm2-crash-watcher** — blocked all week; no fleet data produced on any day
+2. **debugger-agent (am-recrawl)** — assigned Monday through Sunday, zero commits; enrichment pipeline remains cold
+3. **george-gmail credential agent** — four days without token rotation on the highest-risk mail credential in the stack ⚠️
+
+---
+
+## 3. Inventory of Unfinished
+
+Items carrying more than 7 days of age with no resolution:
+
+- **PM2 access** — root blocker for the entire fleet. Has been the lead carryover item for five consecutive daily meetings. Not a Claude-resolvable item; requires Steve directly.
+- **george-gmail OAuth rotation** — overdue by at least five days. Every day this sits is a window for a quiet auth failure on outbound mail.
+- **am-recrawl pipeline** — stopped, 90-restart history, no diagnosis committed. Has been "diagnose or decommission" for multiple meeting cycles with no decision.
+- **lawyers/doctors platform decision** — `apply-templates.js` is 35h old with no follow-on. The doctor mockup pipeline is ready; the decision doc that would greenlight monetization/launch has not been committed. This is now blocking both directories from moving forward.
+
+No open TODO.md items surfaced beyond a bare FashionCrawler entry with no content.
+
+---
+
+## 4. Designer-Wallcoverings Ops Items
+
+DW catalog quiet this week — focus was entirely elsewhere.
+
+No vendor imports (Brewster, York, Schumacher, etc.) are reflected in the git log for the last 7 days. No pricing inconsistencies or image-gap surfacing is visible in the commit record. SKU count direction cannot be verified while PM2 is down and no DW scraper commits landed.
+
+⚠️ This is two consecutive quiet weeks on the DW catalog side. If scraper PM2 processes are silently stopped, the ingest pipeline may be falling behind without surfacing in the meeting logs.
+
+---
+
+## 5. Strategic Prompt for Next Week
+
+Steve — `apply-templates.js` is committed and the doctor directory has deterministic mockup rotation, the lawyer dashboard has real counters, and the wiki-lawyers importer is wired in. Both directories are within one decision doc of having a shippable pitch funnel. The pattern has been: build → build → build → defer the decision → repeat. **Is next week the week you commit the platform doc — scope, pricing, launch sequence, database separation rule confirmed — so the doctor and lawyer agents have an actual mandate to execute against, or does something else come first?**
diff --git a/meetings/2026-05-04_090001-morning.md b/meetings/2026-05-04_090001-morning.md
new file mode 100644
index 0000000..b85aa0d
--- /dev/null
+++ b/meetings/2026-05-04_090001-morning.md
@@ -0,0 +1,49 @@
+# DW Morning Stand-Up — Mon 2026-05-04 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+- ⏳ **PM2 access** — still down, five consecutive meetings. Fleet visibility zero. Steve must act directly.
+- ⏳ **george-gmail OAuth rotation** — now 5+ days overdue. Auth failure risk on outbound mail is real and growing.
+- ⏳ **am-recrawl pipeline** — no diagnosis committed. Still "diagnose or decommission."
+- ⏳ **Platform decision doc** — `apply-templates.js` is now 2+ days old with no follow-on. Doctor + lawyer directories are stalled waiting for a greenlight.
+
+---
+
+## 2. Overnight (last 12 hours)
+
+**Crashes / instability:** PM2 not available — fleet status unknown for the sixth consecutive morning.
+
+**Long-running jobs:**
+- **lawyer-directory-builder** is active and running hard — Iter 42 landed 15 min ago: OG tags, Twitter cards, JSON-LD structured data, canonical links. Productive overnight.
+- **animals** — yolo iter 1 trivial patches committed 40 min ago. Minor cleanup only.
+- A wave of `[overnight] pre-debate baseline` commits landed across ~15 repos (Hormuzy, Ken, bankrupt-leads, bubbesblock, claimmyaddress, jill-website, malden-house, resize-it, secrets-manager, session-debrief, site-factory, small-business-builder, trademarks-copyright, wholivedthere, yolo-agent). These look like a yolo/debate-ring pre-run snapshot — not functional changes.
+
+**External signals:** No collaborator commits. Codex quota not visible.
+
+---
+
+## 3. Today's Plan + Agent Assignments
+
+- `Steve — restore PM2 access — six-day blocker, entire fleet is blind — pm2 list returns data`
+- `Steve — rotate george-gmail OAuth token — five-day overdue credential risk — new token confirmed active in secrets-manager`
+- `lawyer-build-agent — continue SEO/landing push (Iter 43+) — momentum is high, iter 42 just landed — canonical + structured data live on all pages`
+- `Steve — decide: write or greenlight the platform decision doc for lawyer + doctor directories — both pipelines are blocked on mandate — doc committed or decision explicitly deferred with a date`
+- `am-recrawl — diagnose or formally decommission — 90-restart history, no progress, consuming attention — one of: root cause committed, or process removed from rotation`
+- `doctor-agent — run apply-templates.js against a sample batch — validate deterministic rotation before full pipeline run — N mockups generated without collision`
+
+---
+
+## 4. Blockers & Decisions Steve Owes
+
+- **PM2 restore** — not delegatable. Nothing else changes until this is resolved.
+- **george-gmail credential rotation** — personal action required; no agent can do this safely without a fresh OAuth flow.
+- **Platform doc sign-off** — lawyer + doctor agents are ready and waiting. Without a scope/pricing/launch doc, they're building without a mandate.
+- **am-recrawl: go or kill** — a six-day non-decision is still a decision to keep a broken process running.
+
+---
+
+## 5. One Thing to Think About
+
+The debate-ring/yolo system pre-baselining 15 repos overnight is a real pattern now — is that pipeline producing signal worth reviewing, or is it generating noise commits across the project list that make the git log harder to read?
diff --git a/meetings/2026-05-04_170001-evening.md b/meetings/2026-05-04_170001-evening.md
new file mode 100644
index 0000000..ab9ad7f
--- /dev/null
+++ b/meetings/2026-05-04_170001-evening.md
@@ -0,0 +1,49 @@
+# DW Evening Stand-Up — Mon 2026-05-04 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+- `❌ skipped` **PM2 restore** — no evidence of resolution; fleet still blind, day six.
+- `❌ skipped` **george-gmail OAuth rotation** — no rotation committed; credential risk now six days running.
+- `✅ landed` **lawyer-build-agent SEO push** — Iter 45 committed ~10:00am: robots.txt, sitemap.xml, favicon (4 formats). Morning was Iter 42; three iterations shipped today.
+- `❌ skipped` **Platform decision doc** — professional-directory last commit 2 days ago; no greenlight or doc.
+- `❌ skipped` **am-recrawl: diagnose or kill** — no related commits; process still running undiagnosed.
+- `❌ skipped` **doctor-agent apply-templates.js sample run** — no commits to professional-directory today.
+- `🆕 emerged` **morning-review agent patches** — three repos patched ~13:00 PDT without being on the plan.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- `lawyer-directory-builder` — Iter 45: robots.txt + sitemap.xml + favicon 4× formats — landed ~10am; active and healthy
+- `animals (morning-review)` — escape biz fields, validate website href, fix font URL — committed ~13:00 PDT
+- `debate-ring-viewer (morning-review)` — cache /demo.mp4, harden avatar SVG injection — committed ~13:00 PDT
+- `small-business-builder (morning-review)` — gate interview admin, whitelist QA keys — committed ~13:00 PDT
+- All other agents — idle; no post-baseline commits observed
+
+---
+
+## 3. Production Health
+
+- ⚠️ PM2 unavailable — day six; no crash data, restart counts, or errored-agent visibility.
+- ⚠️ george-gmail OAuth — unrotated; outbound mail auth failure risk is now material.
+- No confirmed crashes (can't verify without PM2).
+- No security incidents or credential scares beyond the ongoing george-gmail deferral.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **Steve: PM2 restore** — not delegatable; nothing else changes until done.
+2. **Steve: george-gmail OAuth rotation** — six days overdue; do this before any morning meeting action items.
+3. **Steve: platform decision doc or explicit deferral date** — lawyer-build-agent is healthy and ready for a mandate; doctor-agent is waiting on apply-templates.js sign-off.
+4. **am-recrawl: kill or diagnose** — still consuming attention with no outcome.
+
+Overnight: lawyer-directory-builder will likely push Iter 46+ autonomously; no intervention needed there.
+
+---
+
+## 5. The Day's Takeaway
+
+Lawyer builder is the only thing shipping; four Steve-owned blockers entered the day unresolved and exit the same way.
diff --git a/meetings/2026-05-05_090004-morning.md b/meetings/2026-05-05_090004-morning.md
new file mode 100644
index 0000000..55943ed
--- /dev/null
+++ b/meetings/2026-05-05_090004-morning.md
@@ -0,0 +1,94 @@
+# Meeting failed — claude CLI returned non-zero
+
+See /Users/stevestudio2/Projects/claude-codex-meeting/logs/claude.err for details.
+
+Context bundle:
+## Meeting context — morning — Tue 2026-05-05 09:00 PDT
+
+### Last meeting carryover
+# DW Evening Stand-Up — Mon 2026-05-04 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+- `❌ skipped` **PM2 restore** — no evidence of resolution; fleet still blind, day six.
+- `❌ skipped` **george-gmail OAuth rotation** — no rotation committed; credential risk now six days running.
+- `✅ landed` **lawyer-build-agent SEO push** — Iter 45 committed ~10:00am: robots.txt, sitemap.xml, favicon (4 formats). Morning was Iter 42; three iterations shipped today.
+- `❌ skipped` **Platform decision doc** — professional-directory last commit 2 days ago; no greenlight or doc.
+- `❌ skipped` **am-recrawl: diagnose or kill** — no related commits; process still running undiagnosed.
+- `❌ skipped` **doctor-agent apply-templates.js sample run** — no commits to professional-directory today.
+- `🆕 emerged` **morning-review agent patches** — three repos patched ~13:00 PDT without being on the plan.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- `lawyer-directory-builder` — Iter 45: robots.txt + sitemap.xml + favicon 4× formats — landed ~10am; active and healthy
+- `animals (morning-review)` — escape biz fields, validate website href, fix font URL — committed ~13:00 PDT
+- `debate-ring-viewer (morning-review)` — cache /demo.mp4, harden avatar SVG injection — committed ~13:00 PDT
+- `small-business-builder (morning-review)` — gate interview admin, whitelist QA keys — committed ~13:00 PDT
+- All other agents — idle; no post-baseline commits observed
+
+---
+
+## 3. Production Health
+
+- ⚠️ PM2 unavailable — day six; no crash data, restart counts, or errored-agent visibility.
+- ⚠️ george-gmail OAuth — unrotated; outbound mail auth failure risk is now material.
+- No confirmed crashes (can't verify without PM2).
+- No security incidents or credential scares beyond the ongoing george-gmail deferral.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **Steve: PM2 restore** — not delegatable; nothing else changes until done.
+2. **Steve: george-gmail OAuth rotation** — six days overdue; do this before any morning meeting action items.
+3. **Steve: platform decision doc or explicit deferral date** — lawyer-build-agent is healthy and ready for a mandate; doctor-agent is waiting on apply-templates.js sign-off.
+4. **am-recrawl: kill or diagnose** — still consuming attention with no outcome.
+
+Overnight: lawyer-directory-builder will likely push Iter 46+ autonomously; no intervention needed there.
+
+---
+
+## 5. The Day's Takeaway
+
+Lawyer builder is the only thing shipping; four Steve-owned blockers entered the day unresolved and exit the same way.
+
+### PM2 fleet status (top 30)
+_pm2 not available_
+
+### Crashed/unstable agents (last 24h, restart_time>3 OR errored)
+
+### Recent git activity across ~/Projects
+- Bertha: 6 weeks ago — chore(next): update 1 file (no-ext) [-4846]
+- Forza: 12 days ago — diary: add ch 10 (writing diary) + ch 11 (George Workspace expansion)
+- Hormuzy: 31 hours ago — [overnight] pre-debate baseline
+- Ken: 29 hours ago — [overnight] pre-debate baseline
+- VictoryStays: 8 days ago — Deep Dive Agent + Roxbury Drive · 230 individual home pages with claim flow
+- animals: 20 hours ago — [morning-review] animals: escape biz fields, validate website href, fix font URL +
+- bankrupt-leads: 33 hours ago — [overnight] pre-debate baseline
+- bubbesblock: 26 hours ago — [overnight] pre-debate baseline
+- claimmyaddress: 26 hours ago — [overnight] pre-debate baseline
+- claude-codex-meeting: 4 days ago — fix(email): convert markdown→HTML so Gmail renders properly + codex P2 fallback
+- debate-ring-viewer: 20 hours ago — [morning-review] debate-ring-viewer: cache /demo.mp4, harden avatar SVG injection,
+- jill-website: 27 hours ago — [overnight] pre-debate baseline
+- lawyer-directory-builder: 23 hours ago — Iter 45: SEO essentials — robots.txt, sitemap.xml, favicon (4× formats)
+- malden-house: 28 hours ago — [overnight] pre-debate baseline
+- professional-directory: 3 days ago — add apply-templates.js — deterministic mockup template-rotation
+- resize-it: 31 hours ago — [overnight] pre-debate baseline
+- secrets-manager: 31 hours ago — [overnight] pre-debate baseline
+- session-debrief: 33 hours ago — [overnight-yolo] initial state
+- site-factory: 32 hours ago — [overnight] pre-debate baseline
+- small-business-builder: 11 hours ago — deploy: ship smb-builder to Kamatera + capture full schema in migrations 002-008
+- stayclaim: 27 hours ago — [overnight] pre-debate baseline
+- the-ai-factory: 32 hours ago — [overnight] pre-debate baseline
+- trademarks-copyright: 30 hours ago — [overnight] pre-debate baseline
+- ventura-corridor: 2 hours ago — Ship v1 public · UI-agent fixes + screenshot billboards + wall + cam tune
+- visual-factory: 4 days ago — fix(ssrf): IPv6 reserved-range blocklist now catches in-range forms (codex P2)
+- wholivedthere: 27 hours ago — [overnight] pre-debate baseline
+- yolo-agent: 30 hours ago — [overnight] pre-debate baseline
+
+### Open TODO.md across projects (top 30 lines total)
+- FashionCrawler:
diff --git a/meetings/2026-05-05_120029-morning.md b/meetings/2026-05-05_120029-morning.md
new file mode 100644
index 0000000..c0d4733
--- /dev/null
+++ b/meetings/2026-05-05_120029-morning.md
@@ -0,0 +1,54 @@
+# DW Morning Stand-Up — Tue 2026-05-05 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+1. ⏳ **Steve: PM2 restore** — Now resolved (PM2 data visible in context). Still flag: george-gmail at 4 restarts.
+2. ⏳ **Steve: george-gmail OAuth rotation** — 7 days overdue. george-gmail shows restarts=4 in current fleet. This is today's first action.
+3. ⏳ **Steve: platform decision doc** — lawyer-build-agent healthy at Iter 45; doctor apply-templates.js still ungreenlighted.
+4. ⏳ **am-recrawl: kill or diagnose** — no resolution; no am-recrawl visible in PM2 fleet (may have died or was killed without note).
+
+---
+
+## 2. Overnight
+
+**Crashes / instability:**
+- `ventura-corridor` — restarts=13 ⚠️ — most unstable process in fleet; shipped v1 5 hours ago, suggesting crash loop post-deploy.
+- `commerce-claw` — restarts=7 — abnormal; no recent commits to explain it.
+- `sf-viewer` — restarts=5 — Site Factory viewer flapping; sf-orchestrator is stable.
+- `george-gmail`, `site-wholivedthere`, `ai-factory-orchestrator`, `archive-agent`, `retrowalls` — all at restarts=4.
+
+**Long-running jobs:**
+- `small-business-builder` — deployed to Kamatera 14h ago with full schema migrations 002-008. Confirm live.
+- `ventura-corridor` — v1 shipped 5h ago; currently crashing. Needs immediate triage.
+- `pd-crawler` / `pd-dedupe` — both at restarts=3, uptime=18h (new restart cycle overnight). Doctor pipeline active.
+- `ai-factory-viewer` — uptime=1h indicates a very recent restart.
+
+**External signals:** No collaborator commits. All activity is Steve's own agents.
+
+---
+
+## 3. Today's Plan
+
+1. `Steve — rotate george-gmail OAuth credentials — 7 days overdue, restarts=4 signals auth churn — outbound mail verified sending`
+2. `debugger — triage ventura-corridor crash loop (restarts=13, v1 shipped 5h ago) — likely post-deploy startup error — process stable with restarts=0 for 30min`
+3. `debugger — investigate commerce-claw restarts=7 — no commits, unclear cause — root cause identified + fix or kill decision`
+4. `Steve — greenlight doctor apply-templates.js sample run — apply-templates.js merged 3 days ago, no sign-off yet — explicit go/no-go stated`
+5. `lawyer-build-agent — continue Iter 46+ autonomously — no intervention needed — monitor commit cadence`
+6. `pm2-crash-watcher — audit sf-viewer, site-wholivedthere, ai-factory-orchestrator (all restarts=4) for shared root cause — three independent restarts is suspicious — single upstream dependency or config identified`
+
+---
+
+## 4. Blockers Steve Owes
+
+- **george-gmail OAuth rotation** — nothing blocks execution except Steve doing it.
+- **Doctor platform go/no-go** — apply-templates.js is merged; no greenlight = no production mockup rotation.
+- **commerce-claw + archive-agent** — unknown what these serve; no README or commit context. Steve needs to ID them or authorize kill.
+- **ventura-corridor v1** — just shipped; crash loop may need Steve's eyes on the deploy config.
+
+---
+
+## 5. One Thing to Think About
+
+ventura-corridor hit restarts=13 within 5 hours of v1 launch — that's a crash loop, not a flap. Before any other new site launches (smb-builder just deployed too), is there a common startup pattern (missing env var, port collision, missing DB migration) that's repeating across new deploys?
diff --git a/meetings/2026-05-05_170004-evening.md b/meetings/2026-05-05_170004-evening.md
new file mode 100644
index 0000000..bb011e8
--- /dev/null
+++ b/meetings/2026-05-05_170004-evening.md
@@ -0,0 +1,57 @@
+# DW Evening Stand-Up — Tue 2026-05-05 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+1. 🟨 **george-gmail OAuth rotation** — restarts climbed from 4 → 9 with a mid-day restart (uptime=4h). No credential rotation landed. Still churning.
+2. 🟨 **ventura-corridor crash triage** — restarts climbed 13 → 20. Still in crash loop. No stabilization commit visible.
+3. 🟨 **commerce-claw investigation** — restarts climbed 7 → 11. No root-cause commit or kill decision recorded.
+4. ❌ **Doctor apply-templates.js greenlight** — no activity on professional-directory today. Still awaiting Steve sign-off.
+5. ❌ **Lawyer Iter 46+** — last commit was Iter 45 (31h ago, pre-plan). No new iteration today. Autonomous build appears paused.
+6. ❌ **PM2 audit (sf-viewer / site-wholivedthere / ai-factory-orchestrator)** — no evidence of shared root-cause investigation.
+7. 🆕 **animals agent fixes** — escape biz fields, validate website href, fix font URL (commit 28h ago, landed this morning).
+8. 🆕 **debate-ring-viewer hardening** — cache /demo.mp4, harden avatar SVG injection (commit 28h ago).
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- `ventura-corridor` — shipped v1 public (UI-agent fixes, screenshot billboards, cam tune) 10h ago — deploy landed but crash loop ongoing (restarts=20)
+- `small-business-builder` — deployed to Kamatera 19h ago with migrations 002–008 — confirm live status still needed
+- `animals-ingest` — biz field escaping + font fix merged 28h ago — running, restarts=1
+- `debate-ring-viewer` — avatar SVG hardening committed 28h ago — process not visible in top-30 PM2 fleet
+- `lawyer-directory-builder` — idle today; Iter 45 SEO commit was 31h ago (pre-plan period)
+- `pd-crawler / pd-dedupe` — active, restarts=3/2 uptime=23h — doctor pipeline ticking
+- `george-gmail` — online but churning (restarts=9, uptime=4h) — no rotation performed
+- All Norma social agents — stable, restarts=1–2 across board
+- `sf-orchestrator` — stable restarts=0; `sf-viewer` still flapping at restarts=5
+
+---
+
+## 3. Production Health
+
+⚠️ **Active crash loops requiring attention tomorrow:**
+- `ventura-corridor` — restarts=20 (up from 13 this morning); v1 deploy is the likely trigger
+- `commerce-claw` — restarts=11 (up from 7); cause still unknown
+- `george-gmail` — restarts=9; mid-day restart didn't hold; OAuth rotation is overdue
+- `claude-email-responder` — restarts=6; no prior flag, no commits explaining it
+- `national-paper-hangers` — restarts=4; no context on what this serves
+
+No security rotations completed. No new errored (stopped) agents.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **george-gmail OAuth rotation** — 8 days overdue; restarts=9 means it's actively failing. Steve must do this first.
+2. **ventura-corridor crash loop** — restarts=20 and climbing. Needs log triage before anything else ships to Kamatera. Check for missing env var or port collision pattern — smb-builder just deployed to same host.
+3. **Doctor apply-templates.js go/no-go** — merged 4 days ago, no sign-off. Lawyer Iter 46 also stalled. Both directories need Steve's explicit greenlight to resume.
+
+Overnight: no scheduled scrapes flagged. Pre-debate baselines already committed across most projects.
+
+---
+
+## 5. The Day's Takeaway
+
+Crash loops worsened across the board and none of today's triage items resolved — tomorrow opens with the same three blockers Steve walked in with this morning.
diff --git a/meetings/2026-05-06_090005-morning.md b/meetings/2026-05-06_090005-morning.md
new file mode 100644
index 0000000..c2821d6
--- /dev/null
+++ b/meetings/2026-05-06_090005-morning.md
@@ -0,0 +1,56 @@
+# DW Morning Stand-Up — Wed 2026-05-06 09:00 PDT
+
+---
+
+## 1. Carryover
+
+1. ⏳ **george-gmail OAuth rotation** — restarts climbed 9 → 12, uptime now 1h. No rotation landed overnight. Actively failing.
+2. ⏳ **ventura-corridor crash loop** — restarts 20 → 44 overnight. Got significantly worse, not better.
+3. ⏳ **Doctor apply-templates.js go/no-go** — 4 days since merge, no Steve sign-off. Lawyer Iter 46 also stalled behind same gate.
+4. ⏳ **commerce-claw root cause** — restarts 11 → 39. Still uninvestigated.
+
+---
+
+## 2. Overnight
+
+**Crashes / instability — fleet is NOT stable:**
+
+The most important new signal: **8 wallpaper-niche sites all sitting at exactly 18 restarts** (agedwallpaper, textilewallpaper, pastelwallpaper, mylarwallpaper, architecturalwallcoverings, glitterwalls, greenwallcoverings, silkwallcoverings). Identical counts = shared root cause — likely a common module, shared Kamatera port block, or single broken dependency. This is one problem, not eight.
+
+- `ventura-corridor` — 44 restarts (up from 20). smb-builder deployed to same Kamatera host 35h ago — port collision is still the lead suspect.
+- `commerce-claw` — 39 restarts (up from 11). Cause still unknown.
+- `national-paper-hangers` — 34 restarts (up from 4). Steep overnight climb, no prior context.
+- `smb-builder` — 23 restarts. Fresh Kamatera deploy 35h ago, now crashing — migrations 002–008 may have a runtime issue.
+- `george-gmail` — 12 restarts, 1h uptime. OAuth token expiry.
+- `dw-universe` — 11 restarts. No prior flag; needs log check.
+- `fleet-tv` — 8 restarts. No prior flag.
+
+**Long-running jobs:** No overnight scrapes flagged. pd-crawler/pd-dedupe ticking normally (restarts=3/2). Pre-debate baselines committed across most projects 2 days ago — no new overnight ingest activity visible.
+
+**External signals:** `business-claw` committed 43 min ago ("Launch comms drafts + og-cover.png raster + linter brand polish") — active work in progress right now.
+
+---
+
+## 3. Today's Plan
+
+1. `Steve` — rotate george-gmail OAuth credentials — 12 restarts/1h uptime = actively broken, blocks email functions — success: restarts reset, uptime holds >2h
+2. `debugger-agent` — triage the 8-site wallpaper cluster (agedwallpaper + 7 peers) for shared root cause — identical restart counts = one fix needed — identify common dependency or port conflict, single commit resolves all 8
+3. `debugger-agent` — check smb-builder crash logs vs ventura-corridor for port collision on Kamatera — both deployed to same host in last 36h — one has to yield its port or be reconfigured
+4. `commerce-claw` + `national-paper-hangers` — pull error logs for both — national-paper-hangers jumped 4 → 34 overnight which is alarming for an uncontextualized service — identify what it serves before deciding kill vs fix
+5. `Steve` — greenlight or defer Doctor apply-templates.js — 4 days blocked, pd-crawler is ticking and building content with no template rotation — yes/no in 5 min
+6. `Steve` — Gemini key rotation (two keys in open TODOs) — both were hardcoded across prod files — paste via `/secrets` after george-gmail is stable
+
+---
+
+## 4. Blockers Steve Owes
+
+- **george-gmail OAuth** — no agent can rotate this; needs Steve's Google account access
+- **Doctor apply-templates.js go/no-go** — blocking lawyer Iter 46 and doctor pipeline advancement
+- **Gemini key #1 and #2** — minting blocked on Steve; rotation runbook is ready
+- **PG dw_admin password** — Lane A runbook is at `~/Projects/_shared/docs/pg-rotation-runbook.md` (32 min), waiting for Steve's 32 minutes
+
+---
+
+## 5. One Thing to Think About
+
+Eight wallpaper-niche sites crashed to identical restart counts overnight — if they share a process manager config or a single npm dependency that broke, one fix resolves all eight. But if they're actually separate Kamatera instances and this is a resource-starvation signal, the fleet may be hitting a ceiling. Worth knowing which before adding any more niche sites.
diff --git a/meetings/2026-05-06_170005-evening.md b/meetings/2026-05-06_170005-evening.md
new file mode 100644
index 0000000..9551daf
--- /dev/null
+++ b/meetings/2026-05-06_170005-evening.md
@@ -0,0 +1,49 @@
+---
+
+# DW Evening Stand-Up — Wed 2026-05-06 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+1. 🟨 **george-gmail OAuth rotation** — no explicit rotation landed (no git commit), but uptime climbed from 1h → 9h and restart count held at 12 (no new crashes today). Process appears to have stabilized via restart. OAuth token is still expiring; a proper rotation is still Steve's blocker.
+2. ❌ **8-site wallpaper cluster triage** — no commits to any of the 8 sites. Counts crept from 18 → 18–19. Root cause still unidentified.
+3. ❌ **smb-builder/ventura-corridor port collision** — no commits for either. ventura-corridor counter appears reset and re-accumulated to 27. No resolution.
+4. 🟨 **commerce-claw/national-paper-hangers log pull** — NationalPaperHangers got a fix 20 min ago (see §2). commerce-claw still untouched.
+5. ❌ **Doctor apply-templates.js go/no-go** — no sign-off. Now 5 days blocked.
+6. ❌ **Gemini key #1 and #2 rotation** — still open in `_shared/TODO.md`. Not touched.
+7. 🆕 **Gitify sweep** — ~20 projects received `initial snapshot` commits ~7h ago, covering 1800s–1980s wallpaper sites, AgentAbrams, ClawCoder, Designer-Wallcoverings, FashionCrawler, Freddy, Grant, Hub, IWasCute, Letsbegin, NEW-SKU-Viewer, Norma, Patty, PoppyPetitions, SDCC-Stories, and others.
+
+---
+
+## 2. What Agents Actually Did Today
+
+- `NationalPaperHangers` — fix: /admin/template flash double-clear (route reading null after global middleware) — landed 20 min ago; restarts reset to 7 and stable
+- `gitify-all sweep` — initial snapshots committed for ~20 untracked projects — CLAUDE.md compliance complete for this batch
+- `george-gmail` — idle (no commits); process auto-restarted at some point and held for 9h — not a fix, just a quiet stretch
+- All other agents — idle, no commits
+
+---
+
+## 3. Production Health
+
+- **New crashers since this morning:** dw-collections-viewer (19 restarts), ventura-claw (18), claude-control-center (13) — none were on today's radar; need log checks tomorrow
+- **Degraded and climbing:** dw-universe (11 → 15), fleet-tv (8 → 14), george-gmail stable at 12
+- **ventura-corridor:** counter appears reset, re-accumulated 27 — no fix landed
+- **Wallpaper cluster (8 sites):** agedwallpaper + silkwallcoverings ticked to 19; rest still at 18 — zero investigation progress
+
+---
+
+## 4. Carryover into Tomorrow
+
+1. ⚠️ **george-gmail OAuth** — Steve must rotate. Nine hours of quiet doesn't mean fixed; next crash resets the clock.
+2. ⚠️ **Wallpaper 8-site cluster + new crashers** — dw-collections-viewer (19), ventura-claw (18), claude-control-center (13) now join the list; triage the shared root cause across all of them.
+3. ⚠️ **Doctor apply-templates.js** — 5 days blocked; lawyer Iter 46 behind it. Steve owes a yes/no.
+4. ⚠️ **Gemini keys + PG dw_admin rotation** — runbooks are ready, only Steve's 32 minutes needed.
+5. Freddy port rotation — soak window (24–48h after Patty) expires by tomorrow evening; OK to proceed on 2026-05-07.
+
+---
+
+## 5. The Day's Takeaway
+
+The gitify sweep was the day's real output; every planned crash fix and credential rotation was deferred, and three new crashers appeared by evening.
diff --git a/meetings/2026-05-07_090002-morning.md b/meetings/2026-05-07_090002-morning.md
new file mode 100644
index 0000000..0e9e64d
--- /dev/null
+++ b/meetings/2026-05-07_090002-morning.md
@@ -0,0 +1,51 @@
+# DW Morning Stand-Up — Thu 2026-05-07 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+1. ⏳ **george-gmail OAuth rotation** — still unrotated. Restart count: 12. Quiet stretch was process luck, not a fix. Next crash resets the clock.
+2. ⏳ **Doctor apply-templates.js go/no-go** — 5+ days blocked on Steve's yes/no. Lawyer Iter 46 is behind it.
+3. ⏳ **Gemini key #1 + #2 + PG dw_admin rotation** — runbooks ready, 32 min of Steve's time needed. Not touched.
+4. ⏳ **Wallpaper cluster crashes** — overnight data shows the problem is much larger than 8 sites. See §2.
+
+---
+
+## 2. Overnight (Last 12 Hours)
+
+**Crashes / instability** — fleet is not stable.
+
+- `ventura-claw` (30 restarts), `ventura-claw-leads` (44), `ventura-corridor` (87) — these are the worst on the board; no fix has landed.
+- `agedwallpaper`, `pastelwallpaper`, `mylarwallpaper`, `architecturalwallcoverings`, `greenwallcoverings`, `glitterwalls` — all at 21–22 restarts. The wallpaper cluster is 30+ sites crashing, not 8. This is a fleet-wide pattern, not site-specific bugs.
+- `dw-collections-viewer` (29), `dw-universe` (15), `fleet-tv` (14), `claude-control-center` (13) — non-wallpaper crashers added to the pile.
+- `national-paper-hangers` (11) — fix landed last night (route/middleware null read); appears stabilized but restart count is still elevated.
+
+**Long-running jobs** — `graphic-loop` passes 5–8 ran overnight across the decade wallpaper sites (1930s–1980s). All show commits 15 min–11 hours ago; Josefin Sans / Playfair Display / Bungee Shade theme-fit corrections are landing. Pipeline is active and progressing.
+
+**External signals** — no remote collaborator commits. NationalPaperHangers got e2e regression test additions 15 min ago (sitemap + robots.txt checks). All other git activity is local agent work.
+
+---
+
+## 3. Today's Plan + Agent Assignments
+
+1. `pm2-crash-watcher` — pull logs for ventura-claw + ventura-corridor to identify root cause — restarts at 87/44/30 suggest a shared dependency or config issue, not random failures — error pattern identified (specific exception or missing env var)
+2. `debugger-agent` — check if wallpaper cluster (30+ sites) shares a single server.js / PM2 config entry point — a single broken dependency would explain fleet-wide simultaneous restart counts — confirm shared vs. independent process trees
+3. `Steve` — yes/no on Doctor apply-templates.js — 5 days blocked; lawyer directory Iter 46 is also gated — one decision unblocks two pipelines
+4. `Steve` — run george-gmail OAuth rotation (10 min) — 12 restarts means the token has already expired and re-requested at least a dozen times — token rotated and restart count resets
+5. `Freddy-port agent` — proceed with Freddy port rotation (soak window expired by tonight) — `_shared/TODO.md` says OK after 2026-05-07 evening — `rotate-pg-scoped.sh` completes without error
+6. `graphic-loop` — continue passes on remaining decade sites — pipeline is clearly working; let it run — all decade sites show pass 8+ commits
+
+---
+
+## 4. Blockers & Decisions Steve Owes
+
+- **Doctor apply-templates.js** — yes/no. Every day of delay is a day lawyer Iter 46 doesn't run.
+- **george-gmail OAuth** — token rotation requires Steve's hands; can't be delegated. 10 minutes.
+- **Gemini key #1 + #2 rotation** — paste via `/secrets`; runbook is ready. ~32 min total with PG dw_admin.
+- **ventura-claw / ventura-corridor root cause** — decision needed: kill and rebuild vs. debug in place. 87 restarts suggests rebuild may be faster than log archaeology.
+
+---
+
+## 5. One Thing to Think About
+
+The wallpaper cluster has grown from 8 sites to 30+, all crashing at similar restart counts. This looks less like per-site bugs and more like a shared infrastructure failure — same Node version, same PM2 config block, same missing env var, or a shared dependency that broke. Before spending time on individual site fixes, is there a single shared `server.js` template these all fork from? If yes, one fix propagates to all 30.
diff --git a/meetings/2026-05-07_170001-evening.md b/meetings/2026-05-07_170001-evening.md
new file mode 100644
index 0000000..501295a
--- /dev/null
+++ b/meetings/2026-05-07_170001-evening.md
@@ -0,0 +1,51 @@
+# DW Evening Stand-Up — Thu 2026-05-07 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+| # | Item | Status |
+|---|------|--------|
+| 1 | pm2-crash-watcher pull ventura logs | ❌ skipped — no commits or log output found |
+| 2 | debugger-agent check shared wallpaper server.js | ❌ skipped — no commits, root cause still unknown |
+| 3 | Steve: Doctor apply-templates.js yes/no | ❌ skipped — 6 days blocked now; lawyer Iter 46 still gated |
+| 4 | Steve: george-gmail OAuth rotation | ❌ skipped — george-gmail still at 12 restarts, token unrotated |
+| 5 | Freddy port rotation (soak window expired tonight) | ❌ not yet run — window is open as of this meeting |
+| 6 | graphic-loop: continue decade site passes | ✅ landed — pass 12 committed across all decade sites (1800s–1980s), 4 hours ago |
+| 🆕 | .gitignore tightening across fleet | 🆕 emerged — AgentAbrams, Bertha, ClawCoder, Designer-Wallcoverings, Forza, Hormuzy, Ken, NationalPaperHangers all patched, 5 hours ago |
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- **graphic-loop** — pass 12 across all 10 decade wallpaper sites — niche keyword filter (removes off-niche products like "solid"); all committed ~4h ago
+- **.gitignore sweep agent** (identity unclear) — tightened `.gitignore` patterns on 8+ repos, untracke'd `node_modules` from Bertha — landed ~5h ago
+- **ventura-corridor / ventura-claw** — idle, no fix commits; restart count climbed from 87 → 101
+- **george-gmail** — idle on crash investigation; restarts held at 12
+- **wallpaper cluster (30+ sites)** — idle on root cause; restarts drifted up 2–5 points across the board
+
+---
+
+## 3. Production Health
+
+- ⚠️ **ventura-corridor**: 101 restarts (up from 87 at morning standup). No fix landed. Accelerating.
+- ⚠️ **Wallpaper cluster**: 30+ sites, 7–26 restarts each. Pattern unchanged — still no shared-root diagnosis. `dw-collections-viewer` (29), `dw-universe` (15), `fleet-tv` (14), `claude-control-center` (13) also elevated.
+- ⚠️ **george-gmail**: 12 restarts. Token is stale; next crash resets the window.
+- ✅ **national-paper-hangers**: Held stable since last night's route/middleware fix.
+- ✅ **graphic-loop, norma social agents, core infra**: No new crashes; stable uptime.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **Wallpaper cluster + ventura root cause** — this is the highest-risk item. 30+ sites crashing, accelerating. Morning agent must pull shared server.js diff and identify the common dependency before more restarts accumulate overnight.
+2. **Steve: george-gmail OAuth rotation + Doctor yes/no** — both require Steve's hands. george-gmail is 12 restarts and counting; Doctor blocks lawyer Iter 46 for a 6th day. These are 10 min each; neither can be delegated.
+3. **Freddy port rotation** — soak window expired tonight; `rotate-pg-scoped.sh` can run first thing tomorrow. Low risk, just needs execution.
+
+Overnight risk: ventura-corridor is accelerating (101 restarts at 5pm). Expect 130+ by morning if no fix lands tonight.
+
+---
+
+## 5. The Day's Takeaway
+
+Graphic-loop made clean progress on the decade sites, but every Steve-action item went untouched for another day and the crash fleet quietly got worse.
diff --git a/meetings/2026-05-08_090021-morning.md b/meetings/2026-05-08_090021-morning.md
new file mode 100644
index 0000000..84d9ab9
--- /dev/null
+++ b/meetings/2026-05-08_090021-morning.md
@@ -0,0 +1,54 @@
+# DW Morning Stand-Up — Fri 2026-05-08 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+⏳ **Wallpaper cluster + ventura root cause** — No fix landed overnight. ventura-corridor hit 101 restarts at 5pm; current pm2 snapshot doesn't include it (outside top 30), so count is unknown this morning.
+
+⏳ **Steve: Doctor apply-templates.js yes/no** — Day 7 blocked. Lawyer Iter 46 still gated behind this decision.
+
+⏳ **Steve: george-gmail OAuth rotation** — Was at 12 restarts at 5pm; current snapshot shows `george-gmail online restarts=0 uptime=49h`. Likely restarted clean — but token is still stale and will crash again.
+
+⏳ **Freddy port rotation** — Soak window expired Thu evening. Script is ready (`rotate-pg-scoped.sh`). No blocker except execution.
+
+---
+
+## 2. Overnight
+
+**Crashes / instability** — Current top-30 snapshot shows all listed processes at restarts=0. No errored agents visible. However, ventura-corridor is absent from the snapshot entirely — its status is unknown. ⚠️ Do not assume it's stable.
+
+**Long-running jobs** — graphic-loop pass 13 landed on 1890s–1980s sites (footer brand, FB link, OG/Twitter meta). Decade sites 1920s/1930s/1970s also received a separate "Scrub Designer Wallcoverings from products.json" pass. NationalPaperHangers got `rel=alternate` JSON + HTTP Link header. novasuede nav collapsed to hamburger across all widths.
+
+**External signals** — No remote commits from collaborators. Three open credential TODOs in `_shared`: PG `dw_admin` password, Gemini key #1, Gemini key #2 — none are rotated yet.
+
+---
+
+## 3. Today's Plan
+
+`debugger-agent` — pull ventura-corridor pm2 logs + shared `server.js` diff vs stable wallpaper sites — accelerating crash pattern needs root cause before weekend — named dependency or code path causing restarts
+
+`Steve` — rotate george-gmail OAuth token (~10 min) — token is stale; next crash resets the 49h uptime clock — process stable after rotation, restarts stay at 0
+
+`Steve` — Doctor apply-templates.js yes/no decision (~10 min) — day 7 block; lawyer Iter 46 can't advance — decision made, agent unblocked
+
+`yolo-runner or Steve` — execute Freddy port rotation via `rotate-pg-scoped.sh` — soak window expired Thu evening, no blocker — Freddy using scoped DB user, no shared-DB risk
+
+`Steve` — mint Gemini key #1 at aistudio.google.com/apikey, paste via `/secrets` — hardcoded key #1 was in 7 Patty routes; unrotated = live credential risk — routed and validated by secrets skill
+
+`graphic-loop` — continue decade site passes (pass 14) — momentum is strong; 1800s–1980s all at pass 13 — commits land on remaining gap sites
+
+---
+
+## 4. Blockers Steve Owns
+
+- **Doctor apply-templates.js** — 7-day decision block; cannot delegate
+- **george-gmail OAuth** — token rotation requires Steve's Google account
+- **Gemini key #1 + #2** — must mint fresh at aistudio.google.com; can't be scripted without Steve login
+- **PG dw_admin password** — runbook ready at `~/Projects/_shared/docs/pg-rotation-runbook.md`; 32-min window; Steve must authorize per-action
+
+---
+
+## 5. One Thing to Think About
+
+ventura-corridor was at 101 restarts at 5pm and is absent from this morning's top-30 snapshot — it may have crashed out of rotation entirely or been restarted and not yet accumulated count. The wallpaper cluster (30+ sites) has had no shared root-cause diagnosis for multiple days. If this is a shared dependency in `server.js`, the weekend is a bad time to let it compound. Is it worth a 30-minute focused agent run this morning to isolate the common failure before Steve steps away?
diff --git a/meetings/2026-05-08_170018-evening.md b/meetings/2026-05-08_170018-evening.md
new file mode 100644
index 0000000..c4fab8e
--- /dev/null
+++ b/meetings/2026-05-08_170018-evening.md
@@ -0,0 +1,49 @@
+# DW Evening Wrap-Up — Fri 2026-05-08 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+| Item | Status | Notes |
+|---|---|---|
+| debugger-agent: ventura-corridor root cause | ❌ skipped | Still absent from pm2 snapshot; no logs pulled, no diff run |
+| Steve: george-gmail OAuth rotation | ❌ skipped | Uptime now 57h (was 49h at 9am) — token aging, next crash still coming |
+| Steve: Doctor apply-templates.js decision | ❌ skipped | Day 8. Lawyer Iter 46 still gated |
+| Steve/yolo-runner: Freddy port rotation | ❌ skipped | Soak window expired Thu; script ready; no execution |
+| Steve: Gemini key #1 mint | ❌ skipped | Still open in `_shared/TODO.md` |
+| graphic-loop: pass 14 | ❌ skipped | No pass 14 commits visible; momentum stalled after overnight pass 13 |
+| 🆕 1800swallpaper favicon | 🆕 emerged | Landed ~9am; small standalone commit |
+
+Zero plan items landed. One opportunistic commit.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- **graphic-loop** — idle; no pass 14 commits; last activity was overnight pass 13 on 1890s–1980s sites
+- **george-gmail** — online, restarts=0, uptime=57h; no token rotation; stable until it isn't
+- **costa-rica** — ⚠️ 8 restarts in last 24h; only crashed agent in fleet; cause unknown
+- **All other pm2 agents** (40+) — online, restarts=0; no incidents
+
+---
+
+## 3. Production Health
+
+- **costa-rica**: 8 restarts in 24h — new instability not on this morning's radar; needs log pull Monday at latest
+- **ventura-corridor**: absent from pm2 snapshot for a second consecutive morning; status unknown; may have crashed out of rotation entirely
+- **Credentials**: PG `dw_admin`, Gemini #1, Gemini #2 all unrotated — live credential risk carries into weekend
+- **Fleet otherwise clean**: no errored agents in top-30; norma social suite, pd-* workers, sf-* stack all holding at 0 restarts
+
+---
+
+## 4. Carryover into Monday Morning
+
+1. **ventura-corridor + costa-rica** — two agents with unknown/unstable status need pm2 logs pulled before anything else Monday; the wallpaper cluster shared `server.js` root cause is now a week old
+2. **Steve-owned blockers** (all 4 still live): george-gmail OAuth, Doctor apply-templates.js decision, Gemini key #1 mint, Freddy port rotation — none can be delegated; cluster them into a 30-minute block first thing
+3. **graphic-loop pass 14** — ready to resume immediately once above blockers are cleared; no code changes needed
+
+---
+
+## 5. The Day's Takeaway
+
+Quiet Friday with zero plan items landed; the credential and ventura-corridor risks that opened the week are rolling into the weekend unresolved.
diff --git a/meetings/2026-05-09_090004-morning.md b/meetings/2026-05-09_090004-morning.md
new file mode 100644
index 0000000..fc893a0
--- /dev/null
+++ b/meetings/2026-05-09_090004-morning.md
@@ -0,0 +1,54 @@
+# DW Morning Stand-Up — Sat 2026-05-09 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+- ⏳ **ventura-corridor** — absent from pm2 snapshot for third consecutive morning; status still unknown
+- ⏳ **costa-rica** — 8 restarts Friday evening; NOT appearing in today's snapshot at all (dropped from pm2 or removed)
+- ⏳ **Steve-owned blocker cluster** — george-gmail OAuth, Doctor apply-templates.js, Gemini key #1 mint, Freddy port rotation — all four still open, none delegatable
+- ⏳ **graphic-loop pass 14** — no commits since pass 13 two days ago; momentum stalled
+
+---
+
+## 2. Overnight
+
+**Crashes / instability:** Fleet shows every agent at uptime=1h — this means a system-wide pm2 restart or machine reboot happened overnight. That's not normal and worth a quick check before treating the clean snapshot as a clean bill of health.
+
+**costa-rica** is no longer in the pm2 process list at all. Either it was removed, crashed out of supervision entirely, or wasn't brought back after the restart. This needs confirmation.
+
+**ventura-corridor** remains absent — three days now with no pm2 entry.
+
+**george-gmail** reset to uptime=1h (was 57h at 17:00 Friday). The oauth token aging risk clock has reset too, but we don't know why it restarted. That restart was either benign (pm2 reload) or a crash — can't tell from this data alone.
+
+**Long-running jobs:** No overnight scraper or ingest activity visible in git commits. animals-ingest and full-monty-agent are online but no output artifacts logged.
+
+---
+
+## 3. Today's Plan + Agent Assignments
+
+Weekend — keep scope tight; Steve owns the blockers.
+
+- `Steve` — confirm cause of overnight fleet-wide pm2 restart (1 min: `pm2 logs --lines 50`) — fleet-wide restarts are silent risk — clear or flag before anything else
+- `Steve` — confirm whether costa-rica was intentionally removed from pm2 or crashed out — restarts=8 Friday, gone Saturday — resolve ambiguity
+- `debugger-agent` — pull ventura-corridor pm2 logs and diff `server.js` against a healthy sibling — three days missing is a silent outage — root cause identified or process re-registered
+- `Steve` — Gemini key #1 mint (5 min: aistudio.google.com → paste via `/secrets`) — credential risk flagged all week — done before noon
+- `Steve` — Freddy port rotation — soak window expired Thursday; script ready — execute `rotate-pg-scoped.sh` and commit
+- `graphic-loop` — resume pass 14 on decade sites (1890s–1980s remaining) — no blockers, no code changes needed — at least 3 site commits before EOD
+- `Steve` — Doctor apply-templates.js decision — Day 8; Lawyer Iter 46 gated on this — 15 min review → yes/no
+
+---
+
+## 4. Blockers & Decisions Steve Owes
+
+- **Doctor apply-templates.js** — yes/no decision; Day 8; Lawyer pipeline halted
+- **Gemini keys #1 and #2** — mint at aistudio; 5-min task; live credential risk
+- **PG `dw_admin` password** — 32-min runbook exists; time-machine snapshots still hold the plaintext value
+- **george-gmail OAuth** — agent restarted overnight (reason unknown); rotation still pending
+- **costa-rica** — in or out of pm2? Needs a deliberate answer
+
+---
+
+## 5. One Thing to Think About
+
+The entire pm2 fleet reset to uptime=1h overnight — every agent, simultaneously. That's either a scheduled `pm2 restart all`, a machine reboot, or a supervisor crash-and-recover. If it was unplanned, it means anything that had in-memory state (session tokens, rate-limit counters, queue positions) was silently wiped. Worth knowing which before treating today's clean fleet as stable.
diff --git a/meetings/2026-05-09_170234-evening.md b/meetings/2026-05-09_170234-evening.md
new file mode 100644
index 0000000..155b0e6
--- /dev/null
+++ b/meetings/2026-05-09_170234-evening.md
@@ -0,0 +1,48 @@
+---
+
+# DW Evening Stand-Up — Sat 2026-05-09 17:02 PDT
+
+---
+
+## 1. Plan vs Reality
+
+- `❌ skipped` — **Fleet restart root cause** — no `pm2 logs` output in context; cause still unknown. Fleet has been stable at 9h uptime all day, so whatever happened was before 8am.
+- `❌ skipped` — **costa-rica confirmation** — still absent from pm2; no deliberate decision logged.
+- `❌ skipped` — **ventura-corridor debug** — no new commits to the project; three days missing, still unresolved.
+- `❌ skipped` — **Gemini key #1 mint** — open in _shared TODO; no `/secrets` activity in context.
+- `❌ skipped` — **Freddy port rotation** — soak window was clear by Thu evening; still unexecuted.
+- `❌ skipped` — **graphic-loop pass 14** — last commit to decade sites was 2 days ago (pass 13). Zero commits today.
+- `❌ skipped` — **Doctor apply-templates.js decision** — Day 8, no decision logged. Lawyer pipeline remains gated.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- **Full pm2 fleet** — online at 9h uptime across all 40 agents; restarts=0 across the board. No crashes.
+- **animals-ingest / animals-audit** — online but no output artifacts or commits visible.
+- **norma-bluesky / norma-facebook / norma-instagram / norma-twitter** — running, no activity logged.
+- **pd-crawler / pd-dedupe** — online, no commits.
+- **All other agents** — idle, no commits.
+
+---
+
+## 3. Production Health
+
+- No crashes or restarts recorded today (all agents 0 restarts, 9h uptime).
+- **ventura-corridor** — absent from pm2 for Day 3; silent outage, no fix attempted.
+- **costa-rica** — absent for Day 2; in/out decision still open.
+- **Fleet restart origin (pre-8am)** — unconfirmed; could be a cron `pm2 restart all`, reboot, or supervisor fault. Still worth a one-liner check: `pm2 logs --lines 50`.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **All seven Saturday items carry forward** — none landed. Monday morning meeting can absorb the full list as-is.
+2. **graphic-loop pass 14** — decades 1890s–1980s have zero commits since pass 13 (2026-05-07). This is the easiest win with no blockers.
+3. **Overnight** — no scheduled scrapes or digests visible in context; Sunday morning should be a clean start.
+
+---
+
+## 5. The Day's Takeaway
+
+Quiet Saturday — no commits landed, no blockers resolved; tomorrow is a full carry of the same list with graphic-loop pass 14 as the lowest-friction place to start.
diff --git a/meetings/2026-05-10_090007-morning.md b/meetings/2026-05-10_090007-morning.md
new file mode 100644
index 0000000..b55759b
--- /dev/null
+++ b/meetings/2026-05-10_090007-morning.md
@@ -0,0 +1,55 @@
+# DW Morning Stand-Up — Sun 2026-05-10 09:00 PDT
+
+---
+
+## 1. Carryover from Last Meeting
+
+- ⏳ **Doctor apply-templates.js decision** — Day 9, no decision. Lawyer pipeline remains gated. This is the oldest unresolved item.
+- ⏳ **ventura-corridor debug** — Day 4 silent outage. Not in pm2, no commits, no fix attempted.
+- ⏳ **Gemini key #1 + #2 mint** — Both still hardcoded in production files. Runbook ready, just needs Steve to visit aistudio.google.com and paste via `/secrets`.
+- ⏳ **Freddy port rotation** — Soak cleared by Thu evening. Five days elapsed, still unexecuted.
+- ✅ **graphic-loop pass 14** — Was listed as skipped yesterday; overnight commits show sort-skill UI landed across all decade sites (1800s–1980s) within the last 40 min.
+- ⏳ **costa-rica** — Still absent from pm2; in/out decision still open.
+
+---
+
+## 2. Overnight (Last 12 Hours)
+
+**Crashes / instability:**
+- `build-debrief` — **stopped**, restarts=43. This process has cycled into a crash loop and is currently down. Likely a missing env var or unresolved dependency from an overnight build.
+- `lai-server` — online but restarts=14. High restart count suggests a periodic failure (likely a timeout or upstream dependency flap).
+- `ventura-claw` — online, restarts=5. Probably tied to ventura-corridor outage.
+- `pd-crawler` — online, restarts=4. Likely hitting rate limits or an auth failure on the professional-directory crawl.
+
+**Long-running jobs:**
+- Sort-skill UI pass landed across all ten decade wallpaper sites (1800s–1980s). Looks like a clean batch.
+- `NationalPaperHangers` — Stripe plumbing scaffold committed 4 hours ago. Not yet wired end-to-end.
+- `AbramsOS` — Receipt extractor regression fixtures + heuristic fixes committed 75 min ago (tick 18, item 19).
+
+**External signals:** No remote commits from collaborators. pm2 CLI not reachable in context — fleet status drawn from crash-watcher data only.
+
+---
+
+## 3. Today's Plan + Agent Assignments
+
+- `Steve` — Decide on Doctor apply-templates.js — Day 9, lawyer pipeline fully gated — yes/no decision logged in writing
+- `debugger-agent` — Diagnose `build-debrief` crash loop (43 restarts, stopped) — unattended crash accumulating — process restarts cleanly or root cause identified in logs
+- `pm2-crash-watcher` — Deep-scan `lai-server` (14 restarts) and `ventura-claw` (5 restarts) for stuck cycles vs real failures — silent failures mask real outages — each gets a one-line cause + recommended action
+- `Steve` — Mint Gemini key #1 at aistudio.google.com, paste via `/secrets` — 7 Patty routes + 3 DW docs still have hardcoded key — key validated and fanned out
+- `Steve` — Decision on costa-rica: deliberate removal or re-add to pm2 — two days of open limbo — one-line decision logged
+- `fullstack-developer` — Complete Freddy port rotation via `rotate-pg-scoped.sh` — soak cleared Thu, five days overdue — Freddy running on new scoped DB user, no regression
+
+---
+
+## 4. Blockers & Decisions Steve Owes
+
+- **Doctor apply-templates.js** — Explicit yes/no. Every day this waits, the lawyer pipeline stays gated.
+- **Gemini keys #1 and #2** — Needs Steve at aistudio.google.com for 5 minutes. Not agent-delegatable.
+- **costa-rica** — In or out of pm2? One line.
+- **ventura-corridor** — No agent has been assigned to debug. Assign or formally defer.
+
+---
+
+## 5. One Thing to Think About
+
+`build-debrief` has 43 restarts and is down — if that process generates the nightly session-debrief videos or morning-review artifacts, those have been silently failing for a while. Worth checking whether anything downstream depends on its output before restarting blind.
diff --git a/meetings/2026-05-10_170003-evening.md b/meetings/2026-05-10_170003-evening.md
new file mode 100644
index 0000000..373845c
--- /dev/null
+++ b/meetings/2026-05-10_170003-evening.md
@@ -0,0 +1,56 @@
+# DW Evening Wrap-Up — Sun 2026-05-10 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+- `❌ skipped` — **Doctor apply-templates.js decision** — Day 9. No commit, no logged decision. Lawyer pipeline remains gated.
+- `❌ skipped` — **build-debrief crash diagnosis** — 43 restarts at morning stand-up; process absent from current pm2 fleet snapshot. No commits from a debugger-agent. Status: still down.
+- `❌ skipped` — **lai-server / ventura-claw deep-scan** — lai-server climbed from 14→15 restarts; ventura-claw from 5→9. No root-cause commits landed. Crashes are accelerating, not stabilized.
+- `❌ skipped` — **Gemini key #1 mint** — Still in _shared TODO, no evidence of paste via `/secrets`.
+- `❌ skipped` — **costa-rica decision** — Not logged anywhere. Still limbo.
+- `❌ skipped` — **Freddy port rotation** — Last Freddy commit is 4 days old. `rotate-pg-scoped.sh` not run.
+- `✅ landed` — **Sort-skill UI (graphic-loop pass 14)** — All ten decade sites (1800s–1980s) received Light→Dark / Dark→Light / Color Wheel options; commits 4–5h ago.
+- `🆕 emerged` — **AbramsOS tick 18** — Receipt extractor regression fixtures + heuristic fixes committed ~5h ago.
+- `🆕 emerged` — **HERMES demo** — Head-to-head Hermes-3-8B vs Qwen3:14b on Costa Brava brief committed 3h ago.
+- `🆕 emerged` — **NationalPaperHangers COI v0** — UX backlog item #5 (Live COI) marked shipped ~2h ago.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- `sort-skill batch` — Deployed Light→Dark / Dark→Light / Color Wheel sort modes across all ten decade wallpaper sites — clean batch, 10 commits.
+- `AbramsOS` — Receipt extractor regression fixtures + heuristic fixes (tick 18, item 19) — committed.
+- `HERMES` — LLM head-to-head demo on Costa Brava brief — committed, no production impact.
+- `NationalPaperHangers` — Live COI feature v0 shipped; agent still shows 5 restarts, watch for correlation.
+- `ventura-claw` — idle on commits, restarts climbed 5→9. No fix attempted.
+- `lai-server` — idle on commits, restarts climbed 14→15.
+- `build-debrief` — offline all day, 43+ restarts; not in current fleet. Silent failure.
+- All Norma social agents (bluesky/facebook/instagram/twitter/price) — online, 0 restarts, stable.
+- WhoLivedThere stack (site-wholivedthere, site-bubbesblock, site-claimmyaddress) — online, stable, idle.
+
+---
+
+## 3. Production Health
+
+- ⚠️ `build-debrief` — stopped, 43 restarts, missing from fleet. If this generates nightly debriefs or morning-review artifacts, those have been dark all day.
+- ⚠️ `ventura-claw` — restarts accelerating (5→9). Tied to ventura-corridor outage now in Day 5.
+- ⚠️ `lai-server` — restarts at 15, slow creep upward. Root cause unidentified.
+- `pd-crawler` — 4 restarts, likely rate-limit or auth; tolerable but worth a look Monday.
+- `national-paper-hangers` — 5 restarts alongside the COI v0 ship; may be restart-on-deploy noise.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **Doctor apply-templates.js** — Day 10. Explicit yes/no from Steve before anything else. Lawyer pipeline is fully gated on this.
+2. **build-debrief resurrection** — Identify the missing env var or broken dep; restart cleanly. Check whether morning-review artifacts have been missing all weekend.
+3. **Gemini keys #1 and #2** — Needs 5 minutes at aistudio.google.com. Not agent-delegatable.
+4. **Freddy port rotation** — Runbook is ready (`rotate-pg-scoped.sh`), soak cleared 5 days ago. Assign and execute Monday.
+5. **ventura-corridor / ventura-claw** — Assign an agent or formally defer. Day 5 of silence is too long to leave unassigned.
+
+---
+
+## 5. The Day's Takeaway
+
+Solid catalog UI work (decade sort-skill batch), but every Steve-owned decision from the morning plan went untouched — the backlog of deferred calls is now the main drag on the fleet.
diff --git a/meetings/2026-05-10_180006-sunday-digest.md b/meetings/2026-05-10_180006-sunday-digest.md
new file mode 100644
index 0000000..7598279
--- /dev/null
+++ b/meetings/2026-05-10_180006-sunday-digest.md
@@ -0,0 +1,68 @@
+# DW Overnight Digest — Sun 10 May 2026
+
+**State of the shop:** Catalog UI got a meaningful batch upgrade (decade sites + novasuede UX overhaul); agent infra has three persistent crashers that haven't been touched; and every Steve-gatekeeping decision from the morning stand-up went untouched for a second day running. The backlog of deferred calls is now the main drag heading into the week.
+
+---
+
+## 1. The Week in Commits
+
+**Site & UX**
+- `sort-skill batch` — All ten decade wallpaper sites (1800s–1980s) received Light→Dark / Dark→Light / Color Wheel sort modes in a clean parallel deploy; 10 commits across 10 repos, 5–6h ago.
+- `Designer-Wallcoverings` — Novasuede got the full UX treatment: hamburger nav at all widths, dark/light theme toggle (anti-flash + localStorage), per-color chip sampling wired to auth.agentabrams.com. Fleet UX standardization then pushed the same hamburger pattern across 7 sister sites. About 7 commits across 3 days.
+- `NationalPaperHangers` — Live COI feature v0 shipped (UX backlog item #5), and as of 21 minutes ago a public `/papers` list + `/papers/:slug` detail is live (yolo tick 2). Fast-moving project.
+
+**Agent infra / scaffold**
+- `AbramsOS` — Tick 18: receipt extractor regression fixtures + heuristic fixes committed (item 19). Steady incremental progress.
+- `HERMES` — Head-to-head Hermes-3-8B vs Qwen3:14b on Costa Brava brief committed 4h ago. Exploratory, no production impact.
+- `gitify-all` — The 2026-05-06 overnight session spun up initial scaffolds for ~10 projects (Freddy, Grant, Hub, IWasCute, Norma, Patty, etc.) and tightened `.gitignore` across AgentAbrams, ClawCoder, Ken, Bertha, Hormuzy, Forza, Letsberun. Good hygiene pass, no functional change.
+
+**Platform**
+- `_shared` — PG dw_admin rotation runbook landed (`pg-rotation-runbook.md`, 32-min procedure). The key hasn't rotated yet; the paperwork has. Gemini keys #1 and #2 are still hardcoded in 10+ routes pending mint + secrets-fan-out.
+
+---
+
+## 2. Agent Fleet — Who Earned Their Keep
+
+**Top performers this week:**
+1. **sort-skill orchestrator** — 10 commits, 10 sites, zero rollbacks. Cleanest batch of the week.
+2. **Novasuede / DW-fleet UX agent** — Hamburger nav + theme toggle + 7-site standardization; measurable UX improvement shipped.
+3. **NationalPaperHangers** — Two features (COI v0 + papers listing) in one day; most active project right now.
+4. **AbramsOS** — Consistent tick cadence; receipt extractor stabilizing.
+5. **Norma social fleet** — norma-bluesky, norma-facebook, norma-instagram, norma-twitter, norma-price all showing 0 restarts / 34h uptime. Silent and reliable.
+
+**Bottom performers:**
+1. ⚠️ **build-debrief** — 43+ restarts, fully offline, not in current fleet snapshot. If this generates morning-review artifacts, those have been dark all weekend. No one has touched it.
+2. ⚠️ **ventura-claw** — 11 restarts (was 5 at morning stand-up). Day 5 of the ventura-corridor outage with no agent assigned and no commits. Restarts are accelerating.
+3. ⚠️ **lai-server** — 15 restarts, slow creep, root cause unidentified. No commits, no fix attempted.
+
+---
+
+## 3. Inventory of Unfinished (>7 Days)
+
+These are candidates for **ship or kill** — not carryover, but decisions that have been in limbo long enough to cost attention every stand-up:
+
+- **Doctor apply-templates.js** — Day 10. The Lawyer pipeline is fully gated on this one yes/no call. Every day of silence is a day that pipeline sits idle.
+- **Freddy port rotation** — Soak cleared by 2026-05-07 (3 days ago). Runbook is `rotate-pg-scoped.sh`, freddy_app_user is already wired. This is a 15-minute execution, not a decision.
+- **PG dw_admin password** — 14 file instances scrubbed, but the literal value lives in Time Machine, Spotlight, and possibly remote history. Lane A runbook is ready and 32 minutes long. Risk is real; runbook is done; action is deferred.
+- **costa-rica** — No logged decision anywhere. Unknown scope, unknown status. Either assign it or formally kill it so it stops showing up in stand-ups.
+
+---
+
+## 4. Designer Wallcoverings Ops
+
+The week's DW work was almost entirely UX-side, not catalog-side:
+
+- **Novasuede + fleet UX** — Hamburger nav + theme toggle + 7-site standardization is the week's DW highlight. No regressions reported.
+- **Vendor imports** — No Brewster, York, Schumacher, or other vendor scrape activity in the git log this week. DW catalog was quiet on the SKU side; focus was the storefront layer.
+- **Image gaps / pricing** — No data surfaced in context this week. No standing violations reported.
+- **pd-crawler** — 4 restarts in 17h. Worth a Monday look; could be auth token expiry or rate limiting on the professional-directory side.
+
+DW catalog quiet this week — focus was on the storefront UX layer.
+
+---
+
+## 5. Strategic Prompt for Next Week
+
+Steve, the ventura-corridor has now been down for five full days with no agent assigned and restarts climbing (5 → 9 → 11). It's either a failing dependency you want to invest in fixing, or a project you've quietly deprioritized — but right now it's neither: it's just burning restarts and surfacing in every health report without resolution.
+
+**Is next week the week ventura-corridor gets a 2-hour root-cause session and either a fix or a formal sunset — or does it stay in the queue another week while NationalPaperHangers and the doctor pipeline take priority?**
diff --git a/meetings/2026-05-11_090005-morning.md b/meetings/2026-05-11_090005-morning.md
new file mode 100644
index 0000000..a6998f6
--- /dev/null
+++ b/meetings/2026-05-11_090005-morning.md
@@ -0,0 +1,53 @@
+# DW Morning Stand-Up — Mon 2026-05-11 09:00 PDT
+
+---
+
+## 1. Carryover
+
+- ⏳ **Doctor `apply-templates.js`** — Day 11. Lawyer pipeline is still gated. No commit, no decision logged.
+- ⏳ **Freddy port rotation** — Soak cleared 2026-05-07 (4 days ago). Runbook ready, 15 minutes. Still unexecuted.
+- ⏳ **PG `dw_admin` password rotation** — Runbook at `_shared/docs/pg-rotation-runbook.md` is written and ready. Value still lives in Time Machine + Spotlight. Risk persists.
+- ⏳ **Gemini keys #1 and #2** — Still hardcoded across 10+ routes. Mint + secrets fan-out pending Steve action.
+- ⏳ **Ventura-corridor** — Was 11 restarts Sunday. Not in today's pm2 snapshot at all — may have died outright. Day 6+ with no agent assigned.
+- ⏳ **costa-rica** — Still no logged scope, owner, or status.
+
+---
+
+## 2. Overnight
+
+**Crashes / instability**
+- ⚠️ **glassbeadedwallpaper** — 19 restarts, status=online (restart-looping). Likely a missing env var or broken dependency; the decade-site chip_uniform_aspect batch touched all 10 decade sites overnight but not this one — may be an unrelated config issue. Needs a log check.
+- `build-debrief` and `ventura-claw` absent from pm2 list entirely — confirm whether deliberately stopped or fell off.
+
+**Long-running jobs**
+- Decade wallpaper sites (1800s–1980s): `chip_uniform_aspect` grid refinement batch committed across all 10 repos, 7–8h ago. Appears complete — no crash signals.
+- NationalPaperHangers: `/map` address-driven near-me view shipped 11h ago (overnight yolo tick). Active project.
+
+**Fleet otherwise:** stable. Norma social fleet (bluesky/facebook/instagram/twitter/price) all at 0 restarts / 11h uptime.
+
+---
+
+## 3. Today's Plan
+
+- `Steve` — **Decide on Doctor `apply-templates.js`** — Lawyer pipeline has been idle 11 days waiting — approve the current implementation or redirect — success: a yes/no logged in the stand-up reply
+- `debugger-agent` — **Diagnose glassbeadedwallpaper (19 restarts)** — silent restart-loop is the top stability issue today — success: root cause identified, fix committed or process stopped cleanly
+- `Steve` — **Execute Freddy port rotation** — soak cleared 4 days ago, runbook is `rotate-pg-scoped.sh` — success: freddy running on new port, 0 restarts after 30 min
+- `Steve` — **Run PG `dw_admin` Lane A runbook** (32 min) — value exposed in Time Machine; risk is real — success: rotation complete, new value fan-out confirmed
+- `secrets-manager` — **Mint + route Gemini keys #1 and #2** — 10+ routes still hardcoded — success: both keys in secrets registry, fan-out to all registered destinations
+- `Steve` — **Ventura-corridor: fix or sunset** — 6+ days down, now missing from pm2 — allocate a 90-min root-cause session or formally kill it — success: decision logged, process either restarted or stopped/archived
+
+---
+
+## 4. Blockers Steve Owes
+
+- **Doctor `apply-templates.js`** yes/no — blocks lawyer pipeline entirely
+- **Ventura-corridor** — fix vs. sunset; currently consuming restarts and stand-up attention with no resolution
+- **costa-rica** — assign an owner and scope or formally kill and remove from backlog
+- **Freddy + dw_admin rotation** — both runbooks ready, both need Steve to execute (not agent-delegatable without per-action auth)
+- **Gemini key mint** — agent can route once Steve pastes the new keys from aistudio.google.com
+
+---
+
+## 5. One Thing to Think About
+
+The four open Steve-gate items (Doctor, Freddy, dw_admin, Gemini) are all runbook-ready — no research needed, no agent work pending. They've collectively shown up in four stand-ups. Is there a 90-minute window this morning to clear all four sequentially, or should we pick the one with the highest live risk (dw_admin) and block the rest until tomorrow?
diff --git a/meetings/2026-05-11_170004-evening.md b/meetings/2026-05-11_170004-evening.md
new file mode 100644
index 0000000..2ede40d
--- /dev/null
+++ b/meetings/2026-05-11_170004-evening.md
@@ -0,0 +1,51 @@
+# DW Evening Wrap-Up — Mon 2026-05-11 17:00 PDT
+
+---
+
+## 1. Plan vs Reality
+
+- `❌ skipped` **Doctor `apply-templates.js` decision** — No yes/no logged. Lawyer pipeline stays gated. Day 12.
+- `❌ skipped` **Diagnose glassbeadedwallpaper** — Restarts climbed from 19 → 20 since morning. No log check, no fix committed.
+- `❌ skipped` **Freddy port rotation** — No commits to Freddy. Runbook still sitting.
+- `❌ skipped` **PG `dw_admin` rotation** — No evidence of Lane A runbook execution. Risk persists.
+- `❌ skipped` **Gemini keys #1 and #2 mint + route** — Still hardcoded. No secrets activity.
+- `❌ skipped` **Ventura-corridor fix or sunset** — Still absent from pm2. No decision logged.
+- `🆕 emerged` **Decade wallpaper fleet (overnight carry-in)** — `chip_uniform_aspect` grid refinement committed across all 10 decade repos (1800s–1980s), completed ~15–16h ago. Landed before stand-up; no daytime follow-up needed.
+- `🆕 emerged` **NationalPaperHangers /map view (overnight carry-in)** — Address-driven near-me view shipped 19h ago. Active, 1 restart, stable.
+
+---
+
+## 2. What the Agents Actually Did Today
+
+- **decade-wallpaper fleet (10 repos)** — `chip_uniform_aspect` grid batch committed overnight; complete as of morning.
+- **NationalPaperHangers** — `/map` near-me view shipped overnight; stable at 1 restart / 18h.
+- **Norma social fleet** — idle, 0 restarts across all 5 procs (bluesky / facebook / instagram / twitter / price). Healthy.
+- **pd-crawler / pd-dedupe / site-wholivedthere / site-bubbesblock / site-claimmyaddress / animals-ingest / animals-audit** — all online, 1 restart each / 18h. Routine churn, no failures.
+- **glassbeadedwallpaper** — restart-looping all day; now at 20 restarts. No investigation executed.
+- **cncp-failure-collector / contact-mailer-ideas-viewer / cncp-failures-mockups / wallco-ai-viewer** — unstable (4–11 restarts). No action taken today.
+- **Rest of fleet (~30 procs)** — idle, 0 restarts / 19h. Healthy.
+
+---
+
+## 3. Production Health
+
+- ⚠️ **glassbeadedwallpaper** — 20 restarts, still online/looping. Undiagnosed.
+- ⚠️ **wallco-ai-viewer** — 11 restarts. Needs a log check tomorrow.
+- ⚠️ **cncp-failure-collector + contact-mailer-ideas-viewer** — 5 restarts each. Low priority but accumulating.
+- ⚠️ **cncp-failures-mockups** — 4 restarts. Same cluster as above.
+- **Ventura-corridor** — absent from pm2 for 6+ days. No action.
+- No security/cred rotations executed today. dw_admin and Gemini key exposure unchanged.
+
+---
+
+## 4. Carryover into Tomorrow Morning
+
+1. **All six plan items from today roll over unchanged.** Nothing cleared. Priority order by live risk: dw_admin rotation → Gemini keys → glassbeadedwallpaper diagnosis → Freddy port → Doctor decision → Ventura-corridor sunset.
+2. **glassbeadedwallpaper** — 20 restarts and climbing; assign a debugger-agent first thing.
+3. **Overnight scheduled jobs** — decade fleet batch is complete; watch for any scraper or digest runs that fire tonight (NationalPaperHangers, animals-ingest).
+
+---
+
+## 5. The Day's Takeaway
+
+Entirely a carry day — all six plan items sat untouched while the fleet ran on yesterday's overnight momentum; the dw_admin and Gemini exposure have now been open for five stand-ups in a row.
diff --git a/meetings/2026-05-12_090001-morning.md b/meetings/2026-05-12_090001-morning.md
new file mode 100644
index 0000000..b16014b
--- /dev/null
+++ b/meetings/2026-05-12_090001-morning.md
@@ -0,0 +1,55 @@
+# DW Morning Stand-Up — Tue 2026-05-12 09:00 PDT
+
+---
+
+## 1. Carryover
+
+⏳ **dw_admin PG rotation** — Lane A runbook ready, never executed. Exposure now spans 6+ stand-ups.
+⏳ **Gemini keys #1 and #2** — still hardcoded. No secrets activity overnight.
+⏳ **Freddy port rotation** — soak window (post-Patty 24-48h) has long passed. Runbook ready.
+⏳ **Doctor `apply-templates.js` decision** — Day 13. Lawyer pipeline still gated on Steve's yes/no.
+⏳ **glassbeadedwallpaper diagnosis** — was 20 restarts at EOD; now 35. No log investigation run.
+⏳ **Ventura-corridor sunset** — absent from pm2, no decision.
+✅ **Designer-Wallcoverings archive-guard** — landed overnight; archive-guard wired into 5 cron-driven Shopify activators (15h ago).
+
+---
+
+## 2. Overnight
+
+**Crashes / instability:**
+- ⚠️ **wallco-ai** — 72 restarts. Was 11 at evening wrap; climbed dramatically overnight. Top priority log pull this morning.
+- ⚠️ **whatsmystyle** — 32 restarts. Not flagged in yesterday's plan; needs a first look.
+- ⚠️ **glassbeadedwallpaper** — 35 restarts (up from 20). Sixteenth consecutive morning without a fix.
+- ⚠️ **pitchvideo** — 15 restarts. New entrant; no prior diagnosis.
+- ⚠️ **thesetdecorator** — 14 restarts. Needs log check.
+- **video-gallery, contact-mailer-ideas-viewer, cncp-failures-mockups, cncp-failure-collector** — 4–8 restarts each; chronic, low-urgency cluster.
+
+**Long-running jobs:** No scraper or ingest pipelines show new overnight commits. decade-wallpaper fleet complete (32h ago). animals-ingest running, 1 restart / 34h — routine.
+
+**External signals:** No collaborator commits. All recent git activity is Steve's own work. No Codex quota data visible.
+
+---
+
+## 3. Today's Plan
+
+- `debugger-agent` — pull pm2 logs for **wallco-ai** and identify crash root cause — 72 restarts is an active loop, not passive — success: root cause named + patch or stop decision
+- `debugger-agent` — pull pm2 logs for **glassbeadedwallpaper** — Day 16 undiagnosed — success: specific error identified, fix committed or process stopped
+- `debugger-agent` — first look at **whatsmystyle** (32 restarts) and **pitchvideo** (15) — catch new crashers before they compound — success: triage verdict (fix / stop / deprioritize) for each
+- `Steve` — **Doctor `apply-templates.js` decision** — yes or no — lawyer pipeline has been gated 13 days — success: logged decision, pipeline either unblocked or formally paused
+- `secrets-manager` — execute **Gemini key #1 and #2 mint + route** via `/secrets` — open exposure — success: both keys in secrets registry, hardcoded values replaced
+- `Steve` — **dw_admin PG rotation** — run Lane A runbook (`pg-rotation-runbook.md`, 32 min) — six stand-ups of open exposure — success: new password in place, all 14 hardcoded references patched
+
+---
+
+## 4. Blockers Steve Owes
+
+- **Doctor `apply-templates.js`** — yes/no. Has been blocking lawyer pipeline for 13 days.
+- **Gemini keys** — Steve must mint at aistudio.google.com and paste via `/secrets`. Agents can't do this step.
+- **dw_admin rotation** — Steve must authorize and initiate the 32-min runbook. Agents can execute once authorized.
+- **Ventura-corridor** — fix or formally sunset. Currently a silent gap in pm2 with no owner.
+
+---
+
+## 5. One Thing to Think About
+
+**wallco-ai jumped from 11 → 72 restarts in 16 hours** — that's a crash loop, not normal churn. If wallco-ai is feeding any active pipeline (visual factory, SKU enrichment, Shopify writes), those jobs may be silently failing. Worth knowing what wallco-ai owns before the log pull, so you can assess blast radius.
diff --git a/run-meeting.sh b/run-meeting.sh
index 705e640..0f35a5c 100755
--- a/run-meeting.sh
+++ b/run-meeting.sh
@@ -174,6 +174,18 @@ fi
LINES=$(wc -l < "$OUT" | tr -d ' ')
+# Log this call to the cost ledger (Anthropic Max plan = $0 incremental, but useful for attribution)
+if [[ -x "$HOME/.claude/skills/cost-tracker/scripts/log.js" && "$STATUS" == "ok" ]]; then
+ # Use char count as a rough proxy unit since we don't have token counts from claude --print
+ INPUT_CHARS=$(wc -c < "$CTX" | tr -d ' ')
+ OUTPUT_CHARS=$(wc -c < "$OUT" | tr -d ' ')
+ # Anthropic Max plan rates are $0 — this entry exists for call-count attribution only
+ node "$HOME/.claude/skills/cost-tracker/scripts/log.js" \
+ --api anthropic_max_plan \
+ --units "${INPUT_CHARS}:input_token,${OUTPUT_CHARS}:output_token" \
+ --app codex-meeting --note "$(basename "$OUT" .md) (~chars as token proxy)" 2>/dev/null || true
+fi
+
# ---------- 3a. Content-quality gate (the gap the debate found) ----------
if [[ "$STATUS" == "ok" ]] && is_leaked_meta "$OUT"; then
STATUS="leaked-meta"
← 0f820e8 auto-act: tolerate ## or ### heading depth + grep-empty (pip
·
back to Claude Codex Meeting
·
snapshot: 5 file(s) changed, +1 new, ~4 modified 2811850 →