Development Workflow
Development Workflow
KoutenDB uses a stable-main workflow.
Branch Roles
| Branch | Role |
|---|---|
main |
Released, tagged, public-stable state. Documentation and package metadata on main should describe what users can install or evaluate now. |
devel |
Integration branch for the next release. Feature work targets devel first, not main. |
feature/... |
Focused implementation branches created from devel. |
docs/... |
Documentation-only branches created from devel unless they are patching released docs. |
test/... |
Test and CI changes created from devel unless they are release hotfixes. |
release/vX.Y.Z |
Short-lived release preparation branch cut from devel after the next release scope is ready. |
hotfix/... |
Urgent fix branch cut from main when the released state needs a direct patch. |
Protected Branch Routes
| Source | Target | Required gate |
|---|---|---|
devel |
main |
Pull request whose required gate verifies successful push CI for the exact current devel HEAD; the complete suite is not repeated. |
hotfix/* |
main |
Pull request with the complete CI suite. |
main |
devel |
Pull request with the complete CI suite. |
| any other branch | main |
Rejected by the branch route policy. |
| direct push | main |
Rejected by the repository ruleset. |
Normal Feature Flow
- Update local
devel. - Create a focused branch from
devel. - Implement and test the change.
- Open a PR into
devel. - Merge only after CI passes.
Feature branches should not target main directly. This keeps main aligned
with released tags and avoids exposing half-integrated work as the public
default state.
Release Flow
- Decide the next release scope on
devel. - Cut
release/vX.Y.Zfromdevel. - Update package metadata, release notes, and release checklist state.
- Open a PR from
release/vX.Y.Zintodeveland merge it after CI passes. - Wait for the CI run on the resulting
develHEAD to pass. - Open a pull request from
develintomain. - Merge after the required gate confirms that the pull-request HEAD is still
the current
develHEAD and that its exact push CI run succeeded. - Tag the merge commit on
main. - Create the GitHub Release from the release notes.
The devel-to-main pull request remains the auditable release boundary, but
does not repeat the complete suite. Its required gate validates the already
successful CI evidence for the exact current devel commit. Tags are created
only from main.
Hotfix Flow
Use a hotfix only when the currently released state needs a direct correction.
- Create
hotfix/...frommain. - Apply the smallest safe fix.
- PR into
main. - Merge only after the complete PR CI suite passes.
- Tag a patch release after merge.
- Open a PR from
mainintodeveland merge only after the complete PR CI suite passes.
Branches other than hotfix/* cannot open an accepted PR into main. Human
pushes directly to main are prohibited by the repository ruleset.
Work In Progress
Large work should stay on a feature branch until it is coherent enough to enter
devel. If work must pause while a release is prepared, stash or commit it on
the feature branch. Do not apply unfinished feature work directly to devel.
CI Expectations
The repository CI is the release gate for merged branches. Pull requests into
devel, hotfix/* pull requests into main, and main synchronization pull
requests into devel run the complete suite. A push to devel runs the same
suite and creates exact-SHA evidence. A devel-to-main pull request checks
that evidence instead of repeating the expensive jobs. Other pull-request
routes into main fail the source policy and required gate.
Core checks include:
- Nim semantic checks;
- SSL-enabled checks;
- C ABI contract checks;
- core tests;
- CLI, cluster, recovery, universe, and TLS smoke tests.
Driver compatibility tests may remain optional when the relevant driver repositories are developed separately.