Audit 2 of 3 — the fleet's daily machinery: Signal, RAI Report, mp3, agents (2026-10-11 09:40 EDT)

Read-only. "Signal" is the name of the Telegram brief (delivered by @GiaBaBot), not Signal messenger. Back to the proposal.

Scheduled and automated jobs

JobOwnerSchedule (ET)OutputLast runStatus
Signal AM PodcastGia cron05:50 dailyresearch/briefings/signal/DATE-am.md + .mp3, Telegram mp3 + tap cards10-11 05:56Working
Signal PM UpdateGia cron18:00 daily-pm.md + .mp3, delta-only10-10 18:02Working
Signal AM WatchdogGia cron07:15catch-uptodayWorking
Morning Brief Prefetch / One Morning Brief v2Gia05:45 / 06:05prefetch, Telegram announcetodayWorking
Daily Podcast Transcription (+ RAI Report, inferred)Gia05:30transcriptstodayWorking
Signal pregen (ai.arnao.signal-pregen)host LaunchDaemon, ~/quip-service05:45day-*.m4a, briefing-DATE.json10-11 05:46Working
keywatch (com.byron.fleet-keywatch)host05:10fleet-health.json, slog entries10-11 05:10Working, but reports 8 failures daily
byron-todos.jsonderived by slog from worklog.jsonlevery Claude job175 items10-11 09:15Working; 146 items "blocked-on-byron"
Signal Weekly Public draftGia cronFri 07:00signal-public/episodes + Branding Central draft10-09Runs; held by the council
air-check (ai.arnao.signal-aircheck)hostMon 05:30publishes an armed, council-green episode10-05Runs; "no episode armed" every week
Signal Talk (:18920)host daemonKeepAlive, drafts 06:20~/signal-talk/data/DATE.json, tailnet /talk/10-11Working
voice-pod (:18910)host daemonKeepAlivevoice websocketready 10-09Working
quip-service (:18801, Signal Live)host daemonKeepAlive/p11 page, cost logsalive; drain cron fails ENOTFOUND ob1-postgresPartial
RAI Report (https://theraireport.arnao.ai)Gia~05:47 dailyanalysis/rai-report-DATE.mp3, rai-podcast/episodes/DATE.json, site10-11 05:49Working
AWS RAI ReportGiaskill says 06:50projects/aws-rai-podcastnewest 06-06Stale, no cron found
RAI On-Demand WatcherGiaevery 5 minTelegram2 min agoWorking
Spend GuardGia30 minalerts only19 min agoWorking
Nightly Site Audit / True Cost Ledger / Model GuardGia06:00 / 23:45 / 6hTelegram, ledgertodayWorking
Other Gia infra cronsGia1m–2hSelf-Heal, Asset Registry Sync, city alias, Byron Command Consumer + Telemetry, SMS relay, OB1 DictationokWorking
Gia inbox checkhost crontab30 min/tmp/gia-inbox-cron.log09:30Working
fleet-live keepalivehost crontab1 min~/fleet-live/live.json09:41Working
Mia / Tia Memory DreamingMia, Tia03:00memory11h agoWorking
Forge HeartbeatCia09:00—40 min agoWorking (10-10 run aborted at 447 s)
gia2 heartbeats / weekly skill reviewgia2daily / weekly—skipped / one errorIdle or erroring
Fleet snapshots (hourly, daily, verify)host——plists DisabledDisabled

Fleet agents

Data flow

  1. Sources: podcast scans (latest-scan.py, feeds.json, steering.md), Gmail unread, branding queue, Mentor and Clone deltas, OB1 recall, memory dailies, cost log, keywatch fleet-health.json. steering.md outranks everything; ledger.json dedupes against past episodes.
  2. Processing: the signal-daily-podcast skill at 05:50 gathers, matches against the ledger, applies the delta gate, writes a 1300–1500 word script on Fable 5.
  3. Audio: OpenAI gpt-4o-mini-tts, voice "nova", chunked and joined with ffmpeg. A stock voice, not the clone.
  4. Delivery: one Telegram message with the mp3 and caption, then one tappable card per numbered action (actions.py). Taps return to Gia as callback text; model-mediated, not deterministic.
  5. Signal Live / Talk: signal-pregen at 05:45 uses Fable for segments, grok for x_search, OpenAI TTS for day-*.m4a; a Chatterbox worker renders the clone voice for the test strip. Signal Talk at 06:20 drafts three actions. The realtime OpenAI line has not been logged since 07-27.
  6. Task state: every Claude job ends with slog, which appends to worklog.jsonl, re-renders session.html and re-derives byron-todos.json, which the AM and PM reports read.
  7. Public outputs: the RAI Report daily mp3 + page (Gemini TTS, voices Ava Reed and Marcus); the public weekly Signal drafted Friday through make-episode.mjs and a council (leak, judge, lint), armed by Byron in Branding Central, published Monday by air-check to https://signal.arnao.ai in the cloned voice; https://signal-next.arnao.ai is the staged replacement, noindex.

Gaps and breakages

  1. Public Signal has shipped one episode, ever (2026-07-20). Drafts for 10-05 and 10-12 were held by the council (10-12: leak red, judge red). Air-check found nothing armed on 09-21, 09-28, 10-05.
  2. The Signal skill text says 8am/6pm; the crons run 05:50 and 18:00.
  3. 59 of 190 AM/PM slots since 07-12 have no mp3 (most before 08-04, when mp3s were not kept; some PMs silent by design).
  4. keywatch shows 8–9 failing checks every day: xai key invalid; LinkedIn token expired 25.8 days with a live 401; Gia's LinkedIn session logged out 13 days; an exited container; launchd failures (colima-443, photolib-sync); clone-absorb loop worker down; photolib sync and db stale. The AM episode reads the same list until Byron acts.
  5. byron-todos.json is a backlog, not a to-do: 146 of 175 "blocked-on-byron"; first items reference July events.
  6. Gia's Gmail send for byron@arnao.com is revoked (invalid_grant); email cards fall back to gmail.com.
  7. Analytics dark: Plausible has recorded nothing since 2026-09-01 (Funnel off).
  8. AWS RAI Report stale since June.
  9. quip-service drain fails with ENOTFOUND ob1-postgres every 15 minutes.
  10. Stale identity cards: SOUL.md files name the wrong models; Tia's is empty; AGENT_FLEET.md dates from 07-11.
  11. Credentials in files: actions.jsonl contains a tunnel URL with embedded basic-auth for the LinkedIn re-login; ~/gitea-credentials.txt and ~/signal-key-link.txt sit in the home directory.
  12. Fleet snapshot jobs are disabled; two .bak plists in LaunchAgents; leftover tmp artifacts from 08-07.