Gmail media intel (06:30 daily)
OK
last intel file 9.5 h ago
24 h 100.0% · 7 d 100.0% · in this state since 9 Nov, 20:17
Savings, events, trends + team page deploy (06:45 daily)
OK
last stores file 9.6 h ago
24 h 100.0% · 7 d 100.0% · in this state since 10 Nov, 12:44
Media hub daily refresh + team digest email (07:15 daily)
OK
last run 9.2 h ago; digest sent
24 h 100.0% · 7 d 100.0% · in this state since 11 Nov, 20:58
Opportunity poll (every 15 min)
Check
last poll 1.9 h ago; [TypeError: fetch failed] {
24 h 100.0% · 7 d 98.5% · in this state since 13 Nov, 08:21
How to fix
scripts/poll-cron.sh writes to production Turso and is now the BACKUP poller; the hourly GitHub Actions job below is the primary. Zero yield on SourceBottle for a whole day usually means their page changed, not that there were no callouts.
GitHub Actions opportunity poll (backup clock)
Check
could not read GitHub runs: Get "https://api.github.com/repos/feliciacoco/media-hub/actions/workflows/poll-o
24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 08:21
How to fix
gh run list --workflow=poll-opportunities.yml in media-hub. A failure with 401 = CRON_SECRET secret drifted from .deploy-secrets; 'disabled workflow' = GitHub switched it off after repeated failures or billing (gh workflow enable). The local launchd poll keeps the feed alive meanwhile.
GitHub Actions watchdog (backup, fires every few hours)
Check
could not read GitHub runs: Get "https://api.github.com/repos/feliciacoco/media-hub/actions/workflows/watchd
24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 08:21
How to fix
gh run list --workflow=watchdog.yml in media-hub. It alerts by email if RESEND_API_KEY is a repo secret, otherwise by opening a GitHub issue.
Verification sweep (daily)
Check
last pass 8.1 h ago; [2026-11-12 08:20] pass 1/1 unreadable response / [2026-11-12 08:20] adjudicate adjudication unreadable
24 h 100.0% · 7 d 100.0% · in this state since monitoring began
How to fix
'unreadable response' = the cron verify step timed out or returned non-JSON (often OpenRouter out of credit, or a 300 s Vercel window overrun). Check the credits card below first.
Felicia's daily brief (6x/day)
Check
brief last written 3.4 h ago; last exit 1; log: API Error: Connection dropped (ECONNRESET)
24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 08:21
How to fix
refresh.sh needs --permission-mode acceptEdits and current MCP tool names; a stale file with no error usually means the final Write was denied.
Team dash morning brief (6x/day)
Check
last log write 8 min ago; launchd exits [0,0,0,0,1,0]; log: API Error: Connection dropped (ECONNRESET)
24 h 100.0% · 7 d 100.0% · in this state since 13 Nov, 08:21
How to fix
team-dash/scripts/morning-brief.sh, two headless claude calls, now pinned to --model opus.
Headless claude (what every extractor job runs on)
Down
no answer: exit 143
24 h 97.7% · 7 d 96.0% · in this state since 13 Nov, 08:21
How to fix
If the message is 'issue with the selected model', ~/.claude/settings.json names a model the CLI at /opt/homebrew/bin/claude cannot use; scripts pin --model opus for this reason. 'Unable to connect to API' = network or auth (claude login).
9 jobs loaded
24 h 100.0% · 7 d 100.0% · in this state since monitoring began