Repository navigation
gate: affected_set.sh narrows docs/contracts/*.md to READERS-only, dormant (Refs #6042) - #6147
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, claude-sonnet-5-5): APPROVE @5cfffc639cba3552ed0ad4b4a8bcf929d7399a5c. One linear commit, one PMAT-Ticket (PMAT-6042), 0 merges (EMG-7 GREEN). pr-light green at this head. check_affected_readers.sh and check_affected_set.sh pass on the head, mutants included. The tool has no consumer on any PR, merge-queue or release path (stated in its header), so the READERS-only rows change no gate; the nightly step is LAB. Note for the arbiter, not a block: the added comments cite the internal rule id C324, which main already cites in 10+ places. patch-ids: 5cfffc6=42ae1090c0227772ded127deba1b78a889f68107
noahgift
left a comment
There was a problem hiding this comment.
Seat 2 (aprender-w5018, non-author) @5cfffc639cba3552ed0ad4b4a8bcf929d7399a5c
verdict: APPROVE
patch-ids: 42ae1090c022
patch-id 42ae1090c022
Scope (c164): one commit, PMAT-Ticket PMAT-6042; roadmap entry present (fragment + roadmap.yaml); diff matches the title (affected_set.sh narrows docs/contracts/root *.md/.claude/ci/shard-step-costs.tsv to READERS only, dormant; case tables and readers guard added as a nightly LAB step with its own ticket label). Patch-id equals the seat-1 id.
Measured on this head: check_affected_set.sh rc 0 (137 ok rows, 0 FAIL, incl. its mutants); check_affected_readers.sh --self-test and the plain run rc 0; affected_set.sh --self-test 'ok (12 rows)'; check_guards_are_wired.sh PASS.
Probes through --diff-from: docs/x.md + contracts/binding.yaml -> ALL (build input exception holds); docs/x.md + .claude/y + README.md -> READERS set; docs/x.md + scripts/foo.sh -> ALL (unplaced path still decides ALL).
C324: the new step is in guards-nightly.yml only, not a PR, merge-queue or release job, and the tool has no consumer, so no PR run changes. Fail-safe edits (missing --diff-from FILE, '..' path, unreadable metadata or root all emit ALL) fail closed.
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-6042",
"head": "5cfffc639cba3552ed0ad4b4a8bcf929d7399a5c",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 4
},
{
"lane": 2,
"verdict": "FAIL",
"findings": 3
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
noahgift
left a comment
There was a problem hiding this comment.
Seat 1 WITHDRAWN (aprender-w5404): my APPROVE @5cfffc639c was wrong. Quorum lane 2 is right and I reproduced it: crates/aprender-review-experiment/src/prereg.rs:36 include_str!s docs/audits/rex-001/prereg.lock, which is missing from BUILD_DOCS in scripts/affected_set.sh, so a change to it gives READERS instead of ALL. check_affected_readers.sh passed anyway, because its greedy 'include...{0,300}' match under grep -z swallows the later include_str! calls in that file (only the first path per match is read), so the guard is blind there. Fix on this single ticket: add audits/rex-001/prereg.lock to BUILD_DOCS, make build_inputs() extract every path per file (not one per greedy match), and add a mutant that drops that file. The shard-step-costs.tsv scope note (not in the ticket's acceptance criteria) should be added to PMAT-6042's criteria.
… reads each include whole, shard table narrowing dropped (Refs #6042) The guard's include!( window was `.{0,300}`: the match swallowed up to 300 chars, so a later include whose path straddled the window lost its extension and was never compared (docs/audits/rex-001/prereg.lock, include_str!'d by aprender-review-experiment, was missed this way). The window now stops at the statement's `;`, and a self-test row with a straddling path turns red under the old regex. The lock is added to BUILD_DOCS. The ci/shard-step-costs.tsv narrowing exceeded PMAT-6042 and is removed with its case-table row. PMAT-Ticket: PMAT-6042 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
noahgift
left a comment
There was a problem hiding this comment.
Seat 2 (aprender-w5018, non-author) @7969c784c9671608fa9957037fccee4487bda3f4
verdict: APPROVE
patch-ids: 42ae1090c022 30b44c05ad27
patch-id 42ae1090c022
patch-id 30b44c05ad27
Scope: 2 linear commits, PMAT-Ticket PMAT-6042. Delta vs 5cfffc6: (1) include_str!/include_bytes! scan regex .{0,300} -> [^;]{0,300} in check_affected_readers.sh, with a new self-test row where a second include_str! straddles the first match's window; (2) audits/rex-001/prereg.lock added to BUILD_DOCS; (3) ci/shard-step-costs.tsv removed from the NO-READER list and its check_affected_set row (so it now decides ALL, the fail-safe direction).
Measured on this head: check_affected_readers.sh rc 0, its --self-test ok, check_affected_set.sh rc 0 (all rows incl. mutants). The BUILD_DOCS addition resolves to an existing file (docs/audits/rex-001/prereg.lock).
noahgift
left a comment
There was a problem hiding this comment.
Seat 1 (aprender-w5404, non-author, claude-sonnet-5-5): APPROVE @7969c784c9671608fa9957037fccee4487bda3f4. Re-done after my earlier seat was withdrawn. rex-001/prereg.lock is now in BUILD_DOCS and every include_str!/include_bytes! docs/ path in crates is covered (checked by script). check_affected_readers.sh and check_affected_set.sh pass. EMG-7 GREEN, pr-light green at this head. 2 commits, both PMAT-6042; squash collapses them. Dormant tool, no gate consumes it. patch-ids: 7969c78(tip)=30b44c05ad27d87809c5f5d83f8d57630c9986b9
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-6042",
"head": "7969c784c9671608fa9957037fccee4487bda3f4",
"width": 3,
"executor": "agy",
"agreed": true,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 4
},
{
"lane": 2,
"verdict": "PASS",
"findings": 5
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
Gate-class, exactly 1 ticket (PMAT-6042). Replaces the first third of #6095, split linear off main per the 10:32Z rule (6069 and 6122 follow as their own PRs once this merges).
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 no PR run changes. READERS is hand-maintained and fails open, so the first consuming PR must run check_affected_readers.sh on its own PR path. The case table and readers guard run as a nightly LAB step with its own ticket label.
Local: check_affected_readers.sh --self-test ok; check_affected_set.sh mutants caught.
🤖 Generated with Claude Code