epic #252: Gate the release tail on the invocation rewrite - #337
Merged
Conversation
Adds an executable invariant-15 gate: a shipped component body may name a path under the component tree only when the payload carries that file. `pnpm nexus:release-gate` prints every offending body and exits non-zero, and release-procedure.md step 4 stops the release there. Also: - delivery_config.py loses its second entry point, so the byte-code suppression has one place to hold (invariant 8), with the assertion in test_packaging.py. - release-notes checks the breaking-change wording an entry needs while the version is below 1.0. - build-bundles, pack-release and vendor-bundle use isDirectRun() rather than the string run-guard the record replaced. - bundle-fingerprint.json and payload-manifest.json re-pinned. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0117PM8UzzRSpUvZuRekR6i6
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0117PM8UzzRSpUvZuRekR6i6
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.
Closes out the conformance findings from the epic #252 analyze pass. PR #333 carried the package definition; this carries the release-tail gate and the loose ends the receipt named.
The invocation gate
pnpm nexus:release-gatescans the shipped component bodies and fails on any.claude/…path the payload itself does not carry. Decision record #334 invariant 15 forbids the tag and the public publish while a shipped body reaches a toolkit capability by an in-repository script path — those paths exist in no installed package, so a release cut today would put bodies on the registry that cannot work.The rule is narrow: a path the payload carries resolves wherever the components are deployed, so it passes; a path it does not carry is a capability that moved into a toolkit and must be reached by the toolkit's name. It is red today on twelve references across
nxs.epic.md,nxs.setup.mdandnxs-epic-resolve/SKILL.md, and goes green by itself when #250 lands.docs/delivery/release-procedure.mdruns it as step 4, ahead of tag and publish.Also
delivery_config.pyloses its second entry point, so the byte-code suppression has one place to hold (invariant 8), asserted intest_packaging.py.release-noteschecks the breaking wording an entry needs while the version is below 1.0, and the procedure records in writing that the suite checks the entry's language, not its coverage.build-bundles.ts,pack-release.tsandvendor-bundle.tsuseisDirectRun()rather than the string run-guard the record replaced.bundle-fingerprint.jsonandpayload-manifest.jsonre-pinned.Story #312's AC1
AC1 required a release to have actually been cut, which invariant 15 forbids inside this epic. It is rescoped on #312 to the identity check (
checkReleaseIdentity) that this story actually built, with the amendment recorded on the issue. Cutting the release — tag, registry publish, releases-page entry — is re-filed as #336, blocked by #250.Verification
tsc --noEmitclean.pnpm nexus:release-gateexits non-zero on the twelve known references, as intended.🤖 Generated with Claude Code
https://claude.ai/code/session_0117PM8UzzRSpUvZuRekR6i6