Branching model: gitflow
Generated by aiflow from .aiflow/config.json. Change via aiflow change-settings.
- Permanent branches: main, develop
- Strict rules: false PR-only: false Auto-release: true chore/*: true
- Versioning: semver Release tags: true
Allowed branch creation
- feature/* ← from: develop
- bugfix/* ← from: develop
- hotfix/* ← from: main
- chore/* ← from: develop, main
Allowed merges
- develop → main
- main → develop
- feature/* → develop
- bugfix/* → develop
- hotfix/* → main
- hotfix/* → develop
- chore/* → develop
- chore/* → main
main is restricted
- Only
chore/*andhotfix/*may ever targetmain. feature/*andbugfix/*always targetdevelop— nevermain, directly or via PR.- Doc-only changes and CI/workflow-file-only changes (
.github/workflows/**) count aschore/*, notfeature/*.
Releases
- A merge of
develop→mainorhotfix/*→maincreates a release (aiflow release). - A merge of
chore/*→mainnever triggers a release. - Releasing is never automatic — always ask the user before running
aiflow release/ merging into main. - SemVer
MAJOR.MINOR.PATCH, in-progress work always carries a suffix;mainnever does:- develop carries
X.Y.0-SNAPSHOT; on release →X.Y.0(minor release). aiflow hotfix <name>branches off main and bumps toX.Y.(Z+1)-HOTFIX; on release →X.Y.(Z+1)(patch release).- either way, develop is then bumped to
X.(Y+1).0-SNAPSHOT, and hotfix commits are also merged into develop so the fix isn’t lost. - a pre-push guard rejects any push to
mainwhoseVERSIONstill ends in-SNAPSHOT/-HOTFIX.
- develop carries
- A git tag is created on each release (v{version}).
Enforced locally by the pre-push git hook; enforce on the server with branch protection (aiflow protect).