Repository navigation
ci(node-runtime-guard): evaluate with the runner's pinned mip, not the stale shim - #761
Conversation
…e stale shim Every PR's guard has failed since #741 merged (2026-09-23 23:58) in "Dump catalog": error: contract broken by a value / failed to validate source_provenance packages/tree/build.ncl:61 category = 'Gitlab The recipe is valid. The public shim's cli pointer (gs://minimal-shim/config/cli-*-linux.json) has said 422f245 (2026-05-28, "this is 0.4.1") since May, and that predates 'Gitlab provenance (minimal d06a77db, 07-14). So CI evaluated with a four-month-old minimal, and the guard correctly failed closed on a catalog it could not read. New composite action .github/actions/setup-mip: fetch the public minimalone-25d38aaa archive, sha256-verify the archive and then the extracted mip-linux-amd64, cache it, and put it on PATH. That mip is byte-identical to the pkgsec runner's pinned evaluator (MIP_SHA256 2c5e01cd...a1ed), so the guard and production now evaluate the catalog with the same binary. The binary hash is re-checked on every run, cache hit or not. The guard's dump step now uses `mip dump`. The other report-only workflows still use the shim and should move to setup-mip too (follow-up). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: gominimal/pkgs/.coderabbit.yaml Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (4)
💤 Files with no reviewable changes (1)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. 📝 WalkthroughWalkthroughThe pull request adds a composite action that installs and verifies a pinned ChangesPinned mip evaluator migration
Sequence Diagram(s)sequenceDiagram
participant RuntimeWorkflows
participant SetupMip
participant GitHubCache
participant ReleaseArchive
participant Mip
RuntimeWorkflows->>SetupMip: Set up pinned mip
SetupMip->>GitHubCache: Look up binary by version and hash
SetupMip->>ReleaseArchive: Download archive on cache miss
ReleaseArchive-->>SetupMip: Return archive
SetupMip->>SetupMip: Verify archive and binary hashes
SetupMip-->>RuntimeWorkflows: Add verified binary directory to GITHUB_PATH
RuntimeWorkflows->>Mip: Run catalog, closure, or version-age dump commands
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No actionable issue was established that would block merging. The first CI run should still confirm the pinned evaluator’s output. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (2 skipped: 2 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
Both report-only jobs used setup-minimal, i.e. the public shim's stale minimal (422f245), whose `minimal dump` fails on current stdlib features. They stayed green by design, so the failure was invisible: version-age warned and no-op'd on an empty dump, stable-closure-check printed UNVERIFIED under --no-fail. Switch both to setup-mip (the runner's sha256-verified 25d38aaa) with identical dump arguments; report-only semantics are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on-age's summary setup-minimal resolved to the public shim's stale 422f245 build. No workflow uses it after this PR, and leaving it around invites copying it into a new one. version-age's step summary still said "minimal dump" after the job moved to mip, so point triage at the right tool. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Scope extended: every CI job that evaluates the catalog now uses the pinned
Not changed on purpose: Checked before this push:
Not verified yet: these checks used a local mip build, not the pinned 25d38aaa. On this PR's first CI run, version-age should log "dumped N packages" with N > 0, and stable-closure-check should give PASS or NOT CLOSED, not UNVERIFIED. |
Why every PR's guard is red
Since #741 merged (2026-09-23 23:58),
node-runtime-guardfails in Dump catalog on every PR (go-1.27.1, node-26, cadical, binaryen, ghidra, …):tree's recipe is valid. pkgs CI installsminimalthrough the public shim, and the shim's CLI pointer (gs://minimal-shim/config/cli-*-linux.json) has said422f245("this is 0.4.1", 2026-05-28) since May. That build predates'Gitlabprovenance, which minimal added on 07-14 (d06a77db). So CI evaluated recipes with a four-month-old minimal, and the guard correctly failed closed on a catalog it couldn't read. The build-bot and the pkgsec runner use current evaluators, which is why only GitHub Actions broke.Fix
A new composite action,
.github/actions/setup-mip:minimalone-25d38aaaarchive and sha256-verifies it.mip-linux-amd64and sha256-verifies the binary. It is byte-identical to the pkgsec runner's pinned evaluator (MIP_SHA256 2c5e01cd…a1ed), so CI and production now evaluate the catalog with the same binary.The guard's dump step now calls
mip dump. This PR changes the guard workflow, so the guard runs on this PR: that run is the end-to-end test.Follow-ups (not in this PR)
minimal dumpworkflows (version-age, stable-closure-check, …) are report-only and still use the shim; they should move tosetup-miptoo.install.sh.🤖 Generated with Claude Code
Summary by CodeRabbit