docs(method): the dependency rule is its own rule, not the tail of the one above - #8732
Merged
Conversation
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.
Found by the method-reread loop's step 2 — checking a rule I have been enforcing against what the tree actually does. 1 insertion, one file, no heading touched, no word changed.
The defect
**A dependency can outlive what it was enforcing.**is a standalone rule in Tracker mechanics, and it is one of the four things the backlog-reread loop is explicitly sent to look for. It had no blank line before it, so Markdown joins it to the end of the preceding paragraph — an unrelated rule about instruments that answer a different question from the one you asked.Rendered, the two become one paragraph and the dependency rule stops presenting as a rule at all. Measured rather than asserted: the glued source renders 1 paragraph, the fixed source renders 2.
Why this is drift and not house style
Extracted every line in the tree that opens a bolded rule and checked whether a blank line precedes it.
README.mdbootstrap.mdloops.mddispatch-prompt-template.mdOne anomaly in 106. Its own siblings three, six and ten lines below are all blank-line separated. It arrived with the commit that made the method usable on any repository and added the loop bodies, so it has rendered wrongly for eleven days.
The three in the template are deliberately left alone
Recorded so a later pass does not "fix" them. All three are genuine mid-paragraph emphasis rather than rule leads:
Inserting blank lines there would split three arguments mid-thought. The detector over-reports on purpose; the judgement is what filters it.
Quality gates
Exit codes are each runner's own, captured in-shell on the same command line — never through a pipe.
check_doc_slugs.pycheck_readme_links.py --cimkdocs build --strictNothing gates paragraph structure, and that is the honest statement of this change's coverage. No gate in the repo would have caught the defect and none confirms the repair; the detector above is a one-off written for this pass, not a check that runs. What the gates establish is only that the edit broke nothing.
Sabotage therefore tests that the gate reads this tree rather than a cached one: a broken anchor planted mid-line on the very line this change moved, target match count read as exactly 1 beforehand — line endings are translated in this checkout, so an end-of-line anchor matches nothing. Exit 1 naming
docs\the-mayor-method\loops.md:1238, a line number that exists only on this branch because the insertion shifted it. The edit was committed before the plant; restore verified by blob hash —abb7c019d6on both sides — with the plant string gone and a post-restore diff against HEAD of 0 lines.On the mkdocs run: it exits 0 and its output names
the-mayor-method\loops.md, so it did build this page. It is listed without a sabotage column because it does not grade anchors at all —validation.anchorsdefaults to INFO and--strictpromotes WARNING but not INFO — so a sabotage there would have proved nothing.Checked by hand, since nothing gates this prose: the diff against the merge base is a single empty line and nothing else — no word, no punctuation and no heading changed (0 heading lines in the diff), which matters because this tree's headings are extraction anchors cited from outside it. The file is CRLF and stays CRLF: 0 bare line-feeds after the edit. It names no product, platform, path, tool or person.