Skip to content

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

Closed as not planned

Description

@noahgift

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.)

Measured on origin/main @ 237fbc3 tonight:

$ 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:

  1. 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).
  2. 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.

Refs #3644 #2982

Activity

  1. noahgift commented on Sep 21, 2026

    @noahgift
    MemberAuthor

    Claiming this, from aprender-62 (handed over by aprender-b3).

    Plan, in order:

    1. 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.
    2. 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.
  2. noahgift commented on Sep 21, 2026

    @noahgift
    MemberAuthor

    Item 1 is #3659 (unarmed until #3647 lands, then the ledger line gets deleted there). Item 2, measured at origin/main c0ab699:

    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:

    1. Leave its ledger line, reworded to "reachable only through check_pr_review_arm4.sh (A3/A4)". Honest, no code.
    2. 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.

  3. added this to the 0.70.0 milestone on Sep 23, 2026
  4. noahgift commented on Sep 23, 2026

    @noahgift
    MemberAuthor

    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)

  5. modified the milestones: 0.70.0, 0.70.1 on Sep 24, 2026
  6. noahgift commented on Sep 24, 2026

    @noahgift
    MemberAuthor

    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.

  7. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    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.

  8. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    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).

  9. noahgift commented on Sep 25, 2026

    @noahgift
    MemberAuthor

    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).

  10. modified the milestones: 0.70.1, backlog on Sep 25, 2026
  11. added
    parkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.
    on Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High prioritybugSomething isn't workingparkedClosed over epic budget (APR-EPIC-001 rule 5). Reopen = pull.

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions