Internal documentation — Work in progress
This page has not been confirmed as accurate or approved for publication. Current documentation version: 0.1.0-internal.1.
Versioning
Sagan combines semantic version impact with a Git-derived build identity. The
numeric version is calculated by applying Conventional Commit markers after the
baseline recorded in version.conf. The full form is
MAJOR.MINOR.PATCH+gREVISION[.dirty].
Declaring a commit's impact
Use the commit subject or footer to declare the change:
| Impact | Declaration | Example |
|---|---|---|
| Patch | fix: |
fix: reject empty interpolation |
| Minor | feat: |
feat: add collection literals |
| Major | ! after the type or scope |
feat(parser)!: replace vector syntax |
| Major | BREAKING CHANGE: footer |
BREAKING CHANGE: vectors now require dimensions |
| None | any other type | docs: explain collection parsing |
Scopes are optional, so fix(parser): ... and feat(renderer): ... work as
expected. If a commit contains a breaking marker, major takes precedence over
every other marker.
Preparing a change
The README badge is part of the commit and must show the resulting numeric version. Prepare it before committing:
bash scripts/version.sh prepare patch
bash scripts/version.sh prepare minor
bash scripts/version.sh prepare major
The helper changes only the README badge. It does not stage files, create a commit, or push. Documentation-only and maintenance commits have no version impact and do not require a badge update.
After committing, verify the result:
Additional inspection commands are available:
bash scripts/version.sh numeric
bash scripts/version.sh next minor
bash scripts/version.sh impact HEAD
make get-version uses the same calculator. Builds regenerate the compiled-in
version unconditionally, and .dirty records any tracked or untracked workspace
change.
Baseline changes
version.conf preserves the migration baseline. It should change only when the
project deliberately adopts a new version-history baseline, not during an
ordinary major, minor, or patch commit. Normal version progression comes from
commit declarations.