Release Process¶
codira uses a conservative main-branch release flow backed by
semantic-release.
Local checks¶
Before pushing release-bearing commits to main, verify the repository is in a
publishable state:
python scripts/benchmark_release.py
git release-audit
The benchmark command runs the release Hyperfine plan for indexing, context
retrieval, and docstring audit operations. It writes JSON results to
.artifacts/benchmarks/release/release-hyperfine.json.
That audit checks:
- clean working tree
- upstream alignment when an upstream is configured
- latest reachable semantic tag ancestry
CHANGELOG.mdconsistency- semantic-release baseline visibility
Before a coordinated package publication, also run the installed-wheel host-target rehearsal documented in the release checklist. It is the release evidence that the standalone host model still supports workspace MCP routing, old declared target Python syntax, and shared model reuse without monorepo imports.
Direct git push to main is blocked by the pre-push hook once the repo-local
hooks are installed.
Use:
git rel
That guarded path first builds the published documentation in strict mode, before any fetch, pull or push. It repeats that check after pulling so incoming changes cannot bypass it, then runs the release audit and previews semantic-release with the scoped GitHub environment, and then pushes with the expected temporary bypass variables.
Publishing model¶
Releases are created by GitHub Actions after commits land on main.
For a release that changes similarity-index configuration or artifact formats,
the release notes must lead with the breaking reset path: regenerate a v1
configuration with codira config init --force, select an installed similarity
index, run codira emb reset for incompatible derived state, and index again.
Profile-only changes are not persisted-artifact migrations and do not require a
rebuild.
The current release workflow:
- runs on pushes to
main - runs
semantic-release - creates the next version tag when commits warrant a release
- updates
CHANGELOG.md - publishes the GitHub release
Manual tags¶
Manual release-tag creation is not part of the normal workflow.
Use manual tag creation only for repair operations or exceptional recovery.
Documentation gate¶
Run uv run python scripts/check_docs.py from the checkout root to reproduce the
Docs workflow's strict build locally. The quality preflight and full repository
gate include this check. Generated HTML is removed automatically; build failures
and warnings remain visible and stop git rel before publication.
Documentation-relative links must stay inside docs/, not merely inside the
Git checkout. Cite source files using immutable GitHub commit URLs. Describe
ignored .artifacts/ measurements as plain code-formatted local paths: they are
operator evidence, not files published by the documentation site. Missing files,
unrecognized local links and absolute filesystem links remain fatal warnings.
The installed git rel alias requests the docs dependency extra automatically.
After updating a checkout, refresh its aliases with
uv run python scripts/install_repo_git_config.py. Existing aliases still call
the guarded release entry point, but may require a prior uv sync --extra docs.