dispatch: make consult a 4th positional surface, retire --posture #144

Closed
opened 2026-05-28 09:58:10 +00:00 by coilysiren · 1 comment
Owner

dispatch: make consult a 4th positional surface, retire --posture

Supersedes

coilysiren/coily#130 (consult-posture axis orthogonal to surface). Builds on coilysiren/coily#270 (headless/interactive/cascade surface split).

Problem

Today coily dispatch has three positional surfaces - headless, interactive, cascade - plus a separate --posture {watch,consult} axis selectable only on interactive. An axis that exists for exactly one surface is too orthogonal: it forces holding two dimensions in your head when only one combination is reachable, and it mangles in dictation. Kai wants a single axis: pick a surface, full stop.

Change

Collapse the posture axis into the surface enum. consult becomes a fourth positional surface, defined as the interactive surface (new Warp tab, live session, human supervises) with the consult preamble baked in. The four surfaces:

  • headless - detached, fire-and-forget, never consults. PR is the review gate.
  • interactive - live Warp tab, auto mode, operator may watch but is not consulted (the old --posture watch default).
  • consult - live Warp tab, auto mode with a raised interruption budget: encouraged to surface real judgment calls and wait, soft expectation not plan mode (the old interactive --posture consult).
  • cascade - detached, bounded recursive fan-out.

--posture flag is removed entirely. The two interactive postures become two surfaces.

Implementation surface

  • cli-guard dispatch/:
    • posture.go - consult and watch stop being selectable flags; fold posturePreamble mapping into surface selection. Keep the preamble text (it is good) but key it off surface, not posture. Decide whether the Posture type survives as an internal surface->preamble detail or is deleted outright.
    • surface enum / parser - add consult alongside headless/interactive/cascade. consult shares interactive's worktree/Warp-tab placement.
    • delete the --posture flag wiring and parseInteractivePosture.
    • tests: posture_test.go, interactive_test.go - migrate posture cases to surface cases.
  • coily - bump cli-guard dep to expose the 4th surface; drop any --posture passthrough.
  • coily-dispatch SKILL.md - merge Step 6b (consult posture) into Step 6 (pick the surface) as a fourth bullet; update examples; drop --posture from the command shapes. Update the skill description frontmatter ("pick headless or interactive mode" -> the four surfaces).

Acceptance

  • coily dispatch consult coilysiren/<repo>#<N> opens a live tab with the consult preamble.
  • coily dispatch interactive --posture consult ... errors (flag gone) - or at minimum --posture is unknown.
  • No remaining --posture references in cli-guard, coily, or the SKILL.
# dispatch: make `consult` a 4th positional surface, retire `--posture` ## Supersedes coilysiren/coily#130 (consult-posture axis orthogonal to surface). Builds on coilysiren/coily#270 (headless/interactive/cascade surface split). ## Problem Today `coily dispatch` has three positional surfaces - `headless`, `interactive`, `cascade` - plus a separate `--posture {watch,consult}` axis selectable only on `interactive`. An axis that exists for exactly one surface is too orthogonal: it forces holding two dimensions in your head when only one combination is reachable, and it mangles in dictation. Kai wants a single axis: pick a surface, full stop. ## Change Collapse the posture axis into the surface enum. `consult` becomes a fourth positional surface, defined as the interactive surface (new Warp tab, live session, human supervises) with the consult preamble baked in. The four surfaces: * `headless` - detached, fire-and-forget, never consults. PR is the review gate. * `interactive` - live Warp tab, auto mode, operator may watch but is not consulted (the old `--posture watch` default). * `consult` - live Warp tab, auto mode with a raised interruption budget: encouraged to surface real judgment calls and wait, soft expectation not plan mode (the old `interactive --posture consult`). * `cascade` - detached, bounded recursive fan-out. `--posture` flag is removed entirely. The two interactive postures become two surfaces. ## Implementation surface * **cli-guard** `dispatch/`: * `posture.go` - `consult` and `watch` stop being selectable flags; fold `posturePreamble` mapping into surface selection. Keep the preamble text (it is good) but key it off surface, not posture. Decide whether the `Posture` type survives as an internal surface->preamble detail or is deleted outright. * surface enum / parser - add `consult` alongside `headless`/`interactive`/`cascade`. `consult` shares interactive's worktree/Warp-tab placement. * delete the `--posture` flag wiring and `parseInteractivePosture`. * tests: `posture_test.go`, `interactive_test.go` - migrate posture cases to surface cases. * **coily** - bump cli-guard dep to expose the 4th surface; drop any `--posture` passthrough. * **coily-dispatch SKILL.md** - merge Step 6b (consult posture) into Step 6 (pick the surface) as a fourth bullet; update examples; drop `--posture` from the command shapes. Update the skill `description` frontmatter ("pick headless or interactive mode" -> the four surfaces). ## Acceptance * `coily dispatch consult coilysiren/<repo>#<N>` opens a live tab with the consult preamble. * `coily dispatch interactive --posture consult ...` errors (flag gone) - or at minimum `--posture` is unknown. * No remaining `--posture` references in cli-guard, coily, or the SKILL.
Author
Owner

Landed on GitHub main as coily 1e4faf6 (dep bump + SKILL) on top of cli-guard 4bf7163 (consult surface, --posture removed, cli-guard #34).

Note: the GitHub<->Forgejo mirror for coily and cli-guard has drifted - Forgejo carries v2.45.0 lockdown/formula sync commits GitHub lacks, GitHub carries a v2.43.0 render commit Forgejo lacks. So git push origin main (dual push-url) lands on GitHub but rejects on the Forgejo URL, and the closes #144 trailer could not auto-fire here. Closing manually. Filed a follow-up for the mirror drift.

Landed on GitHub main as coily `1e4faf6` (dep bump + SKILL) on top of cli-guard `4bf7163` (consult surface, `--posture` removed, cli-guard #34). Note: the GitHub<->Forgejo mirror for coily and cli-guard has drifted - Forgejo carries v2.45.0 lockdown/formula sync commits GitHub lacks, GitHub carries a v2.43.0 render commit Forgejo lacks. So `git push origin main` (dual push-url) lands on GitHub but rejects on the Forgejo URL, and the `closes #144` trailer could not auto-fire here. Closing manually. Filed a follow-up for the mirror drift.
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-bridge/coily#144
No description provided.