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
check_pr_review_counts.sh is RED on main (6 rows disagree) and check_pr_review_receipt.sh has no caller — both dark since PRQ-013 moved the receipt job, classified out of --no-cargo by a comment #3646
Found while proving #3644 (the meta-guard's name:-line blindness). When ci.yml's receipt job was removed (PRQ-013 / #2982) its comment at ci.yml:2414 says:
check_pr_review_receipt.sh, check_pr_review_counts.sh and check_pr_review_arm4.sh are scripts/check_*.sh, so guard_tree.sh's derived universe runs them in guard-tree
guard-tree runs guard_tree.sh --no-cargo. Both guards are classified cargo-using by CARGO_RE on a comment (check_pr_review_counts.sh:196 "cargo test -p aprender-contracts … printing"; check_pr_review_receipt.sh:234 "a cargo target directory") and neither invokes the build tool. So --no-cargo excludes them, guard-cargo never names them, and they have run nowhere since the move. (check_pr_review_arm4.sh is fine: pr-review-quorum.yml invokes it with args.)
$ bash scripts/check_pr_review_counts.sh # rc=1
--- 6 row(s) disagree with the tree ---
$ bash scripts/check_pr_review_receipt.sh # rc=1
A run over zero receipts is not a pass (S6.3: a missing receipt is RED).
So check_pr_review_counts.sh is RED on main and has been, unobserved; check_pr_review_receipt.sh takes a receipt path and nothing calls it with one.
#3644 records both in scripts/unwired_guards_baseline.txt as revealed-not-added (aperture admission, each may only leave), so the gap is visible instead of hidden. What lands here:
Fix the 6 disagreeing rows in PR-REVIEW-SKILL-002's files (or the derivation), then reword the one comment so the guard leaves the cargo population and guard-tree runs it; delete its ledger line in the same commit (shrink-only).
Decide check_pr_review_receipt.sh's caller: either pr-review-quorum.yml invokes it on the PR's receipt (a workflow edit — operator's call), or it is folded into check_pr_review_arm4.sh, which is already wired with args. Delete its ledger line with whichever lands.
Claiming this, from aprender-62 (handed over by aprender-b3).
Plan, in order:
Part 1, starting now: fix the 6 rows check_pr_review_counts.sh disagrees on (in PR-REVIEW-SKILL-002's files, or in the derivation if the derivation is what's wrong), and reword the :196 comment so CARGO_RE stops classifying the guard as cargo-using. Proof: bash scripts/guard_tree.sh --dry-run --no-cargo | grep pr_review_counts prints run:. Its unwired_guards_baseline.txt line gets deleted in that same commit, but only after fix(guard): a step NAME read as a bare guard_tree.sh dispatch hid four dark guards; the #3305 guard runs nowhere and dies on intel's python 3.10 (PMAT-3644) #3647 (which adds the line) has merged, so I don't conflict with it.
Part 2: check_pr_review_receipt.sh gets a caller only if folding it into check_pr_review_arm4.sh needs no workflow change. If it needs a pr-review-quorum.yml edit, that's the operator's call; I'll record the reason here and leave it.
Item 1 is #3659 (unarmed until #3647 lands, then the ledger line gets deleted there). Item 2, measured at origin/mainc0ab699:
check_pr_review_receipt.sh already has a caller that passes it a receipt.scripts/check_pr_review_arm4.sh:139 sets local guard=${PR_REVIEW_GUARD:-$REPO_ROOT/$GUARD_REL} with GUARD_REL='scripts/check_pr_review_receipt.sh' (:83), then runs
( cd "$REPO_ROOT" && bash "$guard" "$scratch" ) for A3, the tampered-copy negative control, and
( cd "$REPO_ROOT" && unset PR_REVIEW_PUBKEY && bash "$guard" "$best_dir" ) for A4, the PR's own selected receipt.
pr-review-quorum.yml:141 runs bash scripts/check_pr_review_arm4.sh on every pull_request_target and merge_group. scripts/pr_review_quorum_arm.sh:203 also invokes it (RECEIPT_GUARD). So the "fold it into arm4" option already exists. There is nothing to add, and no workflow edit is needed.
What remains is a modelling question for guard_tree.sh and the unwired-guards ledger. The guard is not invoked by name in any workflow, so the meta-guard counts it unwired. A bare run is RED by design (S6.3), so rewording its :234 comment into --no-cargo would turn guard-tree RED. Options:
Leave its ledger line, reworded to "reachable only through check_pr_review_arm4.sh (A3/A4)". Honest, no code.
Teach the meta-guard that a guard invoked with arguments by another wired guard is wired, the same way wired-with-args already covers direct workflow invocations. That's a real change, with its own case table.
I'm not doing either in #3659. (1) is the ledger owner's wording (#3647). (2) is a design call for the guard_tree owner.
Milestone 0.70.0 → 0.70.1 (gate triage). 0.70.0 now holds only the operator's release gate: "FULL ontology spec and all aprender binary working" + "0.70 to crates.io" (ONT-001, every [[bin]] build+smoke, the publish cascade), plus P0s and operator-ruled rows. This issue isn't needed for any of those. Evidence: evidence/m070-gate-triage-1835.md. If that's wrong, move it back to 0.70.0 and say which gate it serves.
Verified on batch/0.70.0 @ 2718c5214 (aprender-57): bash scripts/check_pr_review_counts.sh → rc 0, PASS every stated count equals the derived one. It is in guard-tree's run set (guard_tree.sh --dry-run --no-cargo → run: scripts/check_pr_review_counts.sh). check_pr_review_receipt.sh is skipped -- unwired-baseline, with its reason in scripts/unwired_guards_baseline.txt (arm4 runs it with a receipt path). Close when batch/0.70.0 merges back to main.
APR-EPIC-001 A2 (rule 9): stays OPEN. Legs (a)+(b) hold: 8c7822f34405 on origin/main names this issue ("Item 2 of #3646 needs no code. check_pr_review_receipt.sh is invoked with"). Missing leg: c-needs-repro. Readers: Commit resolves only 'item 2' (no code needed); the 6 disagreeing rows fix (item 1) not evidenced. / Strong row requires done_when to be reproduced green at HEAD, which has not been done.. Applied by aprender-d1 under APR-EPIC-001 A2, quorum receipt handoff/a2-quorum.json (claude-sonnet-5 + agy gemini-3.1-pro-high; apr shadow lane unreachable, zero weight).
Parked by APR-EPIC-001: over S1 budget (rank 10/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 21, 2026
Claiming this, from aprender-62 (handed over by aprender-b3).
Plan, in order:
check_pr_review_counts.shdisagrees on (in PR-REVIEW-SKILL-002's files, or in the derivation if the derivation is what's wrong), and reword the:196comment soCARGO_REstops classifying the guard as cargo-using. Proof:bash scripts/guard_tree.sh --dry-run --no-cargo | grep pr_review_countsprintsrun:. Itsunwired_guards_baseline.txtline gets deleted in that same commit, but only after fix(guard): a step NAME read as a bare guard_tree.sh dispatch hid four dark guards; the #3305 guard runs nowhere and dies on intel's python 3.10 (PMAT-3644) #3647 (which adds the line) has merged, so I don't conflict with it.check_pr_review_receipt.shgets a caller only if folding it intocheck_pr_review_arm4.shneeds no workflow change. If it needs apr-review-quorum.ymledit, that's the operator's call; I'll record the reason here and leave it.noahgift commentedon Sep 21, 2026
Item 1 is #3659 (unarmed until #3647 lands, then the ledger line gets deleted there). Item 2, measured at
origin/mainc0ab699:check_pr_review_receipt.shalready has a caller that passes it a receipt.scripts/check_pr_review_arm4.sh:139setslocal guard=${PR_REVIEW_GUARD:-$REPO_ROOT/$GUARD_REL}withGUARD_REL='scripts/check_pr_review_receipt.sh'(:83), then runs( cd "$REPO_ROOT" && bash "$guard" "$scratch" )for A3, the tampered-copy negative control, and( cd "$REPO_ROOT" && unset PR_REVIEW_PUBKEY && bash "$guard" "$best_dir" )for A4, the PR's own selected receipt.pr-review-quorum.yml:141runsbash scripts/check_pr_review_arm4.shon everypull_request_targetandmerge_group.scripts/pr_review_quorum_arm.sh:203also invokes it (RECEIPT_GUARD). So the "fold it into arm4" option already exists. There is nothing to add, and no workflow edit is needed.What remains is a modelling question for
guard_tree.shand the unwired-guards ledger. The guard is not invoked by name in any workflow, so the meta-guard counts it unwired. A bare run is RED by design (S6.3), so rewording its:234comment into--no-cargowould turn guard-tree RED. Options:wired-with-argsalready covers direct workflow invocations. That's a real change, with its own case table.I'm not doing either in #3659. (1) is the ledger owner's wording (#3647). (2) is a design call for the guard_tree owner.
PMAT-3644: the ledger's reason for check_pr_review_receipt.sh was wro…
noahgift commentedon Sep 23, 2026
milestone → 0.70.0 per docs/roadmaps/milestone-triage-2026-09-23.md (#4024), operator approval 2026-09-23 (relayed by aprender-cf). Reason: pr-review count gate red on main: review gate (#3998)
noahgift commentedon Sep 24, 2026
Milestone 0.70.0 → 0.70.1 (gate triage). 0.70.0 now holds only the operator's release gate: "FULL ontology spec and all aprender binary working" + "0.70 to crates.io" (ONT-001, every [[bin]] build+smoke, the publish cascade), plus P0s and operator-ruled rows. This issue isn't needed for any of those. Evidence: evidence/m070-gate-triage-1835.md. If that's wrong, move it back to 0.70.0 and say which gate it serves.
fix(pr-review): the stated counts follow #3594's widening, and the on…
merge origin/batch/0.70.0 into relgate/e6-0.70.0 (#3646)
noahgift commentedon Sep 25, 2026
Verified on
batch/0.70.0@2718c5214(aprender-57):bash scripts/check_pr_review_counts.sh→ rc 0,PASS every stated count equals the derived one. It is in guard-tree's run set (guard_tree.sh --dry-run --no-cargo→run: scripts/check_pr_review_counts.sh).check_pr_review_receipt.shisskipped -- unwired-baseline, with its reason inscripts/unwired_guards_baseline.txt(arm4 runs it with a receipt path). Close when batch/0.70.0 merges back to main.noahgift commentedon Sep 25, 2026
APR-EPIC-001 A2 (rule 9): stays OPEN. Legs (a)+(b) hold:
8c7822f34405on origin/main names this issue ("Item 2 of #3646 needs no code. check_pr_review_receipt.sh is invoked with"). Missing leg: c-needs-repro. Readers: Commit resolves only 'item 2' (no code needed); the 6 disagreeing rows fix (item 1) not evidenced. / Strong row requires done_when to be reproduced green at HEAD, which has not been done.. Applied by aprender-d1 under APR-EPIC-001 A2, quorum receipt handoff/a2-quorum.json (claude-sonnet-5 + agy gemini-3.1-pro-high; apr shadow lane unreachable, zero weight).noahgift commentedon Sep 25, 2026
Parked by APR-EPIC-001: over S1 budget (rank 10/163). Reopen = pull. Applied by aprender-d1: claude+agy both said close, apr shadow row recorded (handoff/close-quorum-2026-09-25.json).
release(0.69): batch — 15 receipted PRs + fleet-pv andon fix, one CI …
PMAT-3685: apr parity REFUSES (exit 12) a model the CUDA capability g…
release(0.70): batch-1 — 9 receipted rows, one CI run, one queue slot (…
release(0.69.1): batch 1 — 20 receipted rows + 3 combination fixes, o…