Unit: applied-ontology-readiness
Plan section: AOR-3
Decision: ADR-A86 addendum, items 1 to 3
A version IRI identifies one content of its document. Every published
ontology document (under spec/ or vocab/) carries one, and a content change
never lands under an unchanged version IRI.
| ID | Given / When / Then | Level | +/- |
|---|---|---|---|
| AOR3-01 | spec document content changed, version unchanged / check / flagged | L1 | - |
| AOR3-02 | content and version changed together / check / passes | L1 | + |
| AOR3-03 | untouched repository / both checks / pass | L1 | + |
| AOR3-04 | spec document without a version IRI / unversioned check / flagged | L1 | - |
| AOR3-05 | new vocab document without a version IRI / unversioned check / flagged | L1 | - |
| AOR3-06 | example document without a version IRI, content changed / both checks / pass | L1 | + |
| AOR3-07 | new spec document with a version IRI / both checks / pass | L1 | + |
Each test builds a throwaway git repository as its base ref.
mise run check:ontology-versioning
Pass: 7 passed, then 33 in-scope ontology document(s) checked against HEAD:
no unbumped changes.
tools/ontology_version_check.py: requires_version_iri and
check_unversioned, and the UNVERSIONED report line..github/workflows/platform.yml: full-history checkout, the two new test
modules, and the check against origin/main.pyproject.toml: new test extra declaring pytest, installed by
bootstrap:python-root and the workflow. Before this, pytest reached the
root environment only through other tool packages.docs/architecture/ontology-versioning-policy.md: cascade for every bump,
import-only changes take the imported level, enforcement scope.Replacing requires_version_iri’s body with return False failed AOR3-04 and
AOR3-05. Disabling the unchanged-version comparison failed AOR3-01. Restoring
the file returned 7 passes.
owl:versionIRI <module>/0.0.1
(tools/surface/src/surface/compile.py, _ontology_header). Regenerating
the four modules under ontology/surface/execution/job-family/ would change
their content under an unchanged version IRI, which this slice’s own check
rejects. How generated documents are versioned needs a decision. See the
status record.workflow_dispatch only, so the
CI step guards a dispatched branch against origin/main, not every change.