Repository navigation
ci: gate releases on checked-in fresh-session routing observations for changed routes - #231
Merged
Merged
Conversation
…r changed routes Remote baseline: origin/main @ e88e306 Scope: The identity standard requires fresh-session routing observations on both hosts for every release that changes a route, but nothing enforced it: the only checked-in host records are the six-case v0.19.0 lifecycle records, and 0.22.0 and 0.22.1 shipped without one. A release candidate now carries a schema v6 observation record of the current benchmark per host under evals/results/v<version>/<host>/<os>.json, with a candidate-unreleased subject naming the observed commit and tree. The new routing_evals.candidates module validates such records against the current corpus, profile, and response schema, and the publication aggregate checks every record of the current version on each run. The Release pipeline computes the routes whose skill files changed (the pull request's base to head in the candidate job, the release commit's parent to the commit in the publish job; a gate change selects every route) and refuses, before any irreversible step, a release that lacks an accepted record for either host; a record is accepted when the installed runtime digest at its observed commit equals the release commit's digest, so documentation-only commits on the same pull request keep it valid. Both job summaries report the gate. Description anchors shrink to three authority invariants (delegation consent and permission-bypass, explicit-only supervised progress, rollback for persistent change); trigger wording is left to the routing corpus and the observations. The evaluation guide, release documentation, contributor validation guide, and compatibility reference describe the gate, and the 0.22.0 and 0.22.1 releases are recorded as predating it. Repository policy revision 118 records the change for Issue #220 in the ledger with an unchanged plugin version and runtime digest. Validation: python3 -B scripts/check-publication.py: passed on the exact tree (153 required files, 169 Markdown files, 30 immutable action pins) python3 -B -m unittest discover -s tests -p 'test_*.py': 315 tests OK in a disposable clone of the tree (3 new: gate refusal and acceptance, no-route-change exemption, checked-in record validation) git diff --check: clean; ASCII scan of the changed Markdown and JSON files: passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Refs #220.
docs/runtime-identity.mdrequires fresh-session routing observations on both hosts for every release that changes a route, but no check enforced it: the only checked-in host records are the six-case v0.19.0 lifecycle records, the 36-case run for 0.22.0 was not retained, and 0.22.1 shipped with none. This change makes the requirement a release gate:evals/results/v<version>/<host>/<operating-system>.json, with acandidate-unreleasedsubject naming the observed commit and tree. The newaxiom_validation/routing_evals/candidates.pyvalidates such records against the current corpus, benchmark profile, and response schema, and the publication aggregate validates every record of the current manifest version on each run.Release candidate; the release commit's parent to the commit inPublish release; a change to the gate selects every route) and refuses, before any irreversible step, a release that lacks an accepted record for either host. A record is accepted when the installed runtime digest at its observed commit equals the release commit's digest, so documentation-only commits on the same pull request keep it valid while any installed-runtime change requires a new observation. Both job summaries report the gate.evals/README.md(Candidate Observations),docs/maintainers/release-documentation.md,docs/maintainers/validation.md, anddocs/compatibility.mddescribe the gate and record that 0.22.0 and 0.22.1 predate it.Repository policy revision 118 records the change in the ledger; the plugin version and runtime contract digest are unchanged.
Affected files and surfaces
axiom_validation/routing_evals/candidates.py(new),axiom_validation/routing_evals/suite.py,axiom_validation/routing_evals/__init__.py,axiom_validation/release_pipeline.py(gate),axiom_validation/routing_contracts.py(anchors);tests/test_release_pipeline.py,tests/test_routing_evals.py;evals/README.md,docs/maintainers/release-documentation.md,docs/maintainers/validation.md,docs/compatibility.md;evidence/repository-policy-revisions-v1.json,evidence/runtime-identity.json,evidence/release-status.json,docs/runtime-identity.md,docs/repository-policy-revisions.md(revision 118)Routing and authorization impact
Release candidatefails a pull request that changes a bundled route without accepted observation records for both hosts;Publish releasestops before the tag for the same reason.Documentation
The four documents above describe the record location, subject binding, acceptance rule, and the exemption for releases that change no route. Installation and hook commands are unchanged.
Validation
python3 -B scripts/check-publication.pypython3 -B -m unittest discover -s tests -p 'test_*.py'git diff --checkCross-platform parity
Unrelated work