Repository navigation
ci: rehearse the catalog handoff before the first irreversible release step - #215
Merged
Merged
Conversation
…e step Remote baseline: origin/main @ 23145ec Scope: The Release pipeline published 0.21.0 and then stopped in the catalog handoff, because the handoff pull request failed a unit test that nothing had run beforehand. Publish release now waits for every GitHub Actions check on the release commit, not only the required ones, and rehearses the catalog handoff in a disposable worktree of that commit, running the publication aggregate and the unit tests on the advanced catalogs, before it dispatches the protected tag controller; when the tag already exists from an earlier attempt, the rehearsal runs before the publisher. The release candidate job rehearses the same handoff on the pull-request head, and the catalog job merges only after every check on the handoff commit has finished. Both jobs set up Node.js because the aggregate validates the JavaScript release guard with it. Repository tests derive the totals that grow with every release, such as the required public files, Markdown files, release-fact surfaces, and installed-runtime inputs, from the production validators instead of pinning them; the current routing-context record is checked for consistency with the measured bytes; and the agent-plugin-architect description is pinned by its route-boundary sentences instead of verbatim. The pinned action count rises to 30 for the two Node.js steps. The release documentation, repository governance, and contributor validation pages describe the new gates. Repository policy revision 113 is recorded with an unchanged plugin version and runtime digest. Validation: python3 -B scripts/check-publication.py: passed on the exact tree (153 required files, 30 immutable action pins) python3 -B -m unittest discover -s tests -p 'test_*.py': 312 tests OK, 1 skipped (Windows-only), in a disposable clone of the tree rehearse_catalog_handoff with the real commands on a committed copy of the tree: passed git diff --check: clean; ASCII scan of the changed Markdown, JSON, and YAML 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
Make the Release pipeline prove its post-publication steps before its first irreversible one, and stop repository tests from needing an edit on every release. The pipeline published 0.21.0 and then stopped in
Advance marketplace catalogsbecause the handoff pull request #208 failedunit-and-integration-tests; nothing had run that test on the advanced catalogs before the immutable Release existed.Publish releasenow waits for every GitHub Actions check on the release commit, not only the three required ones andVerify signed main history, and rehearses the catalog handoff in a disposable worktree of that commit, runningscripts/check-publication.pyand the unit tests on the advanced catalogs, before it dispatches the protected tag controller. When the tag already exists from an earlier attempt, the rehearsal runs before the publisher instead.Release candidaterehearses the same handoff on the pull-request head, andAdvance marketplace catalogsmerges only after every check on the handoff commit has finished without failing.Repository tests no longer pin the totals that grow with every release.
tests/test_validator_isolation.pybuilds its expected aggregate summary from the production owners (required public files, Markdown files, release-fact surfaces, installed-runtime inputs, skill rows, route fixtures) and keeps fixture totals literal;tests/test_documentation.pyrecomputes the Markdown and generated-region totals;tests/test_context_budget.pychecks the current routing-context record against the threshold assessment of the measured bytes instead of pinning one release's outcome; andagent-plugin-architect's description is pinned by its route-boundary sentences instead of verbatim.Affected files and surfaces
.github/workflows/release-pipeline.yml(Node.js setup in the candidate and publish jobs);axiom_validation/release_pipeline.py(settled-check wait, handoff rehearsal, workflow contract);axiom_validation/repository_policy.py(description anchors);tests/test_release_pipeline.py,tests/test_validator_isolation.py,tests/test_documentation.py,tests/test_context_budget.py,tests/test_action_graph.py(30 pins);docs/maintainers/release-documentation.md,docs/repository-governance.md,docs/maintainers/validation.md;CHANGELOG.md(repository policy revision 113);evidence/repository-policy-revisions-v1.json,evidence/runtime-identity.json,evidence/release-status.json,docs/runtime-identity.md(revision 113)Routing and authorization impact
Publish releasestops before any mutation when a check on the release commit has failed or the rehearsed catalog handoff fails a repository check;Release candidatefails on the pull request for the same rehearsal failure;Advance marketplace catalogswaits for every check on the handoff commit before merging.Documentation
docs/maintainers/release-documentation.md(Release Pipeline),docs/repository-governance.md(Release Pipeline), anddocs/maintainers/validation.md(Required Checks, Validation Tooling) describe the new gates and the test policy. Installation and hook commands are unchanged.Validation
python3 -B scripts/check-publication.pypython3 -B -m unittest discover -s tests -p 'test_*.py'git diff --checkrehearse_catalog_handoffran with its real commands on a committed copy of this tree and passed, leaving the checkout and worktree list clean; the ASCII scan of the changed Markdown, JSON, and YAML files passed;release-lifecycle.mdin the private maintenance workspace was updated separately to describe the new wait and rehearsal.Identity: repository-policy-only change; plugin version 0.22.1 and runtime contract digest
sha256:34958160debfb8b9b8f2db6be6bd0b2392b580293c03ef3f11279cbd11e608c1unchanged; repository policy revision 113.Cross-platform parity
Unrelated work