Phase 3 of the Forge build pipeline. Lead Dev converts approved design artifacts into
an executable implementation plan without starting code changes yet. This phase should
prefer Forge's native decomposition surfaces (`auto-decompose`, lane graph helpers,
task briefs, traceability) over handwritten hardcoded checklists. The goal is to
produce a reviewable execution plan that Develop can consume with minimal ambiguity.
<Use_When>
- Automatically invoked after Phase 2 (design) completes
- state.json phase=3 / phase_id="plan"
</Use_When>
<Core_Rules>
- Planning is not implementation. No feature code changes in this phase.
- Prefer native decomposition helpers over manual lane invention when they fit the task.
- The plan must capture ordering, boundaries, and verification intent, not just a todo list.
- If the native decomposition output is weak or noisy, refine it; do not accept it blindly.
- Task briefs must stay lane-scoped and reviewable.
</Core_Rules>
0. **Handoff Interview — Planning Intake (tier-aware, see `references/handoff-interview.md`)**
a. Lead Dev reads architecture, components, tokens, contracts, code-rules.
b. At the top of `.forge/plan.md` (draft), Lead records any **blockers** that
prevent decomposition (unclear lane boundaries, hidden shared-state coupling,
missing contracts/AC, uncertain dependency order) and any **consequential
assumptions**. Free-form bullets, no structured Q template.
c. For each blocker, Lead pings the owner directly via SendMessage
(CTO for architecture/contract, Designer for UX, PM only for spec intent).
No CEO triage hop.
d. At `full` tier only, additionally write `.forge/handoff-interviews/plan.md`
(phase gate enforces this).
e. Blockers resolved → decomposition begins. The draft plan is the understanding
record; no separate statement needed.
-
Generate the first decomposition draft with Forge's native helper:
node scripts/forge-lane-runtime.mjs auto-decompose --description "<spec/design summary>"
-
Review and refine the native decomposition output:
- tighten lane boundaries
- split oversized lanes
- merge trivial lanes
- confirm dependency order
- confirm file ownership scope
-
Write .forge/plan.md as the planning artifact:
- summary of the approach
- lane list with ownership/boundary notes
- execution order / critical path
- verification intent per lane
- open risks or assumptions
-
Create or update .forge/tasks/{lane}.md briefs for each lane:
- scope
- contract references
- acceptance refs / verification expectations
- dependencies
-
Update runtime lane records so Develop can resume from file-backed state:
- lane ids
- scope
- dependency graph
- task file links
- model hints when relevant
-
Internal planning gate:
- Lead confirms the plan is executable without major ambiguity
- CTO confirms the sequencing respects architecture intent
- If a lane graph feels forced or brittle, revise it now rather than during implementation
-
Update state and handoff:
- Update state.json: phase=4, phase_id="develop", phase_name="develop"
- Update company runtime:
node scripts/forge-lane-runtime.mjs set-company-gate --gate implementation_readiness --gate-owner lead-dev --delivery-state in_progress
- Update session handoff toward development:
node scripts/forge-lane-runtime.mjs set-session-brief --goal "Complete the active implementation lanes and hand off to QA" --next-owner lead-dev --handoff "{plan summary}"
-
Create git tag: forge/v1-plan
-
Transition to Phase 4 (forge:develop)
<State_Changes>
- Creates: .forge/plan.md
- Creates/updates: .forge/tasks/{lane}.md
- Creates/updates: .forge/runtime.json lane graph
- Updates: .forge/state.json (phase=4, phase_name="develop")
- Creates: git tag forge/v1-plan
</State_Changes>
<Tool_Usage>
- CLI helper:
node scripts/forge-lane-runtime.mjs auto-decompose
- CLI helper:
node scripts/forge-lane-runtime.mjs init-lane
- CLI helper:
node scripts/forge-lane-runtime.mjs summarize-lanes
- Write tool: create
.forge/plan.md, .forge/tasks/{lane}.md
- Read tool: load design artifacts and contracts
- Edit tool: update
.forge/state.json, .forge/runtime.json
</Tool_Usage>
<Auto_Chain>
When planning completes (plan.md written, lane graph validated, task briefs linked):
- Update state.json: phase_id → "develop"
- IMMEDIATELY invoke Skill: forge:develop
Do NOT stop or ask the user unless there is a real customer-owned ambiguity.
</Auto_Chain>