main is always releasable and protected: required CI, linear history,
squash-merge only.main.| Prefix | Use | Example |
|---|---|---|
feat/ |
new capability | feat/healthz-probe |
fix/ |
bug fix | fix/config-parse-error |
chore/ |
tooling, dependencies, CI | chore/pin-golangci-lint |
docs/ |
documentation only | docs/enterprise-policies |
test/ |
tests only | test/cover-stream-decoder |
refactor/ |
behaviour-preserving restructuring | refactor/split-http-layer |
release/ |
release preparation | release/v0.1.0 |
hotfix/ |
emergency production fix | hotfix/v0.1.1 |
feat(server): add readiness probe, fix(cli): stop swallowing parse errors.KROOT_* variables change, changelog entry for user-visible
changes.AGENTS.md §7 must pass. A red gate is not
“probably fine”.main into a feature branch. Rebase instead, so history stays
linear and bisectable.main| Setting | Value |
|---|---|
| Require pull request | yes |
| Required approvals | 0 during the single-maintainer phase (see below) |
| Dismiss stale approvals on push | yes |
| Require status checks | commit messages, lint, test (ubuntu-latest), test (macos-latest), vulnerabilities |
| Require branches to be up to date | yes |
| Include administrators | yes - administrators are not exempt from the checks |
| Require conversation resolution | yes |
| Require linear history | yes |
| Allow force push | no |
| Allow deletion | no |
Requiring an approval that the only maintainer cannot give to themselves makes the rule decorative: it would have to be bypassed on every change, and a control that is routinely bypassed is worse than no control, because it normalises the override.
The required approval count is therefore 0 until a second maintainer exists. Pull requests, every status check, linear history and the force-push ban remain mandatory, and administrators are not exempt from any of them.
When a second maintainer joins:
required_approving_review_count to 1;require_code_owner_reviews;enforce_admins enabled.hotfix/vX.Y.Z from the tag of the affected release.main, tag vX.Y.Z, publish.