Skip to content

Operator intent capture at fleet level (contracts §15) #28

@heavygee

Description

@heavygee

Goal

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.

Spec

  • docs/plans/2026-06-03-overseer-contracts.md §15 (operator intent capture), §7 (memory promotion — intent_item class)
  • docs/plans/2026-06-03-overseer-build-sequence.md Step 2.5 substrate + Step 3 voice surface (where this lands)

Acceptance

  • Migration adds intent_items table (per contracts §15: summary, full_text, source_convo_event_id, trigger_condition/trigger_type/trigger_ref, related_session_id, status, promoted_to).
  • 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).
  • The per-session scratchlist v1 itself (UI: per-session scratchlist (held queue of unsent messages) #11) — that ships independently; this absorbs it at fleet level afterward.

Dependencies

Notes

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitectural / substrate workfleet-overseerFleet attention-arbitration architecture

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions