build-feature
Build a Feature, Phase by Phase
One phase, one PR, reviewed and fixed in rounds before merge. A feature built in one branch can't be tried, and code merged after one review pass merges its fixes unreviewed.
main
└─ integrate/<plan> cut once, before the first phase
├─ <plan>-phase-1 ──PR──▶ integrate build, verify, review x2-3, fix, merge
├─ <plan>-phase-2 ──PR──▶ integrate
├─ <plan>-phase-N ──PR──▶ integrate
└──────────────────PR──▶ main demo, then the user merges
one phase: feat/<plan> ──PR──▶ main no integrate branch
Start from the plan file, never memory. Take the path from the argument, or look under plans/ and ask if several match. Re-read it each phase. If any decision is _open_, stop and send the user back to planning. Before phase 1, check every Verify line and ## Demo: a phase with no proof and no deferral is a planning bug, cheapest to raise now.
Branch as the diagram shows. Cut integrate/<plan-name> from up-to-date main and push it, or reuse it if it exists. Every phase branches from it and targets it, so main never holds half a feature. A one-phase plan skips it: branch feat/<plan-name> off main, and after the demo stop at the green PR for the user to merge.