Skip to content

Release and Versioning

bijux-canon-runtime derives its version from the repository-wide v<version> tag. A runtime release binds manifest and policy contracts, execution modes, lower-package adapters, verification arbitration, DuckDB persistence, CLI behavior, HTTP schema, and replay semantics to one source state.

flowchart LR
    C[Runtime contracts and changelog] --> T[Repository release tag]
    T --> B[Build wheel and source distribution]
    B --> G[Validate version, changelog, schema hash, and contents]
    G --> P[PyPI]
    G --> H[GHCR release bundle]
    G --> R[GitHub Release assets]

What constitutes a runtime release change

Changed surface Release significance
manifest, policy, plan, event, trace, or decision model authority contract change
plan, dry-run, live, observe, or unsafe behavior execution-permission change
lower-package adapter composition and compatibility change
verification rule or arbitration acceptance and certifiability change
effect, retry, checkpoint, or recovery operational safety change
DuckDB schema, migration, or lock persistence compatibility change
replay envelope, acceptability, or diff historical comparison change
CLI command, root import, HTTP schema, or status public interface change

Record the caller-visible effect in packages/bijux-canon-runtime/CHANGELOG.md. The release build requires the resolved base-version section to contain Added, Changed, and Fixed headings. State whether existing databases require migration, which historical runs remain reconstructable, and whether replay policy changed.

Version and artifact guards

Hatch VCS resolves the version from Git. Dirty and untagged checkouts may produce local or development versions, which publication rejects unless the workflow explicitly permits them. Artifact filenames must match the resolved version.

The wheel carries py.typed and the runtime API schema hash. A release is invalid if the checked-in API source, pinned schema, packaged hash, or handler behavior disagree. The current run and replay HTTP handlers must remain documented as 501 Not Implemented until implementation and contract evidence land together.

Focused release evidence

make test PACKAGE=bijux-canon-runtime
make lint PACKAGE=bijux-canon-runtime
make quality PACKAGE=bijux-canon-runtime
make api PACKAGE=bijux-canon-runtime
make build PACKAGE=bijux-canon-runtime

Inspect the built distributions for the full runtime package, root exports, canonical CLI, license, README, typed marker, and schema hash. Install the wheel in isolation with canonical workspace dependencies and prove planning, execution, database validation, inspection, and replay against a controlled manifest.

Persistence or replay changes require representative migration and historical state fixtures, not only a new empty database. External effects require a partial-failure proof because local persistence cannot provide a distributed transaction.

Compatibility and publication

bijux-canon and agentic-flows expose compatibility paths to canonical runtime authority. New modes, decisions, persistence meaning, and replay verdicts begin in bijux-canon-runtime; aliases must delegate.

The same staged distributions feed PyPI, GHCR release bundles, and GitHub Release assets. Multiple custody surfaces do not create separate runtime authorities.

A release is incomplete if operators cannot tell how to migrate stored state, interpret historical verdicts, or distinguish implemented interfaces from schema-only commitments.