ward dispatch marathon: depth-over-time relay surface, sibling to cascade.go (phase 3 of agentic-os-kai#685) #168

Closed
opened 2026-06-25 11:26:58 +00:00 by coilysiren · 1 comment
Owner

Goal

Promote the proven marathon relay loop to a ward dispatch marathon surface in cli-guard/cli/dispatch/, a sibling to cascade.go. This is phase 3 of coilyco-bridge/agentic-os-kai#685.

Context

  • cascade = breadth (fork-join, concurrent fan-out, bounded by --depth). Already shipped in cascade.go.
  • marathon = depth over time (relay / baton-pass over fresh sessions, bounded by --max-iterations). The skill - the prompt posture, the stage-table journal, the done-condition-as-script, attempts-per-stage auto-park - landed as kai-marathon in agentic-os-kai (phase 1, agentic-os-kai#685, commit 0061c4b on main). Read .agents/skills/kai-marathon/ there for the protocol this surface automates.

Shape

Copy cascade.go's structural pattern (detached spawn, budget stamped into the child env, seed prompt, worktree footer, refuses if the checkout is missing). Instead of fanning out, marathon relaunches a fresh claude -p that re-hydrates from the issue/journal (RUN.md stage table), does the first unverified stage, verifies, appends, exits - looping until the done-condition script exits 0, bounded by --max-iterations (the time analog to --depth).

Do not build ahead of the proof

Per agentic-os-kai#685's phase discipline: do not build this Go surface around an unproven prompt. Land the phase-2 proving run first (the real ward-kdl -> ward merge via the skill, with the three calibration numbers captured) so the bound default, the park threshold, and the prompt posture are calibrated from a real run before they harden into code.

Origin: phase-3 handoff from coilyco-bridge/agentic-os-kai#685.

## Goal Promote the proven **marathon** relay loop to a `ward dispatch marathon` surface in `cli-guard/cli/dispatch/`, a sibling to [`cascade.go`](cli/dispatch/cascade.go). This is **phase 3** of coilyco-bridge/agentic-os-kai#685. ## Context - **cascade** = breadth (fork-join, concurrent fan-out, bounded by `--depth`). Already shipped in `cascade.go`. - **marathon** = depth over time (relay / baton-pass over fresh sessions, bounded by `--max-iterations`). The skill - the prompt posture, the stage-table journal, the done-condition-as-script, attempts-per-stage auto-park - landed as `kai-marathon` in agentic-os-kai (phase 1, agentic-os-kai#685, commit 0061c4b on main). Read `.agents/skills/kai-marathon/` there for the protocol this surface automates. ## Shape Copy cascade.go's structural pattern (detached spawn, budget stamped into the child env, seed prompt, worktree footer, refuses if the checkout is missing). Instead of fanning out, marathon relaunches a fresh `claude -p` that re-hydrates from the issue/journal (`RUN.md` stage table), does the first unverified stage, verifies, appends, exits - looping until the done-condition **script** exits 0, bounded by `--max-iterations` (the time analog to `--depth`). ## Do not build ahead of the proof Per agentic-os-kai#685's phase discipline: do **not** build this Go surface around an unproven prompt. Land the phase-2 proving run first (the real ward-kdl -> ward merge via the skill, with the three calibration numbers captured) so the bound default, the park threshold, and the prompt posture are calibrated from a real run before they harden into code. Origin: phase-3 handoff from coilyco-bridge/agentic-os-kai#685.
Member

🛫 ward pre-flight: NO-GO

ward agent engineer --driver claude ran a pre-flight feasibility read on this issue before detaching a fire-and-forget run, and the agent judged it NO-GO - it should not be carried unattended until a human weighs in.

issue self-gates on a phase-2 proving run and three calibration numbers (bound default, park threshold, prompt posture) that must exist before this Go surface is written; an unattended run can neither confirm phase 2 landed nor produce those numbers, and the kai-marathon protocol lives in a different repo.

No container was launched. Review the issue (clarify the scope, resolve the unknown, or split it), then re-dispatch - ward agent engineer --driver claude <ref> --no-preflight skips this gate once you've decided it's good to go.

full pre-flight read

Context to front-load: I would need to read, in the fresh clone, before any edit: (1) cli/dispatch/cascade.go in full - the structural template (detached spawn, budget-stamped child env, seed prompt, worktree footer, missing-checkout refusal) that marathon must mirror; (2) the ward dispatch command wiring - how cascade registers its subcommand/flags (--depth), so marathon's --max-iterations slots in the same way; (3) the kai-marathon skill at .agents/skills/kai-marathon/ (which lives in agentic-os-kai, a different repo - not in the cli-guard clone, so I could not actually read it from this checkout); (4) whatever calibration numbers the phase-2 proving run produced (bound default, park threshold, prompt posture). Items 3 and 4 are the problem: they are not resolvable from the cli-guard clone at all.

The decisive risk is the issue's own phase discipline: it explicitly says do not build this Go surface around an unproven prompt - the phase-2 proving run (a real ward-kdl → ward merge via the skill) must land first and yield three calibration numbers that set the bound default, park threshold, and prompt posture before they harden into code. An unattended container cannot perform that proving run (it needs a real merge task and human-observed calibration), and there are no comments signaling phase 2 is complete. Coding marathon.go now would mean inventing those three numbers, which is exactly what the issue forbids. This needs a human to confirm phase 2 landed and hand over the calibration values.

NO-GO: issue self-gates on a phase-2 proving run and three calibration numbers (bound default, park threshold, prompt posture) that must exist before this Go surface is written; an unattended run can neither confirm phase 2 landed nor produce those numbers, and the kai-marathon protocol lives in a different repo.


Posted automatically by ward agent engineer --driver claude pre-flight (ward#147, ward#149).

— Claude (she/her), via ward agent

### 🛫 ward pre-flight: NO-GO `ward agent engineer --driver claude` ran a pre-flight feasibility read on this issue before detaching a fire-and-forget run, and the agent judged it **NO-GO** - it should not be carried unattended until a human weighs in. > issue self-gates on a phase-2 proving run and three calibration numbers (bound default, park threshold, prompt posture) that must exist before this Go surface is written; an unattended run can neither confirm phase 2 landed nor produce those numbers, and the `kai-marathon` protocol lives in a different repo. No container was launched. Review the issue (clarify the scope, resolve the unknown, or split it), then re-dispatch - `ward agent engineer --driver claude <ref> --no-preflight` skips this gate once you've decided it's good to go. <details><summary>full pre-flight read</summary> **Context to front-load:** I would need to read, in the fresh clone, before any edit: (1) `cli/dispatch/cascade.go` in full - the structural template (detached spawn, budget-stamped child env, seed prompt, worktree footer, missing-checkout refusal) that marathon must mirror; (2) the `ward dispatch` command wiring - how cascade registers its subcommand/flags (`--depth`), so `marathon`'s `--max-iterations` slots in the same way; (3) the `kai-marathon` skill at `.agents/skills/kai-marathon/` (which lives in agentic-os-kai, a **different repo** - not in the cli-guard clone, so I could not actually read it from this checkout); (4) whatever calibration numbers the phase-2 proving run produced (bound default, park threshold, prompt posture). Items 3 and 4 are the problem: they are not resolvable from the cli-guard clone at all. The decisive risk is the issue's own **phase discipline**: it explicitly says *do not build this Go surface around an unproven prompt* - the phase-2 proving run (a real ward-kdl → ward merge via the skill) must land first and yield three calibration numbers that set the bound default, park threshold, and prompt posture before they harden into code. An unattended container cannot perform that proving run (it needs a real merge task and human-observed calibration), and there are no comments signaling phase 2 is complete. Coding marathon.go now would mean inventing those three numbers, which is exactly what the issue forbids. This needs a human to confirm phase 2 landed and hand over the calibration values. NO-GO: issue self-gates on a phase-2 proving run and three calibration numbers (bound default, park threshold, prompt posture) that must exist before this Go surface is written; an unattended run can neither confirm phase 2 landed nor produce those numbers, and the `kai-marathon` protocol lives in a different repo. </details> --- Posted automatically by `ward agent engineer --driver claude` pre-flight (ward#147, ward#149). <!-- ward-preflight-nogo --> <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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-flight-deck/cli-guard#168
No description provided.