Skip to content

docs(agents): the nine axes for reviewing a docs/design change - #387

Merged
derek73 merged 3 commits into
masterfrom
tooling/design-docs-reviewer
Aug 17, 2026
Merged

docs(agents): the nine axes for reviewing a docs/design change#387
derek73 merged 3 commits into
masterfrom
tooling/design-docs-reviewer

Conversation

@derek73

@derek73 derek73 commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Follow-up to #386. Documentation only — one file.

Why

#386 ran five review passes over its own work and surfaced ten
issues — nine by the axes below, one by the spec self-review. Unaided
prose reading surfaced none. The difference was that each pass named
an axis and compared against an artifact rather than against memory.

Those axes existed only in that session's transcript. This records
them, each with the defect that earned it — the abstract form ("check
coherence") is precisely what produced the zero.

What's here

Nine axes in AGENTS.md's rules-documentation section, plus the
population-size caution and a do-not-report list pointing at the two
test files that already machine-check the mechanical layer.

Scope is all four documents — rules.md, decisions.md,
mechanisms.md and AGENTS.md itself, which carries the conventions
the other three rest on. Axes 3, 5 and 6 need rule statements,
examples and interacts:, so they are rules.md-only; the note says
so and asks reviewers to report what they skipped as inapplicable.
A checklist that asks for something meaningless teaches the reader to
skim it.

The checklist caught itself, three times

Running the axes against this PR found three issues, two of them in
files merged by #386:

Axis 1 — the corpus-blindness count was wrong.

245 comma names in the 782-name corpus
  2 end in a particle      ← the population that could move
  1 clears P6's words-to-spare guard and actually moves

Nguyen, Van is the second, held back by the very guard P6 needed.
"Exactly one ends in a particle" conflated the population with the
movers — the distinction that field note exists to draw — so the note
made its own error inside the correction. Fixed in mechanisms.md,
decisions.md#P6 and here.

Axis 1 — the finding count. "Seven" was a mid-session tally that
stopped being true two passes later and was never re-counted.

Axis 7 — the skip-list under-reached. It named five
machine-checked things where there are nine doc tests, so a reviewer
could have burned effort reporting a broken interacts: ID or an
unresolved cross-doc anchor. Now complete, pointing at the test files
as the authority and saying outright that it goes stale as guards are
added.

Neither count error changed an argument — the corpus is near-blind at
two names as at one, and the axes earn their place at nine as at
seven. That is what the count-durability note asks for, and it is
also why neither was catchable by reading.

Why prose and not tooling

A Claude Code subagent and /docs-review command were built and work,
but .gitignore's tools block keeps .claude/, .codex/ and
.gemini/ personal. They stay on one machine and are not
referenced here — a committed pointer to an untracked file is a
dangling reference for everyone else. A PostToolUse reminder hook
was also built and validated, then dropped in favour of this note.

Verification

uv run --frozen pytest — 3459 passed, 20 skipped, 11 xfailed, green
at every commit. Axis 9 checked: AGENTS.md is not input to any doc
parser (SWEEP_DIRS is nameparser/tests/tools, .py only).

🤖 Generated with Claude Code

#386 ran five review passes over its own work and found seven issues;
unaided prose reading found none of them. The difference was that
each pass named an axis and compared against an artifact. Record the
axes so the next docs/design change gets the same treatment without
rediscovering them.

Each axis carries the case that earned it, because the abstract form
("check coherence") is what produced the zero. The list also states
what NOT to report -- the suite already enforces example lines,
deviates: today-values, boundaries, the one-of implemented:/tracked:
rule and citation excerpts, so a finding those would catch is a false
positive.

Written into AGENTS.md rather than shipped as tooling: .gitignore's
tools block keeps .claude/, .codex/ and .gemini/ personal, and
AGENTS.md is the file every assistant reads. A Claude Code subagent
and /docs-review command exist locally and are noted as a
convenience, with the axes here as the shared record.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@derek73 derek73 added the docs Documentation fixes and updates label Aug 17, 2026
@derek73 derek73 self-assigned this Aug 17, 2026
@codecov

codecov Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.51%. Comparing base (2c399c9) to head (fd81b8b).
⚠️ Report is 4 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #387   +/-   ##
=======================================
  Coverage   98.51%   98.51%           
=======================================
  Files          44       44           
  Lines        2895     2895           
=======================================
  Hits         2852     2852           
  Misses         43       43           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

derek73 and others added 2 commits August 16, 2026 19:53
Two changes, one of them the checklist catching itself.

The agent and /docs-review references come out. .claude/ stays
personal per .gitignore's tools block, so a committed pointer to an
untracked file is a dangling reference for everyone else; the axes
are the shared record and stand alone.

Running axis 1 (recompute every number) over this PR falsified the
corpus-blindness count, which was wrong in two files merged by #386
as well as here. Of 782 corpus names 245 carry a comma, TWO of those
end in a particle, and ONE clears P6's words-to-spare guard and
actually moves -- "Nguyen, Van" is the second, held back by the very
guard the rule needed. "Exactly one ends in a particle" conflated
the population with the movers, which is the distinction that field
note exists to draw. Corrected in mechanisms.md, decisions.md#P6 and
AGENTS.md, with the mechanisms note recording that it made its own
error inside the correction.

The finding count is corrected with it: #386's passes surfaced ten
issues, nine by these axes and one by the spec self-review. "Seven"
was a mid-session tally that stopped being true two passes later and
was never re-counted.

Neither error changed an argument -- the corpus is near-blind at two
names as at one, and the axes earn their place at nine as at seven.
That is what the count-durability note asks for: phrase the argument
so it survives the digits moving, then get the digits right anyway.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file carries the conventions rules.md, decisions.md and
mechanisms.md rest on, and it has the same failure modes -- demonstrated
in the previous commit, where axis 1 falsified two counts in the axes
note itself. So the trigger now names four files, not three.

Not wholesale, though. Axes 3, 5 and 6 need rule statements, examples
and interacts:, which only rules.md has; asking a reviewer to run
rule-vs-its-own-examples against AGENTS.md is asking for something
meaningless, and a checklist that does that teaches the reader to
skim it. The note says which six apply and asks the reviewer to
report what they skipped as inapplicable.

Checking that also ran axis 7 (general clause vs actual scope) over
the skip-list, which named five machine-checked things where there
are nine tests -- a reviewer could have burned effort reporting a
broken interacts: ID or an unresolved cross-doc anchor, both already
enforced. The list is now complete and points at the two test files
as the authority, saying in as many words that it goes stale as
guards are added.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@derek73
derek73 merged commit 81c0be2 into master Aug 17, 2026
10 checks passed
@derek73
derek73 deleted the tooling/design-docs-reviewer branch August 17, 2026 03:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation fixes and updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant