Repository navigation
node-repo-pack-verify: set aside a sibling module-pack call's receipts (--declared) - #2706
Conversation
… set aside a sibling call's Plugins #932 calls node-repo-module-pack.yml twice in one run (the floor the gates compose, and the rest). Both calls' receipts upload as module-pack-receipt-<module> into the run-wide artifact namespace, so each verifier's download-artifact pattern module-pack-receipt-* collected the OTHER call's receipts too and read them as 'built but never selected' — both 'All selected bundles built' contexts went red on run 33275630504, and the two required gates behind them followed. The verifier now takes --declared, the caller's own modules: input. A receipt for a module this call never declared belongs to a sibling call: it is set aside and NAMED in the notes, never counted. Inside the declared set the accounting is exactly as strict as before, and a SELECTED module the caller never declared is refused outright (the selector and the matrix disagreeing). Empty --declared keeps the old behaviour, so callers on older refs are unaffected. Self-test: the sibling receipt must pass and be named; a declared-but-unselected build must still fail; an undeclared selection must fail; the three --declared shapes parse. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR hardens the node-repo-module-pack reusable workflow’s receipt verification to handle the case where the workflow is invoked twice in the same run (artifacts are run-wide), by letting the verifier ignore receipts that belong to a sibling invocation via a new --declared input.
Changes:
- Add
--declaredsupport tonode-repo-pack-verify.pyso verification only counts receipts from the caller’s declared module matrix and names sibling-call receipts in notes. - Pass the caller’s declared
inputs.modulesthrough to the verifier innode-repo-module-pack.yml.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| .github/workflows/node-repo-module-pack.yml | Passes --declared "$DECLARED" to scope receipt verification to this workflow call’s matrix. |
| .github/scripts/node-repo-pack-verify.py | Implements --declared parsing and sibling-receipt filtering during verification, plus corresponding self-tests. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Test Results (shard 3)689 tests 497 ✅ 4m 56s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results (shard 5)1 528 tests 1 528 ✅ 6m 21s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results (shard 2)941 tests 941 ✅ 5m 13s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results (shard 0)913 tests 913 ✅ 5m 18s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results (shard 4) 10 files 10 suites 5m 55s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results (shard 1)788 tests 784 ✅ 7m 20s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Test Results 41 files 41 suites 35m 5s ⏱️ Results for commit 14f0cea. ♻️ This comment has been updated with latest results. |
Copilot: --declared filtered well-formed receipts by module but left `broken` unfiltered, so a malformed receipt uploaded by a sibling module-pack call would still red this verifier — the same cross-call interference through a different list. Broken entries are keyed by their file stem (the module the receipt is for); one outside the declared matrix is the sibling's finding and is set aside with the others. A corrupt receipt of a DECLARED module still fails. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Why
Plugins #932 calls `node-repo-module-pack.yml` twice in one run — the floor the gates compose (AI + Markdown.Collaboration) and the other 29. Artifacts are run-wide: both calls upload `module-pack-receipt-`, so each call's `All selected bundles built` downloaded the OTHER call's receipts (`module-pack-receipt-*`) and read them as built but never selected. Both lane contexts went red on Plugins run 33275630504 and the two required gates behind them followed (`Every need this gate builds on must have succeeded`).
What
Self-test
`python3 .github/scripts/node-repo-pack-verify.py --self-test` — the sibling receipt passes and is named; declared-but-unselected still fails; undeclared selection fails; the three `--declared` shapes parse. All 18 cases green.
🤖 Generated with Claude Code