- Use a
main/developgit flow. - Keep the primary checkout on
mainordevelop, not feature branches. - Create feature branches from
develop. - Open normal pull requests against
develop. - Merge
developintomainfor release readiness and release publication. - Use git worktrees when parallel tasks need isolated branches.
- Phase plan doc:
docs/phase-X/phase-X-plan.md(e.g.docs/phase-C/phase-C-plan.md). - Prose sprint identifiers (doc
id:field, headings, running text) use dot notation matching the phase letter's own case:X.#(e.g.C.2). - Sprint doc filenames and worktree names use lowercase kebab syntax:
sprint-x-#-<description>.md(e.g.docs/phase-C/sprint-c-3-python-release-train.md) — lowercase phase letter, dash-separated from the sprint number, dash-separated from a short kebab-case description. - Python companion sprint prose identifiers append
-pyto the Rust sprint id:X.#-py(e.g.D.2-py). - Python companion sprint doc filenames use the same Rust sprint number plus a
-py-marker:sprint-x-#-py-<description>.md(e.g.docs/phase-D/sprint-d-2-py-bindings.md). - Sprint numbers are contiguous within a phase, starting at 1, with no gaps.
See
.claude/skills/plan-hardening/sprint-planning-guidelines.md. -pycompanions do not consume additional entries in the contiguous Rust sprint-number sequence; they inherit the number of the Rust sprint they wrap.- Branch names are always lowercase.
- Integration branch:
integrate/phase-x(e.g.integrate/phase-c). - Sprint branch:
sprint/x-#-<description>(e.g.sprint/c-2-python-release-train), matching its sprint doc's number and description. - Python companion sprint branches follow
sprint/x-#-py-<description>(e.g.sprint/d-2-py-bindings), again inheriting the Rust sprint number rather than consuming a new one. - If a Rust sprint later splits (for example
D.4intoD.4+D.5), any already-existingD.4-pycompanion remains attached toD.4's retained scope. The newly-created Rust sprint gets its own new companion (D.5-py) only if it exposes bindablesc-composersurface and once its post-split scope is stable enough to document. - This naming convention applies going forward; already-shipped phase/sprint docs and branches (phases A and B) are not retroactively renamed.
Every change should follow:
- Create a feature branch from
develop. - Run local validation.
- Push the branch.
- Open a PR to
develop. - Wait for CI and review before merge.
- Release tags must come from
main, not fromdevelopor a feature branch. - Publishing must follow the order in
release/publish-artifacts.toml. - Release automation must validate publish order and version alignment before any tag or publish step runs.
- Do not switch the main checkout away from
mainfor sprint work. - Create dedicated worktrees for long-running or parallel tasks.
- Remove worktrees only after the user approves cleanup.