feat: verify versioned artifacts in consumer pin transactions - #103
Merged
Conversation
Signed-off-by: rldyourmnd <danil@nddev.it.com>
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.
Modules using
pin_policy: version-tagwere always rejected by consumer pin planning, even after publication.module update-pin --plan --versionandmodule update-consumers --plan --versionnow select a published SemVer artifact without changing the module's pin policy. Planning requires a clean checkout at the fetched tag, proves the origin tag object and peeled commit, runs required module lanes at that commit, and binds the resulting identity and evidence to each consumer's independent plan.Required GitHub publication uses read credentials to prove the exact repository/tag, a published non-draft release, and a complete nonempty uploaded asset inventory with SHA-256 digests. Apply re-observes publication and lanes before staging the one gitlink. The journaled handler and explicit verify re-read artifact and manifest identities, detecting replaced tag objects even at the same commit, changed assets and missing publication. GitHub's
target_commitishcan retain a branch name; read normalization now preserves that metadata while tag resolution establishes the commit. Publication mutations retain their exact-commit contract.Default-branch behavior and consumer-owned atomic transaction boundaries remain enforced. Version selection cannot override a stored plan. Package/registry consumers remain unsupported. The lifecycle contract and consumer skill document the invocation, read runtime, bounded release inventory and verification limits. This transaction proves observed identity; it does not configure provider tag protection or execute downloaded release assets.
Validation:
scripts/validate_go_core.sh --quick(all Go tests, vet, module/lock/schema checks, build and native contract/projection checks); 47 Python tests with the hashed test requirements verified; focused race tests for pin lifecycles, consumer plans, Git tag reads and release adapters; native skill validation and builder skill shape check. Tests cover lightweight/annotated tags, versions older than current main, exact staged gitlinks, stale plans, unrelated checkout changes, failed compatibility, missing/draft releases, missing/digestless/paginated assets and asset replacement before apply and after application. Skill UI implicit invocation remains disabled; these checks do not claim a separate model routing evaluation.Closes #94.