Skip to content

gate: affected_set.sh narrows docs/contracts/*.md to READERS-only, dormant (Refs #6042) - #6147

Merged
noahgift merged 2 commits into
mainfrom
gate/affected-set-docs-contracts-readers
Oct 23, 2026
Merged

noahgift merged 2 commits into
mainfrom
gate/affected-set-docs-contracts-readers

Conversation

@noahgift

Copy link
Copy Markdown
Member

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

…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>
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=6147 head=7969c784c9671608fa9957037fccee4487bda3f4 verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

@noahgift noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@noahgift

Copy link
Copy Markdown
Member Author

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 noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 noahgift left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@noahgift

Copy link
Copy Markdown
Member Author

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
  }
 ]
}

@noahgift
noahgift added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit 246b606 Oct 23, 2026
13 checks passed
@noahgift
noahgift deleted the gate/affected-set-docs-contracts-readers branch October 23, 2026 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant