M5b plan: task 14, the runbook entry sanitizer-rules

The last runbook entry, the rule-change procedure of spec 6.5; the
entries memory-write-refused and memory-write-flagged now send the
reader to it instead of to the spec. Tasks 06, 08 and 12 added the
other five, because the gate needs an entry for every pointer.

Checks: the edits, applied from the task's text to ref 13, give a
runbook byte-identical to the reference; each before block found once;
the gate passes on the reference with 1118 tests; /private/tmp unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-26 17:29:50 -07:00
co-authored by Claude Opus 5.5
parent 5f48ba65b0
commit 81d849d4ba
2 changed files with 119 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# M5b task 14: the runbook entry `sanitizer-rules`
**Branch:** `m5b` (run `git switch m5b`; `git status --short` must be empty, otherwise stop)
**Commit subject:** `docs: runbook: sanitizer-rules, how to change a sanitizer rule`
## Goal
The M5b spec, section 6.5, gives the procedure for changing a sanitizer rule. Tasks 06, 08 and 12
added the runbook entries that code points to; this task adds the last one, `sanitizer-rules`,
which no code points to, and makes the entries `memory-write-refused` and `memory-write-flagged`
send the reader to it instead of to the spec. Only `docs/runbook.md` changes. No code changes.
## Files
- Given: `docs/plans/M5b/files/runbook-sanitizer-rules.md`, appended verbatim.
- Modify: `docs/runbook.md` (edits R1 and R2, then the append).
## The edits, exactly
**R1.** `docs/runbook.md`, in the entry `memory-write-refused`, under **Fix.**: the lines
```text
Ordinary text refused by mistake: add it to the code-work corpus and narrow the rule, as the M5b
spec's section 6.5 says; the change reaches the agent when it is rebuilt.
```
become
```text
Ordinary text refused by mistake: add it to the code-work corpus and narrow the rule, as
[`sanitizer-rules`](#sanitizer-rules) says; the change reaches the agent when it is rebuilt.
```
**R2.** `docs/runbook.md`, in the entry `memory-write-flagged`, under **Fix.**: the lines
```text
stays in `notes.md`, which is append-only. If the rule catches ordinary text, narrow it as the M5b
spec's section 6.5 says.
```
become
```text
stays in `notes.md`, which is append-only. If the rule catches ordinary text, narrow it as
[`sanitizer-rules`](#sanitizer-rules) says.
```
## Steps
- [ ] **1. Edits R1 and R2.** Each "before" block is in `docs/runbook.md` exactly once. Change
nothing else in the file. Then `grep -c "section 6.5" docs/runbook.md` prints `0`.
- [ ] **2. The entry.** From the repository root:
```sh
{ echo; cat docs/plans/M5b/files/runbook-sanitizer-rules.md; } >> docs/runbook.md
```
Then `grep -c '^## sanitizer-rules$' docs/runbook.md` prints `1`, and
`grep -c '(#sanitizer-rules)' docs/runbook.md` prints `2`.
- [ ] **3. Run the gate.** `make gate`, with a shell timeout of 600000 ms. Expected last line:
`gate: ok`, with 1118 tests, the same count as before this task: no test changes.
- [ ] **4. Log and commit.** `git status --short` lists `docs/runbook.md` and your log as
modified, and nothing else. Stage with `git add docs/runbook.md docs/implementer-log.md`, then
commit as `AGENTS.md` says.
## Done when
- `make gate` prints `gate: ok` with 1118 tests.
- `git diff HEAD~1 --stat` lists only `docs/runbook.md` and `docs/implementer-log.md`.
## Stop and report if
- A "before" block of R1 or R2 is not in `docs/runbook.md` exactly as shown, or is there more than
once.
- `docs/runbook.md` already has a line `## sanitizer-rules`.
- A grep in step 1 or 2 prints another number.
- The gate fails, or passes with a count other than 1118. This task changes no code, so do not
try to fix it: stop, and give the gate's last lines.