ceremony-ci-probe/test
cluade-reviewer-andresmgsl f2d5fcd565 feat(forge): derive outstanding review requests from the head, not the field
Term 4. GitHub clears requested_reviewers when a verdict lands, so the field
answers "who still owes a verdict" by itself. Forgejo never clears it —
measured: rig!140 listed all three panelists with all three verdicts in, and
rig!146 still lists three while MERGED, so the field is stale even on a
closed PR.

Read raw on Forgejo that is not a cosmetic over-count. `requested` drives
three decisions, and a permanently-true field pins a PR at
state:bots-reviewing for life and stops blocker:unrequested from ever being
true: the sweep believes a round is live forever and no staleness can
correct it.

So the requested set is intersected with who has NOT submitted a verdict for
the current head, derived from /pulls/{n}/reviews — the read that is true on
both forges. On GitHub the filter removes nothing, because the field is
already accurate; term 5 holds by construction rather than by care.

A STALE approval — an approval of an older head — still owes a verdict. That
is the case that matters: treating it as answered would let a stale round
read as complete, which is the shape #136 exists to prevent.

Mutation-verified both ways: reading the field raw again reds three cases,
and treating STALE as answered reds two.

Also documents @grok-reviewer-andresmgsl's ask (#4763): every panel= account
must be able to read the repo, or the forge refuses the review request —
422 naming the account on Forgejo. A real failure mode for private
consumers, and it fails loudly rather than sweeping blind.

Refs #188
2026-08-02 19:48:09 +00:00
..
fixtures Merge pull request #29 from codex-bot-andresmgsl/build/4-changelog-section 2026-07-22 20:12:01 +01:00
changelog-armed.test.sh fix: the sentinel's one-line contract is checked on the file, not the $(cat) word 2026-07-25 13:29:02 +00:00
changelog-assemble.test.sh test: sentinel rows across the shape predicate, the armed guard, and the assembler 2026-07-25 13:12:30 +00:00
changelog-assembled.test.sh test: cover grouped anchored release replay 2026-07-24 16:17:02 +00:00
changelog-monotonic.test.sh test: changelog-monotonic contract suite — constructed git histories 2026-07-22 21:11:46 +00:00
changelog.test.sh fix: the sentinel's one-line contract is checked on the file, not the $(cat) word 2026-07-25 13:29:02 +00:00
closes_references.test.sh feat(forge): replace both gh api graphql sites with REST + a body parser 2026-08-02 18:41:03 +00:00
decide.test.sh feat: lib/decide.sh — the merge door's decision, pure and exhaustively tested 2026-07-22 18:59:29 +00:00
docs-sync.test.sh fix: refuse non-regular nodes everywhere; machine-verify the mirror README 2026-07-22 21:59:37 +00:00
drill-recorded.test.sh feat: actions/drill-recorded — a release carries its evidence 2026-07-22 21:28:06 +00:00
facts.test.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
forge-backends.test.sh fix(test): the second curl stub needed the SC2317 disable too 2026-08-02 19:24:27 +00:00
forge.test.sh test(forge): assert the distinguishing text, not a surviving substring 2026-08-02 19:16:48 +00:00
harness.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
issueflow-reconcile.test.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
labels-reconcile.test.sh feat(forge): derive outstanding review requests from the head, not the field 2026-08-02 19:48:09 +00:00
labels-scope.test.sh fix(round): labeler.yml header tells the truth; labels-scope maps to scope:labels 2026-07-24 12:22:09 +00:00
labels-triggers.test.sh labels: keep edited/reopened on issues; correct 0.3.0 adoption prose (#199 round) 2026-07-28 19:04:27 +00:00
labels.test.sh labels: keep edited/reopened on issues; correct 0.3.0 adoption prose (#199 round) 2026-07-28 19:04:27 +00:00
release-chain.test.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
ruling.test.sh feat(forge): port every reconciler call site onto the shim 2026-08-02 19:43:58 +00:00
run.sh ci: scaffold test and lint workspace 2026-07-22 16:56:25 +00:00
runner-isolated.test.sh test(guards): runner-isolated fixture matrix — 12 spec rows plus the block-sequence cases (#58) 2026-07-23 12:03:55 +00:00
self-ref.test.sh feat: the reusable release workflow — both doors, one implementation 2026-07-22 19:55:39 +00:00
version.test.sh feat: lib/version.sh — one version abstraction, two backends 2026-07-22 18:19:50 +00:00