What
main is currently red: six tests fail on origin/main (9ec808c47) with no PR involved. Every PR opened against it inherits the failure, so validate fails for work that is itself correct.
npx vitest run test/unit/queue.test.ts test/unit/agent-approval-queue.test.ts
| Test |
File |
| surfaces stale optional CI after the stale-CI cap |
test/unit/queue.test.ts |
| REGRESSION (#selfhost-ci-verification gate review): a swallowed branch-protection read failure never writes the fail-open aggregate through to the durable cache |
test/unit/queue.test.ts |
| threads the repo's expectedCiContexts into the accept-time live CI re-check |
test/unit/agent-approval-queue.test.ts |
| unions branch-protection contexts into the accept-time live CI re-check |
test/unit/agent-approval-queue.test.ts |
| falls back to expectedCiContexts when the accept-time branch-protection read fails |
test/unit/agent-approval-queue.test.ts |
(plus the ciRequiredContextsKey expectation in the second queue case) |
test/unit/queue.test.ts |
Why
#9813 (gate.ignoredCheckRuns) made two shape changes and did not carry them into these expectations:
fetchLiveCiAggregatePreferGraphQl gained an 8th parameter, ignoredCheckRuns. The assertions still list seven arguments.
- The live-fact cache key gained an
|ign: fragment (ci-resolution.ts builds …|adv:…|ign:…). One expectation still ends at |adv:.
Two of the accept-path assertions also still expect undefined for advisoryCheckRuns where the settings resolver now supplies null — the resolver returns the column's value rather than an absence, and toHaveBeenCalledWith distinguishes the two.
The production code is correct. Only the expectations are stale, which is why nothing is broken at runtime and why this went unnoticed: #9813's own CI ran before the later merges that made both call paths exercise the new argument.
Fix
Update the six expectations to the real signature and key shape. No source change.
What
mainis currently red: six tests fail onorigin/main(9ec808c47) with no PR involved. Every PR opened against it inherits the failure, sovalidatefails for work that is itself correct.test/unit/queue.test.tstest/unit/queue.test.tstest/unit/agent-approval-queue.test.tstest/unit/agent-approval-queue.test.tstest/unit/agent-approval-queue.test.tsciRequiredContextsKeyexpectation in the second queue case)test/unit/queue.test.tsWhy
#9813 (
gate.ignoredCheckRuns) made two shape changes and did not carry them into these expectations:fetchLiveCiAggregatePreferGraphQlgained an 8th parameter,ignoredCheckRuns. The assertions still list seven arguments.|ign:fragment (ci-resolution.tsbuilds…|adv:…|ign:…). One expectation still ends at|adv:.Two of the accept-path assertions also still expect
undefinedforadvisoryCheckRunswhere the settings resolver now suppliesnull— the resolver returns the column's value rather than an absence, andtoHaveBeenCalledWithdistinguishes the two.The production code is correct. Only the expectations are stale, which is why nothing is broken at runtime and why this went unnoticed: #9813's own CI ran before the later merges that made both call paths exercise the new argument.
Fix
Update the six expectations to the real signature and key shape. No source change.