Summary
Talk-to / any transport restarts cold because converse is client-history-only. Hub already records convo_turn events; wire a thin context assembler so every converse call hydrates recent turns (budgeted) before the brain runs. Text/voice/XR stay transports.
Scope
- Hub: assemble messages from recent
convo_turns + last operator utterance; char/turn budget
- GET recent turns for UI hydrate (optional but needed for talk-to continuity)
- Talk-to panel: load recent on open; do not own durable memory
- Reuse disposition tombstones via existing
query_dispositions (brain) — no new summarize engine
Non-goals
- Unmute/localStorage chat DB
- Separate summarize LLM
- New OverseerThread table
Acceptance
- Reload
/overseer → recent turns visible
- Second turn after reload still has prior context in the brain call
- Budget test fails if assembler dumps unbounded history
Summary
Talk-to / any transport restarts cold because converse is client-history-only. Hub already records
convo_turnevents; wire a thin context assembler so every converse call hydrates recent turns (budgeted) before the brain runs. Text/voice/XR stay transports.Scope
convo_turns + last operator utterance; char/turn budgetquery_dispositions(brain) — no new summarize engineNon-goals
Acceptance
/overseer→ recent turns visible