Skip to content

Phase-open prompt

Paste at the start of each phase. The agent verifies entry criteria, writes the phase-open decision doc, and triggers phase.open downstream.


You are opening Phase <> of this project. You are operating as the planner subagent (see AGENTS.xml).

Do not skim. Read these in order:

  1. docs/north-star/intent.md — confirm the phase you’re about to open serves the intent. If it doesn’t, stop and tell me what you found.
  2. MILESTONES.md § Phase <> — read the entry criteria, subphases, acceptance gates, verification round trigger, and handoff to phase <<N+1>>.
  3. The phase-close decision doc for phase <> (docs/decisions/YYYY-MM-DD-phase-<<N-1>>-close.md) — note which deferred milestones from that phase live in this one. They get priority.
  4. CLAUDE.md § Invariants and § Drift watches.
  5. META-RULES.md — particularly MR-1, MR-2, MR-10, MR-11.

For each entry criterion in MILESTONES.md § Phase <>, produce a one-line verdict: met, not-met, or n/a with a citation. If any criterion is not-met, stop and surface what’s missing — do not open the phase.

Now that you’ve read the ground truth, look at the phase as currently scoped in MILESTONES.md and answer:

  • Does the scope still serve north-star intent? (Yes / No / Drift-suspected.) If drift-suspected, route to the drift-watcher subagent before opening.
  • Are the deferred milestones from phase <> still relevant? Things change between phases; some deferred items may now be n/a or superseded. Surface any to me for confirmation.
  • Are the acceptance gates still falsifiable as written? If any gate has become vague or reads “we’ll know it when we see it”, flag it. Vague gates are how phases never close.

Step 4 — Write the phase-open decision doc

Section titled “Step 4 — Write the phase-open decision doc”

Create docs/decisions/<<TODAY_ISO>>-phase-<<N>>-open.md with this structure:

# Phase <<N>> — <<TITLE>> — open
**Date:** <<TODAY_ISO>>
**Predecessor:** Phase <<N-1>> (`docs/decisions/<<DATE>>-phase-<<N-1>>-close.md`)
**Status:** open
## Entry criteria — verdict
| Criterion | Verdict | Citation |
| --------- | ------- | -------- |
| ... | met | <<file:line>> |
## Inherited from phase <<N-1>>
- Deferred milestones: <<list with M-IDs>>
- Open questions: <<list>>
- Invariants in flight: <<list>>
## Phase scope (re-confirmed)
- Goal: <<ONE_PARAGRAPH>>
- Subphases: <<M{N}.1, M{N}.2, ...>>
- Acceptance gates: <<list, copied from MILESTONES.md>>
- Verification round trigger: <<when>>
- Handoff target: phase <<N+1>>
## Anti-shape watch
For this phase, the active drift risks are:
- <<NAMED_ANTISHAPE_1>> — guarded by <<COUNTER_ANCHOR>>
- <<NAMED_ANTISHAPE_2>> — guarded by <<COUNTER_ANCHOR>>
## Subagents that will spawn this phase
- <<list, derived from AGENTS.xml spawns_on triggers>>
## Open questions deferred to phase <<N+1>>
*(initially empty; populated by the verification round at close)*
## Sign-off
- Planner: <agent run>
- Human: <name + date when confirmed>

Set Phase <> status to open. Update the Active phase block at the top of MILESTONES.md to point at Phase <>. Set the open date.

End your turn with:

  • Path to the phase-open decision doc.
  • The first milestone (M<<N>>.1) and the subagent that owns it.
  • A reminder: the implementer should be invoked next, with M<<N>>.1 as its scope.

Do not start implementer work in this session. Phase open is its own act.


  • If Step 2 returns not-met on any criterion, don’t override it. The criteria exist because the prior phase’s verification round earned them. Override is how the system rots.
  • Step 3’s drift-suspected verdict is rare but important. If it fires, paste prompts/04-drift-check.md next, not the implementer prompt.
  • The phase-open decision doc is short on purpose. The richness is in MILESTONES.md and the prior phase-close doc; this one is a checkpoint, not an essay.