Skip to content

feat(daybreak): morning kickoff briefing + working-threads live memory 🌅#193

Merged
AVADSA25 merged 1 commit into
mainfrom
feat/daybreak
Jun 9, 2026
Merged

feat(daybreak): morning kickoff briefing + working-threads live memory 🌅#193
AVADSA25 merged 1 commit into
mainfrom
feat/daybreak

Conversation

@AVADSA25

@AVADSA25 AVADSA25 commented Jun 9, 2026

Copy link
Copy Markdown
Owner

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}, kinds working_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 additive codec_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:

  • the documented valid_at() time-travel query doesn't exist → AGENTS.md §5 corrected here
  • fact_extract's mem.store_fact is a silent no-op (pre-existing) → logged in docs/known-issues.md
  • chat's conversational guard swallows "…?" phrasings → fixed via allowlist + _DASHBOARD_ADDON tag example (guard itself untouched)
  • trigger collisions: "briefing" deliberately excluded (daily_briefing crew keeps it); every thread_note trigger contains "thread" (anti-spurious-fire)

Safety / ops

Kill switch DAYBREAK_ENABLED · 3 audit events (DAYBREAK_EVENTS) · no new ~/.codec state 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

"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>
@AVADSA25 AVADSA25 merged commit 4036576 into main Jun 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants