feat(daybreak): morning kickoff briefing + working-threads live memory 🌅#193
Merged
Conversation
"Good morning CODEC" from any surface (voice, wake-word, chat, MCP) answers:
where we left off yesterday (shift-report recap + open crews + blocked
agents), open working threads, today's calendar + weather, follow-ups
(pending questions, reminders, unread email), and derived priorities — in
~4s live (8s budget, slow sources reaped, never raises).
Working threads are temporal facts (key="thread:{kind}:{slug}",
fact_type="thread", kinds working_on/waiting_on/priority/follow_up) in the
existing facts table: they ride the voice/wake-word [ACTIVE FACTS] injection
automatically (zero edits to those files), and chat now injects a compact
≤150-token [WORKING THREADS] block (routes/chat.py). New additive
codec_memory_upgrade.expire_fact() closes a thread without superseding.
New skills daily_kickoff + thread_note (every thread_note trigger contains
"thread" — anti-spurious-fire). Chat: both allowlisted + a _DASHBOARD_ADDON
tag example covers the audited "?"-conversational-guard trap. Triggers
collision-checked against the live registry ("briefing" deliberately
excluded — daily_briefing crew keeps it).
3 audit events (DAYBREAK_EVENTS): daybreak_completed / _thread_saved /
_thread_closed. Kill switch DAYBREAK_ENABLED. No new ~/.codec files.
AGENTS.md: repo map + §6 events + §5 valid_at() doc correction (audit found
the documented time-travel query never existed). known-issues: fact_extract
store_fact no-op logged (pre-existing, out of scope).
Built from a 5-reader audit workflow + synthesized spec
(docs/DAYBREAK-DESIGN.md). TDD: 16 tests red-then-green. Full suite 2407
passed. Live-fired end-to-end through /api/chat ("good morning codec" →
pre-LLM hijack → real briefing).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
"Good morning CODEC" — from voice, wake-word, chat, or MCP — now answers: where we left off yesterday (shift-report recap, unfinished crews, agents waiting on you), open working threads, today's calendar + weather, follow-ups (pending questions, reminders, unread email), and derived priorities. ~4s live (8s budget; slow sources reaped; never raises).
Working-threads live memory:
note a thread …/open threads/close thread …anywhere. Threads are temporal facts (thread:{kind}:{slug}, kindsworking_on|waiting_on|priority|follow_up) in the existing facts table — so voice + wake-word prompts carry them with zero edits to those files, and chat injects a compact ≤150-token[WORKING THREADS]block. New additivecodec_memory_upgrade.expire_fact()closes without superseding.Audit-driven design (docs/DAYBREAK-DESIGN.md)
Built from a 5-reader code audit + synthesized spec. It caught, pre-build:
valid_at()time-travel query doesn't exist → AGENTS.md §5 corrected herefact_extract'smem.store_factis a silent no-op (pre-existing) → logged in docs/known-issues.md"…?"phrasings → fixed via allowlist +_DASHBOARD_ADDONtag example (guard itself untouched)"briefing"deliberately excluded (daily_briefing crew keeps it); everythread_notetrigger contains "thread" (anti-spurious-fire)Safety / ops
Kill switch
DAYBREAK_ENABLED· 3 audit events (DAYBREAK_EVENTS) · no new~/.codecstate files · read-only aggregation (threads = facts-table writes only) · manifest regenerated (86 skills).Tests
TDD, 16 tests red→green (threads round-trips on temp DB, assembly with per-source failure injection, budget reaping, trigger collisions against the live registry, the "?" guard pin, allowlist membership). Full suite: 2407 passed, 0 failed. Live-fired end-to-end:
/api/chat"good morning codec" → pre-LLM hijack → real briefing.🤖 Generated with Claude Code