You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement operator intent capture at fleet level — intent_items keyed to a session via related_session_id, with held/promoted/discarded lifecycle and the operator commands that move intents into the inbox or into dispatches. This absorbs the per-session scratchlist (#11) at fleet level after the #11 v1 per-session model ships; it does not supersede it.
Operator commands wired: "capture this as intent" → creates intent_item; "promote that intent to an inbox candidate" → creates inbox_item, status promoted_to_inbox; "promote that intent to a dispatch" → drafts a dispatch envelope, status promoted_to_edict on dispatch; "what intents am I holding?" → lists held intents with trigger conditions; "drop that intent" → status discarded.
Explicit status transitions (held | promoted_to_inbox | promoted_to_edict | discarded) prevent the half-resolved-half-pending state noted on the per-session scratchlist.
Distinction from held inbox items preserved: intent items originate from operator convo (not worker events) and surface on trigger-condition firing (not queue aging).
Out of scope
Natural-language trigger parsing beyond operator-set explicit triggers (v0 may require explicit triggers only — see framing doc open thread).
intent_items carry related_session_id, so a fleet-level intent can still be scoped to a specific worker session — which is exactly what the per-session scratchlist is, expressed in the fleet substrate.
Goal
Implement operator intent capture at fleet level —
intent_itemskeyed to a session viarelated_session_id, with held/promoted/discarded lifecycle and the operator commands that move intents into the inbox or into dispatches. This absorbs the per-session scratchlist (#11) at fleet level after the #11 v1 per-session model ships; it does not supersede it.Spec
docs/plans/2026-06-03-overseer-contracts.md§15 (operator intent capture), §7 (memory promotion —intent_itemclass)docs/plans/2026-06-03-overseer-build-sequence.mdStep 2.5 substrate + Step 3 voice surface (where this lands)Acceptance
intent_itemstable (per contracts §15:summary,full_text,source_convo_event_id,trigger_condition/trigger_type/trigger_ref,related_session_id,status,promoted_to).intent_item; "promote that intent to an inbox candidate" → createsinbox_item, statuspromoted_to_inbox; "promote that intent to a dispatch" → drafts a dispatch envelope, statuspromoted_to_edicton dispatch; "what intents am I holding?" → lists held intents with trigger conditions; "drop that intent" → statusdiscarded.held | promoted_to_inbox | promoted_to_edict | discarded) prevent the half-resolved-half-pending state noted on the per-session scratchlist.Out of scope
Dependencies
Notes
intent_itemscarryrelated_session_id, so a fleet-level intent can still be scoped to a specific worker session — which is exactly what the per-session scratchlist is, expressed in the fleet substrate.