Skip to content

Staged convoys â plan, review, and iterate before executing #1006

@jrf0110

Description

@jrf0110

Parent

Part of #204 (Phase 4: Hardening)

Problem

Convoys are currently created and kicked off atomically ���¢ gt_sling_batch creates the convoy bead, all tracked beads, hooks agents, and dispatches immediately. There's no way to plan a convoy (define the beads, review the decomposition, iterate on titles/descriptions/ordering) before committing to execution. The Mayor decomposes a request and fires immediately, with no human review step.

For complex work, users want to:

  1. Ask the Mayor to plan a convoy
  2. Review the plan (bead list, descriptions, rig assignments, ordering)
  3. Iterate ("split that bead into two", "add a test bead", "change the priority on the auth bead")
  4. Approve and kick off only when satisfied

Solution

Add a staged status to convoys. A staged convoy has all its beads defined but no agents hooked or dispatched. The user reviews and edits, then explicitly starts it.

Convoy lifecycle with staging

staged �¢ open �¢ ready_to_land �¢ closed
  • staged: Beads exist but are in open status with no assigned agents. The convoy is a plan, not active work.
  • open: The convoy has been started Ã�Ã�Ã�¢ agents are hooked and dispatching begins.

Mayor tools

Tool What it does
gt_sling_batch (updated) Add a staged: boolean parameter (default false). When true, creates the convoy and beads but does not hook agents or dispatch.
gt_convoy_start (new) Transitions a staged convoy to open: hooks agents to all tracked beads and triggers dispatch on the next alarm tick.
gt_convoy_edit (new, or extend #996's gt_bead_update) Edit beads within a staged convoy ���¢ add beads, remove beads, change titles/descriptions/priorities/rig assignments, reorder.

Dashboard UI

  • Staged convoy view: Shows the planned beads as a list/board in a "draft" visual state (muted colors, dashed borders, "STAGED" badge). Each bead is editable inline.
  • Edit controls: Add bead, remove bead, edit bead fields, drag-to-reorder (if ordering matters).
  • Start button: Prominent "Start Convoy" button that transitions to open and begins dispatch.
  • Mayor integration: The Mayor chat could show a staged convoy as a rich card: "Here's my plan for the auth refactor convoy: [interactive bead list]. Review and edit, then tell me to start it."

Mayor prompt update

## Staged Convoys

When the user asks you to plan or prepare work (but not start it immediately), 
use gt_sling_batch with staged=true. This creates the convoy and beads without 
dispatching agents. Tell the user the plan is ready for review and they can:
- Edit individual beads (titles, descriptions, priorities)
- Add or remove beads
- Tell you to start it when ready

If the user says "go", "start it", "kick it off", or similar, call gt_convoy_start 
to begin execution.

Acceptance Criteria

  • staged status added to convoy beads (or a staged boolean on convoy metadata)
  • gt_sling_batch accepts staged: boolean parameter
  • Staged convoys have beads but no hooked agents or dispatched work
  • gt_convoy_start tool transitions staged Ã�¢ open and triggers agent hookup + dispatch
  • Beads within a staged convoy are editable (title, body, priority, rig assignment)
  • Beads can be added to or removed from a staged convoy before starting
  • Dashboard renders staged convoys distinctly from active ones
  • Mayor system prompt includes staged convoy guidance

Notes

  • No data migration needed
  • Staging is optional Ã�Ã�Ã�¢ gt_sling_batch with staged=false (the default) behaves exactly as it does today
  • Staged convoys should not appear in hasActiveWork() or trigger the active alarm interval
  • The editing capabilities for staged convoy beads overlap with Mayor edit capabilities + manual bead/agent/convoy editing #996 (Mayor edit capabilities) Ã�Ã�Ã�¢ gt_bead_update from that issue can be used on staged beads
  • Consider whether the Mayor should auto-stage for large convoys (>5 beads) and auto-start for small ones. This is a prompt guidance decision, not a code decision.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestkilo-auto-fixAuto-generated label by Kilokilo-triagedAuto-generated label by Kilo

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions