You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Two review receipts, one reader: the §13.11 shadow bot reads evidence/pr-review/ (no producer since #2875) while quorum-review writes docs/audits/quorum-<TICKET>.json (no reader) — REFUSE Q1 on every PR, receipt or not #3639
Two review mechanisms answer "has this PR been judged?", and they read different files:
S13 / PR-REVIEW-SKILL-002 — scripts/pr_review_quorum_arm.sh (the §13.11 rung-1 shadow bot) reads evidence/pr-review/<pr>/<sha>/. No PR since docs(audits): PP-066 S0 discovery ledger — 23 premises measured (epic #2873) #2875 has written there (evidence/pr-review/ holds 2865–2875 + backtest), so the bot prints REFUSE class=Q1 arm_rc=1 on every current PR — a true statement about a path nobody produces. Its Q1 = "receipt missing/invalid/no autonomy block", not paiml-implement's Q1 (|M|≥3). And the newest real receipt (2875) has no predicate.autonomy key, so even a receipt from the last producer gets Q1 from this bot.
Result measured 2026-09-20 22:30Z by aprender-bf: the bot's verdict is identical for a PR with a committed AD-04 receipt and one with none. The cop armed #3634 (P0, 20 files) with neither, and the only thing that stopped it was another session reading the tree.
Ruling in force tonight (cop, 22:35Z)
The AD-04 artifact is the arming evidence: docs/audits/quorum-<TICKET>.json on the branch, three independent lanes (transcripts inspected for $WORK sibling reads), posted on the PR. Every PR, no size threshold — the skill's rule is literal. The S13 path is dormant until this row lands.
done_when
one reader: either pr_review_quorum_arm.sh learns the AD-04 receipt (path, shape, the three-lane independence predicate) and its per-class fixtures gain the AD-04 rows, or the AD-04 producer writes the S13 shape at evidence/pr-review/<pr>/<sha>/ with the predicate.autonomy block the bot requires — one of the two, decided in the PR body with the reason
a PR carrying a valid receipt gets a non-REFUSE shadow verdict, and a PR without one still gets REFUSE — both directions in the fixtures (case table), so the bot discriminates on the current corpus and not only on 2865–2875
git ls-files | grep -i 'quorum.*json' documents which path is canonical in one place (CLAUDE.md or the skill), so the next session does not mint a third
Producer-side finding (aprender-bf, 22:50Z), traced on PR 2875's receipt: the S13 producer never emits the field its own consumer requires. 2875's predicate keys are [skill_version, attestation_level, pr, base_sha, head_sha, author_actor, reviewer_actor, review_round, …, cost] — no autonomy block — so every receipt the current pr-review producer makes gets Q1 from pr_review_quorum_arm.sh on the "no autonomy block" clause even when present and valid. The bot's REFUSE-everywhere therefore has two independent causes: nothing writes the path (since #2875), and what was last written there would fail anyway.
Also: pr-review §5/§11 forbid an author-emitted receipt (blocking class B2, reviewer_actor.id != author_actor.id), which is why the AD-04 artifact — author-launched, lanes on non-author models, receipt-lint.sh refusing an author-family lane — is the one in use tonight. Whichever reader this row settles on must accept that producer shape.
Correction to the body (cop, 22:55Z): docs/audits/quorum-<TICKET>.json is NOT without precedent — git ls-tree -r --name-only origin/main docs/audits/ | grep -cE 'quorum-PMAT-[0-9]+.*\.json$' → 37 receipts on main (PMAT-1090 … PMAT-3556, several per-PR variants such as quorum-PMAT-3477-pr3527.json). The claim "22 paths, all fixtures" in the thread was measured on a different universe. The AD-04 artifact is the established convention here; the S13 path is the dormant one. The row's question is unchanged — one reader — but the answer is now weighted: the reader should learn the path with 37 receipts behind it.
Parked by APR-EPIC-001: over S1 budget (rank 36/163). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).
Activity
noahgift commentedon Sep 20, 2026
Producer-side finding (aprender-bf, 22:50Z), traced on PR 2875's receipt: the S13 producer never emits the field its own consumer requires. 2875's
predicatekeys are[skill_version, attestation_level, pr, base_sha, head_sha, author_actor, reviewer_actor, review_round, …, cost]— noautonomyblock — so every receipt the current pr-review producer makes getsQ1frompr_review_quorum_arm.shon the "no autonomy block" clause even when present and valid. The bot's REFUSE-everywhere therefore has two independent causes: nothing writes the path (since #2875), and what was last written there would fail anyway.Also: pr-review §5/§11 forbid an author-emitted receipt (blocking class B2,
reviewer_actor.id != author_actor.id), which is why the AD-04 artifact — author-launched, lanes on non-author models,receipt-lint.shrefusing an author-family lane — is the one in use tonight. Whichever reader this row settles on must accept that producer shape.noahgift commentedon Sep 20, 2026
Correction to the body (cop, 22:55Z):
docs/audits/quorum-<TICKET>.jsonis NOT without precedent —git ls-tree -r --name-only origin/main docs/audits/ | grep -cE 'quorum-PMAT-[0-9]+.*\.json$'→ 37 receipts on main (PMAT-1090 … PMAT-3556, several per-PR variants such asquorum-PMAT-3477-pr3527.json). The claim "22 paths, all fixtures" in the thread was measured on a different universe. The AD-04 artifact is the established convention here; the S13 path is the dormant one. The row's question is unchanged — one reader — but the answer is now weighted: the reader should learn the path with 37 receipts behind it.noahgift commentedon Sep 25, 2026
Parked by APR-EPIC-001: over S1 budget (rank 36/163). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).