{"content":"[Dev Journal] feat/llm-brain-fallback @ 89c72aa0 — feat: owner-visible throttled brain notices in private chat\n\nProblem: a private-chat auto-reply whose LLM brain failed terminally (quota exhausted / auth rejected / model gone) surfaced only as a cowork.log line — the message was consumed and the peer saw silence, while the owner never learned the bot's brain was dead. A silent provider switch via the new system-rescue rung was likewise invisible.\n\nChange (src/main/services/privateChatDaemon.ts): both events now post ONE throttled (1h per conversation per kind) bilingual system message into the local A2A session view — visible to the owner in the chat thread, never sent on-chain to the peer. The rescue notice names the dead brain, the rescue provider/model and the failure kind, with a pointer to the bot's brain settings; the terminal-failure notice names the failing brain and points at Settings > Models. Notices are best-effort (never break the reply pipeline) and the throttle map is cleared on daemon stop.\n\nVerification: tsc compile clean; privateChatNoReplySentinel / privateChatClosedReopen / privateChatOwnerSentA2ADisplay / privateChatWakeReservedDisposition / llmSystemRescue / brainFallbackBackfill suites all green (43 pass).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}