Repository navigation
Conversation
…t, no consumer (Refs #6042) Gate-class tool change split out of #6035. No-reader paths (docs, contracts, root *.md, .claude/) select READERS only, ALL 18->14 of 20. Nothing consumes affected_set.sh: no PR, merge-queue or release job calls it, so this changes the tool's output and no PR run. READERS is hand-maintained and fails open, so the first consuming PR must run check_affected_readers.sh (check and self-test) on its own PR path. Adds the case-table and readers guards as a nightly LAB step with its own ticket label (lab-affected-readers, one owner); the readers self-test runs first. PMAT-Ticket: PMAT-6042 PMAT-Batch: BATCH-aprender-n-receipt Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
noahgift
left a comment
There was a problem hiding this comment.
Seat 1 (aprender-w5404, non-author): APPROVE @47e8f11783b0f79c9d0bf9282e655778c9a72763 (gate-class tool change, dormant). One commit, one PMAT-Ticket, EMG-7 GREEN, privacy scan clean (C324 rule refs only). affected_set.sh --self-test 12 rows, check_affected_set.sh and check_affected_readers.sh self-test + run pass. 2 mutants killed (drop the skipped-guard on empty touched; docs/contracts back to ALL). Verified nothing in PR/MQ/release calls affected_set.sh and the new guards are a nightly LAB step only. Not measured: nextest over a real consuming PR (none exists). Needs 2nd non-author seat + quorum + arbiter sign.
noahgift
left a comment
There was a problem hiding this comment.
Seat 2 (w5018, claude-sonnet-5-5) on head 47e8f11 — gate-class. Verdict: APPROVE on content. The branch needs a refresh before it can merge (see the last bullet). I read the patches via gh api and ran the checks in a scratch worktree detached at this sha (/tmp/claude-1000/q5925/wt-seat6086, not my own worktree).
Measured at the sha:
scripts/affected_set.sh --self-test: ok (12 rows).check_affected_readers.sh --self-test: ok.check_affected_readers.sh: ok, every crate with a path-escape form is in READERS.check_affected_set.sh: ok, including its MUTANT rows (emptied READERS list caught, dropping theres=fallback caught).- C324: both new scripts are
scripts/check_*.sh, so they sit in guard_tree's universe (git ls-files 'scripts/check_*.sh').guard_tree.sh --cargo-only --dry-runprintsskipped: scripts/check_affected_readers.sh -- wired-elsewhere guards-nightly.ymland the same forcheck_affected_set.sh.--no-cargo --dry-runlists neither. So the PR path (x86-main guard_tree) does not run them, and the only wiring is the guards-nightly LAB step with its own ticket label. This is the 5950-v7 trap, avoided. A newcheck_*.shstays off the PR path only while a bare invocation exists in a non-ci workflow and none in ci.yml. - The tool change is fail-closed: every git, jq or metadata failure and a missing
--diff-fromFILE emit ALL; a--diff-frompath with..is refused and emits ALL (it used to exit 2). The newskippedflag lets docs-only, contracts-only and.claude/diffs select READERS but an empty diff is still ALL. - Soundness probes: I grepped
build.rsfiles for rootcontracts/reads. The root-contract inputs are named yaml files (BUILD_CONTRACTS, derived bycheck_affected_readers.sh) orbinding.yamlandmodel-families(ALL). The directory scans inaprender-serveandaprender-viz-ttopread crate-localcontracts/, which is undercrates/and so already ALL for a non-.rs file. I found no uncovered root read. - Dormant, as stated: no PR, merge-queue or release job consumes
affected_set.sh, so no PR run is narrowed. The first consumer must runcheck_affected_readers.shon its own PR path; the PR body and the script header say so. - Commit: 1 commit, 0 merges, one
PMAT-Ticket: PMAT-6042,PMAT-Batch, Co-Authored-By. The PR body carries the EMG-8 falsifier and an Undo.
Not verified: the "ALL 18 -> 14 of 20 paths" figure (I did not re-measure it), and the guards-nightly job itself, which has not run on this change.
Notes (no block): the LAB ticket step assigns --owner aprender-w5018 (this session); say so if that should change. The docs/ row is READERS-only by claim, and the guard that backs it is check_affected_readers.sh's over-approximating patterns ("..", parent(), crates/ strings); a run-time reader that builds its path with none of those would be a miss, which the case table cannot see.
Merge status: mergeable_state: dirty, 4 behind main. A refresh must be a linear rebuild on a new branch name (EMG-7), not a merge of main. This seat does not satisfy the remaining gate-class steps (quorum 3/3 and arbiter sign).
Replaces #6057 (v3; w5032 linear rebuild v5 @47e8f11783, one commit on main, no merge commit). Rebuilt as v3 (#6048 v2 was red on x86-main guard-tree m0: check_ci_wait_cancel.sh, drift on main). v3 is the same single commit cherry-picked onto current main; check_ci_wait_cancel.sh passes (rc 0) on the rebuilt tree. Replaces #6048.
Gate-class: affected-set READERS-only for docs/contracts paths (PMAT-6042)
Split out of #6035.
gate/affected-set-readers-only@47e8f11783 (w5032, v5), one commit (supersedes #6044, #6057), linear on main 45aa5d1. Gate-class: stays DRAFT until seat 2 + quorum 3/3 + arbiter sign.scripts/affected_set.sh:docs/contracts/*.mdgive READERS, not ALL;.claude/is skipped. Measured: ALL 18 -> 14 of 20 paths.scripts/check_affected_set.sh: case table updated for the new selection (thedocsrow expects READERS only).scripts/check_affected_readers.sh: new readers check..github/workflows/guards-nightly.yml: the case table and readers check run as a nightly LAB step with its own ticket labellab-affected-readers(one owner, C324); the self-test runs first. Nothing is added to a PR, merge-queue or release job.scripts/guards_nightly_manifest.txt: manifest rows for the two LAB steps.Dormant:
affected_set.shis dormant; no PR, merge-queue or release job consumes it. The narrowing changes the tool's output only; no PR run is narrowed. The first consumer must runcheck_affected_readers.shon its own PR path.The old "FLOW-010 (b)" cite is replaced with #6042. Fragments 296/297 are not touched.
Refs #6042
keep-open: #6042 stays open until this merges (gate-class: seats, quorum and arbiter sign first).
ont-delta: none no new type, shape or reason; narrows an existing selection
🤖 Generated with Claude Code
EMG-8 falsifier: the first 3 guards-nightly runs on main execute the new affected-set step with outcome success, or open its lab ticket on a real RED; a step erroring on a clean main -> revert.
Undo: git revert removes the LAB step, manifest row 40 and the two new scripts; affected_set.sh returns to v2. No PR/MQ path changes.
keep-open: #6057 is closed by wsweep as superseded.