Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Versioning — four orthogonal axes

The preamble carries four independent uint32 version axes, each bumped on its own:

AxisBumped whenMinor / major
oxbin_format_versionSection model or encoding changesMinor: additive section; major: breaking section/encoding
core_ir_versionThe CoreIR axiom-ADT variant set changesMinor: additive variant/field; major: removal/breaking
tier_ladder_versionThe decidability ladder definition changesMajor only — tiers are semantic, not additive
runtime_contract_versionThe OxbinRuntime trait surface (Runtime contract) changesMinor: additive method; major: breaking signature

Robustness: producers strict, consumers liberal, per axis.

  • A consumer accepts a future minor bump on any axis: load proceeds and unknown additive things degrade gracefully (an unrecognized non-MANDATORY section is skipped).
  • A consumer refuses a future major bump on any axis: load fails with OE1202 IncompatibleVersionAxis(axis, want, got).
  • A consumer refuses any MANDATORY-flagged section it does not recognize, regardless of axis: OE1203 UnknownMandatorySection(section_type).

Within one oxbin_format_version major, an artifact MAY carry two representations of the same logical content side by side (e.g. a DRedc-shaped projection-cache and a DBSP-shaped arrangement-section); each runtime picks the section it understands.

There is no kernel_api_version axis — the runtime contract is the OxbinRuntime trait (Runtime contract), versioned by runtime_contract_version. A backend’s internal schema version (e.g. the Postgres backend’s migrations, Storage layer) is not carried in the preamble; backends version their own schemas.