spec: 010 Task 10.4 — pagelint rule 7, and the eight sentences it found - #98
Open
iancooper wants to merge 1 commit into
Open
spec: 010 Task 10.4 — pagelint rule 7, and the eight sentences it found#98iancooper wants to merge 1 commit into
iancooper wants to merge 1 commit into
Conversation
D6 did not survive Task 10.3, so the rule lands as pagelint rule 7, with CLAUDE.md's ledger and its two new convention sections in the same commit — AC5 of spec 011 failed on exactly that parity gap. Six labels, not the four the task named: the two extra check the description front matter against the sentence it is meant to be. The ledger's first draft had that parity as "review only", which is the one thing this programme has learned not to write down. The ruling the task asked for: the 200 characters are rendered, not source. Eleven pages were over the limit as typed and four are over it as read — seven were over only by the length of URLs nobody sees, and shortening real prose to accommodate an href would have made those pages worse. First run: 8 findings across 8 pages. Four too long, four not unique in two pairs, each an async page that had never been given its own opening line. Design §9.2 predicted double figures; it is eight, recorded as a wrong figure rather than rounded up to meet it. The instrument was wrong twice in one task and in opposite directions. A scratch script written before the rule reported fifteen pages; seven were the source/rendered difference and two were its own bug — it skipped any line starting with * as a list item, so on two scheduler pages it skipped a bold opening sentence and reported a heading-follower two paragraphs down. Eight branches proved red before trusted green, and the red-proof refined a lesson this programme already had. "Assert that your mutation landed" is not strong enough: the first three probes reported SILENT and all three were the probe's fault, each asserting only that the file had changed while producing something the branch was never meant to reject. The assertion has to be that the mutation produced the input the branch rejects. One defect in the rule itself, caught only because the red-proof printed a baseline first and the baseline was red: front_matter_description returned a line number into the slot its caller reads as a reason, so a correct page reported DESCRIPTION UNREADABLE: 2 — the check reporting its own success as a failure. Ledger parity by enumeration found the mirror of spec 011's original defect: NO H1 was in the ledger and missing from the linter's own docstring. The same rule, the other way round, four sessions later. Two defects found in passing and left for Phase 11: 29 internal .html links across 16 pages that linkcheck cannot see, one of them pointing at a page that does not exist; and a second H1 in BuildingAnAsyncPipeline.md that no rule can see. Four of the 29 were fixed here because they sat inside sentences this task was rewriting, with their anchors repointed at headings that exist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012tcdwxVb8NmKaX2S6fvyFg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
D6 did not survive Task 10.3, so the opening-sentence rule lands as
pagelint.pyrule 7 — the fallback the task itself prescribed — withCLAUDE.md's ledger and two new convention sections in the same commit, because AC5 of Spec 011 failed on exactly that parity gap.Six labels, not four
The four the task named, plus
DESCRIPTION MISMATCHandDESCRIPTION UNREADABLE, which check the front matter against the sentence it is supposed to be. The ledger's first draft had that parity as review only — the one thing this programme has learned not to write down. It is mechanical, so it is mechanised.The ruling the task asked for: rendered, not source
Seven were over only by the length of URLs nobody reads. Shortening real prose to accommodate an
hrefwould have made those pages worse.First run: 8 findings across 8 pages
Four
SUMMARY TOO LONG(249, 226, 211, 205) and fourSUMMARY NOT UNIQUEin two pairs —DispatchingARequest/AsyncDispatchARequestandBuildingAPipeline/BuildingAnAsyncPipeline, each an async page that had never been given its own opening line. Zero missing, zero colons.Design §9.2 predicted "a double-figure number of failures" and it is eight. Recorded as a wrong figure rather than rounded up to meet it.
Eight branches proved red before trusted green
One defect in the rule itself, caught only because the red-proof printed a baseline and the baseline was red:
front_matter_description()returned a line number into the slot its caller reads as a reason, so a perfectly correct page reportedDESCRIPTION UNREADABLE: 2— the check reporting its own success as a failure.Ledger parity by enumeration found the mirror of Spec 011's original defect.
NO H1was in the ledger and missing from the linter's own docstring — the same rule, the other way round, four sessions later. Enumerate both directions.Two defects found in passing — recorded, left for Phase 11
.htmllinks across 16 pages, invisible tolinkcheck.pybecause they are not.md. Twelve targets; one,QualityOfServicePatterns.html, has no page at all — a dead link green in every CI run this repo has done. The conversion is not mechanical either: the file isCommandsCommandDispatcher**a**ndProcessor.md, so the obvious rewrite lands on WRONG CASE, the fault classlinkcheck.pyexists for, hidden behind an extension it does not check. Four were fixed here (they sat inside sentences being rewritten), with anchors repointed at headings that exist —#the-command-processor-pattern, not#command-processor, which never existed.BuildingAnAsyncPipeline.mdhas two H1s.NO H1fires only on no H1 and rule 3b starts at##. Nothing links to the second one's anchor, so demoting it is safe — but it then becomes a##that must be unique and qualified, which is a heading pass, not a sentence fix.Gates
linkcheck 144 files; pagelint 0 errors / 791 warnings / 142 pages;
--check-shape0;--check-redirects0 at 77 entries;--changed origin/master0 with everything staged. The using-directive debt did not move.🤖 Generated with Claude Code
https://claude.ai/code/session_012tcdwxVb8NmKaX2S6fvyFg