CI: inherit authenticated package baselines across stacked PRs#904
CI: inherit authenticated package baselines across stacked PRs#904brandonpayton wants to merge 1 commit into
Conversation
Archive-neutral child PRs previously resolved only against the durable ABI release, even when their same-repo base PRs had changed every package key. Authenticate the recursive base-PR chain, snapshot exact staged archives with release, workflow-run, digest, ABI, and cache-key validation, and rebuild only unresolved requirements. Carry inherited archives through the current workflow run for library, program, and test consumers; reject ambiguous overlays and prevent stacked PRs from publishing unmerged state to the durable release. No package recipe, archive input, or ABI changes.
|
Independent exact-head review completed for I traced the same-repository PR-chain authentication, ancestry checks, release/asset snapshots, full cache-key selection, Independent local evidence through This is a main-repository PR and remains for maintainer review; I did not merge or enable auto-merge. |
Summary
built_byworkflow runs, and embedded archive manifests before reuseprepare-mergefrom publishing durable package state while a PR targets a non-default branchRoot cause
PR #900 correctly classified its Homebrew-only contribution as archive-neutral, but
test-gate-prepareresolved only frombinaries-abi-v18. Its open base PR #885 already had the 69 exact current package keys inpr-885-staging, so every durable archive was rejected even though valid staged bytes existed. The workflow accepted arbitrary same-repository base refs for change scope but had no base-PR artifact baseline.Release tags and assets are mutable, and a staging release
target_commitishcan name GitHub synthetic merge state rather than the PR head. This change therefore treats the release index only as a selector, downloads by asset ID, validatesbuilt_byagainst the source PR and workflow run, rechecks PR/release snapshots for races, and uploads accepted bytes into the child workflow run before later jobs consume them. Missing entries remain ordinary matrix work; provenance or mutation failures stop the run.Validation
All commands ran through
scripts/dev-shell.shunless noted.scripts/check-abi-version.sh: snapshot and generated bindings in syncContract impact
No package recipe, archive input, release index, VFS image, host/runtime behavior, or ABI surface changes. No ABI bump or package rebuild is required by this PR. Stacked PRs remain staging-only until retargeted to the default branch for durable publication.
Residual risk
The live probe exercised one real archive rather than downloading the full 69-archive #885 staging release locally. The mocked suite covers multi-level selection and the PR workflow will exercise the complete current CI wiring. A base release that mutates during selection intentionally fails closed and requires a fresh child run after the base staging run stabilizes.