Synoptic — generated from Nextcloud/Brain/System/SYSTEM_MODEL.md
Built-but-never-assembled/deployed + the DB lies + silent rot with no fail-loud. (= the open-loop disease.) Robustness ≠ six fixes; it's killing this one mode.
Governing principle (Reverse): reality defines truth; the DB is a DERIVED CACHE, not the source. (process list > status field; the ✻ <N>s marker > DB "idle".)
The robustness primitive: no feed/component without (a) a fail-loud freshness signal + (b) a registered consumer.
| is | persistent store — sessions, orchestrator_messages, decisions, glossary_entries, pages, breaks, prompt_ledger. |
| depends on | filesystem. |
| SSOT for | durable structured state. |
| health | ⚠️ LIES ~30% — status field stale; treated AS reality when it's a cache. ROOT carrier. |
| is | spawns/tracks sessions; /status, /launch, /api/future-prompts, permissions. |
| depends on | Master_Claude.db, OS process list, terminal window titles. |
| SSOT for | session lifecycle (claims to). |
| health | 🔴 attribution BROKEN — /status active-list = 0 while 46 claude.exe live; window/uuid resolution returns NULL. Fix direction: derive liveness from PROCESS TRUTH, not the status field. |
| is | inter-session + user↔Claude delivery (push-inject + pull-on-hook). |
| depends on | launcher window-resolution, Master_Claude.db, the per-turn pull hook. |
| SSOT for | messages (DB row); delivery is best-effort. |
| health | 🔴 push fails (no-window → dead_letter), IDLE SESSIONS NEVER WAKE; pull only fires when already active. FIX: #5817 focus-safe wake doorbell (shadow-first). |
| is | DEFINED TERM (literal) = the ✻ <N>s characters Claude Code shows EVERY TIME IT GOES IDLE. NOT a mechanism — an observable marker. (def: glossary entry_id 9, Loop_Engineering/raw.) |
| depends on | nothing (it's on-screen ground truth). |
| SSOT for | "Claude is idle" — the TRUE idle signal (vs the launcher's lying status). Observe THIS. |
| health | ✅ as a marker. The optional claudehalt_close_gate.py (turn-end check the 14 Stop hooks consolidate into) is DESIGNED-not-built. Do NOT over-construct the term into the gate. |
| is | Julian's dictation/photo capture → entries; OCR; research_daemon + vision_daemon. |
| depends on | gunicorn, wordlogger.db + medical_words.db, cloudflare tunnel (wordlogger.hansenhome.uk). |
| SSOT for | Julian's logged requests/observations. |
| health | 🟡 photo-discard FIXED (#5805); text/URL input dropped → #5811; summary page built-but-unreachable → #5807; no fulfillment loop → #5809; claudehalt input-sentinel staged-not-deployed → #5814. |
| is | surfaces questions/decisions to Julian. |
| depends on | claude_user_messages, orchestrator_messages, decision_* tables (2 of 4 EMPTY). |
| SSOT for | questions/forks surfaced to Julian — currently NONE consolidated. |
| health | 🔴 FRAGMENTED across 6+ pages (/waiting, /prompts, /notifications, claudeweb, session-intelligence, command_center); forks not surfaced. Consolidation downstream of spotter #5815 + the fleet walkthrough. |
| is | canonical knowledge wiki — topics, dreamer-folded (raw → _wiki.md). |
| depends on | the dreamer loop (scheduling fragile, hits classifier wall), /new_topic + /update_topic. |
| SSOT for | durable knowledge + DEFINED TERMS. |
| health | 🟡 folds planned-but-not-done (claudehalt was absent until #5730); dreamer scheduling unreliable. |
| is | the fail-loud SSOT for "is this feed still updating / this URL alive." |
| depends on | |
| SSOT for | component health signals. RED→ntfy phone; AMBER→report. |
| health | ✅ live; #5808 adds pages link-health. Phase 2: SYSTEM_MODEL health fields auto-derive FROM here → the live synoptic. |
health tells you what's currently lying/broken.{is, depends_on, SSOT_for, health-signal} + register a freshness signal. No silent feeds.health live; until then, update on material change. This doc is canonical — supersede _shared scratch.generate_autonomous_flow.py to regenerate.