main ← production (tagged releases)
├── feat/prd-018-dag ← feature branch
├── fix/search-bug ← bugfix branch
└── docs/rfc-002 ← docs-only branch
| Branch | Created from | Merges into | Strategy |
|---|
feat/*, fix/* | dev | dev | Merge commit via PR |
release/v0.x.0 | dev | main + dev | Merge commit |
hotfix/* | main | main + dev | Cherry-pick |
<type>(<scope>): <description>
Refs: RFC-001, FR-001..004
| Type | When |
|---|
feat | New functionality |
fix | Bug fix |
docs | Documentation / artifacts |
refactor | No behavior change |
test | Tests only |
chore | Build, deps, CI |
Code → Audit → Fix → Test → Fmt → Lint → PR
Never create PR immediately after code. PR means: “I tested, audited, formatted, and everything works.”
cargo fmt -- --check # verify: 0 diffs
cargo check # compile: 0 warnings