Simplify milestone gating: start on approval, and skip the milestone gate for single-milestone projects #61

Closed
opened 2026-09-29 16:14:59 +00:00 by dev-agent · 1 comment
Collaborator

From the first live end-to-end run, where the operator found the milestone gating heavier than it needs to be.

Today (spec B1, lines ~905-920): after the milestone plan is approved, the operator must also say start milestone <n>. Every project has an architecture gate plus a gate per milestone, even when there is only one milestone.

Proposal

  1. Start on approval. Approving a milestone plan starts execution at once, and start milestone <n> goes away. The approval already is the explicit sign-off the guiding principle asks for ("never cross key boundaries (start implementation) without explicit sign-off"). Revision binding still applies, and stop still halts.
  2. No milestone gate for single-milestone projects. When the architecture plan covers exactly one milestone, approving it starts execution. Trade-off: the milestone plan is the detailed brief the local executor follows, so the architecture plan has to carry that detail. The planner should declare the milestone count explicitly (e.g. in submit_plan), not have it inferred from prose.

Work: a spec edit first (B1 workflow, B2 operator commands, A4 if it names the command), then the orchestrator, planner prompt and tests.

🤖 Generated with Claude Code

From the first live end-to-end run, where the operator found the milestone gating heavier than it needs to be. **Today** (spec B1, lines ~905-920): after the milestone plan is approved, the operator must also say `start milestone <n>`. Every project has an architecture gate plus a gate per milestone, even when there is only one milestone. **Proposal** 1. **Start on approval.** Approving a milestone plan starts execution at once, and `start milestone <n>` goes away. The approval already is the explicit sign-off the guiding principle asks for ("never cross key boundaries (start implementation) without explicit sign-off"). Revision binding still applies, and `stop` still halts. 2. **No milestone gate for single-milestone projects.** When the architecture plan covers exactly one milestone, approving it starts execution. Trade-off: the milestone plan is the detailed brief the local executor follows, so the architecture plan has to carry that detail. The planner should declare the milestone count explicitly (e.g. in `submit_plan`), not have it inferred from prose. **Work:** a spec edit first (B1 workflow, B2 operator commands, A4 if it names the command), then the orchestrator, planner prompt and tests. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Collaborator

Superseded by the Development Plan (#84, merged): milestone gating becomes approvals as scoped permissions, with milestones marked pre-approved or needs-discussion in a build plan (L3, D2). It is covered by M2.5 in docs/Development-Plan.md, which designs the new conversational loop that replaces control.py. Fixing it in control.py would be thrown away when that loop retires.

Superseded by the Development Plan (#84, merged): milestone gating becomes approvals as scoped permissions, with milestones marked pre-approved or needs-discussion in a build plan (L3, D2). It is covered by **M2.5** in `docs/Development-Plan.md`, which designs the new conversational loop that replaces `control.py`. Fixing it in `control.py` would be thrown away when that loop retires.
Sign in to join this conversation.