From b02a7972b5f3589c09074b04253a075e0c678a14 Mon Sep 17 00:00:00 2001 From: Sean Whalen <44679+seanthegeek@users.noreply.github.com> Date: Sat, 25 Jul 2026 19:36:31 -0400 Subject: [PATCH] Clarify the two-directory code span in the #851 verification lesson (#853) Copilot flagged on #852 (post-merge) that the code span `parsedmarc/ tests/` reads as a single path when it names two directories. Spell them out as separate spans. Co-authored-by: Claude Fable 5 --- AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index f6b934c1..0e3f8d05 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -200,7 +200,7 @@ Three more rules, from the PR #849 review cycle (a fresh automated reviewer caug Three more rules, from the PR #851 review cycle (the first run with all of the above loaded in context — the author's own seam-checklist pass did catch three real defects before the PR opened, so the habits fire, but a fresh-context reviewer still caught four more): - **A fix made during review is new code with zero review coverage.** #851's review pass fixed the fragile hand-enumerated field list in `ParserConfig.__getstate__` — and stopped there. The symmetric obligation that fix implied in `__setstate__` went unexamined (state pickled by an older version lacks later-added fields, and `__init__` never runs during unpickling, so those fields end up not defaulted but *unset*), and the external reviewer caught it. Touching one direction of a paired protocol (`__getstate__`↔`__setstate__`, save↔load, encode↔decode) obligates re-deriving the inverse direction — including version-skew inputs (old data into new code) that no current fixture produces. The seam checks apply to your own review fixes; the review isn't done when the fixes are written. -- **Verification means CI's literal commands from the repo root, not a plausible subset.** #851's local checks scoped to `parsedmarc/ tests/` declared the tree green while CI's `ruff format --check .` failed on a Python example inside `docs/source/usage.md` — ruff formats code blocks in Markdown, and `docs/` was outside the scoped run. Read the workflow file and run the same commands with the same scope before opening a PR. When repo-wide runs are noisy because of untracked local directories, fix the exclusion in config rather than narrowing the command — a narrowed command is a different check that happens to share a name. +- **Verification means CI's literal commands from the repo root, not a plausible subset.** #851's local checks scoped to the `parsedmarc/` and `tests/` directories declared the tree green while CI's `ruff format --check .` failed on a Python example inside `docs/source/usage.md` — ruff formats code blocks in Markdown, and `docs/` was outside the scoped run. Read the workflow file and run the same commands with the same scope before opening a PR. When repo-wide runs are noisy because of untracked local directories, fix the exclusion in config rather than narrowing the command — a narrowed command is a different check that happens to share a name. - **Count enumerations against the set they enumerate.** The new library-usage docs listed "the main entry points" and the next paragraph asserted that "each of these functions" accepts `config=` — but the list named seven of the eight `config=`-accepting functions. Whenever prose enumerates a code-defined set (functions gaining a kwarg, supported outputs, config keys), derive the set from the code (grep the signatures) and count both sides; a reader can't tell an intentional subset from an omission. ## Releases