Derive the directories beside the six, rather than counting them twice [#322] - #323
Merged
Merged
Conversation
#322] README.md and src/lib.rs each counted the directories under src/ that are not one of the six things 0003 names, and each said three while the tree carried four: git ls-tree --name-only origin/main src/ | grep -v '\.rs$' | wc -l 10 src/lifecycle/ was the one neither count reached, and README.md did not name it at all, so a reader counting src/ against that paragraph met a directory it does not account for and had to decide for themselves whether it is a concern of 0003. #234 closed the same defect on the same paragraph on 2026-08-29, replacing two with three and keeping the enumeration; src/lifecycle/ landed on 2026-09-02 in a change about the core's own lifetime that had no reason to open it. So the number is deleted rather than corrected a second time. README.md hands the reader the command instead, in the way that paragraph already derives what each directory holds, and the set it returns is exactly the four: git grep -l 'not one of the six' -- src/ src/clock/mod.rs src/diagnostics/mod.rs src/failure/mod.rs src/lifecycle/mod.rs That derivation only answers because src/lifecycle/mod.rs now carries the sentence the other three already carried. It stated what it holds and never stated its position, so README.md's claim that each of them says so in its own first paragraph was false of it, and the only file saying why lifecycle sits beside the six was src/lib.rs, one file away from where README.md sends a reader to look. src/lib.rs loses its own count for the same reason and keeps the walk through each module. It was found by counting the directories against that paragraph while reading the board, not by anything reporting it. cargo build --locked --all-targets Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.14s cargo test --locked 587 + 2 + 5 + 5 + 3 + 11 + 28 + 5 + 125 + 1 = 772 passed, 0 failed What this does not prevent: nothing here compares a document's description of the tree against the tree, which is what #234 said on closing and is still true. A derived set stops this paragraph going stale in this particular way; it refuses nothing, and the next document that writes a count is refused by nothing. Closes #322 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
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.
The issue this belongs to
Closes #322
What changed
README.mdandsrc/lib.rseach counted the directories undersrc/that are not one of the six things 0003 says the core owns, and each said three while the tree carried four. Both counts are deleted rather than moved to four.README.mdhands the reader the command that returns the set instead, in the way that same section already derives what each directory holds, andsrc/lib.rskeeps its walk through each module without opening on a number.The derivation only answers because
src/lifecycle/mod.rsnow carries the sentence the other three already carried. It said what it holds and never said where it sits, soREADME.md's claim that each of those directories declares its position in its own first paragraph was false of it, and the only file saying whylifecycleis beside the six wassrc/lib.rs- one file away from whereREADME.mdsends a reader to look.What failure it prevents
A reader counting
src/against that paragraph met a directory the paragraph does not account for, and the natural reading of an unaccounted directory beside six that are named is that it is one of the six. It is the first file anybody reads about this repository and the error ran in the direction that makes the boundary look smaller than the tree draws it.This has already happened twice on one paragraph. #234 closed the same defect there on 2026-08-29, replacing two with three and keeping the enumeration:
Four days, in a change about the core's own lifetime that had no reason to open either paragraph. A repair that wrote four would buy until the next directory.
It was found by counting the directories against that paragraph while reading the board, not by anything reporting it.
Evidence
The tree at the base,
85e9ec1abd2f5c7d4a6d6b1f1d6b439bfb526c2f, against what the two documents said:Ten directories, six of them 0003's, so four beside them. At the head being pushed the command
README.mdnow hands the reader returns exactly those four:and
src/lib.rsis not in that set, so the command answers out of the modules rather than out of the document that cites it.The two commands the gate runs, at the head being pushed:
772 tests, none failed. The check that reads the documents I touched, and the two that read the Rust I touched:
What a guard here refuses, and the proof it bites
This change adds and edits no guard. It is prose in two documents and a doc comment in a third, and nothing in this tree refuses any of it - which is the thing the section below is about.
What this does not cover
No mechanism. Nothing here compares a document's description of the tree against the tree. That is what #234 said in its own closing paragraph and it is still true, so a document that writes a count tomorrow is refused by nothing and this change does not make it decidable. What it does is narrower: it takes the count out of the two places that carried one, so this paragraph cannot go stale in this particular way. The class is untouched.
The derivation rests on a literal.
git grep -l 'not one of the six' -- src/answers because four modules carry that phrase, so a module added tomorrow that writes the sentence differently is missing from the set and nothing says so. That is weaker than a check and stronger than a number, and it is the trade this change makes rather than one it hides.I re-ran the readings in the two paragraphs this touches and audited neither
README.mdnorsrc/lib.rsfurther.The past-tense sentence in
src/lib.rsthat a defect was found while adding the second of the three is left alone. It is an account of when something was read, it was right when it was written, and moving it would rewrite what happened rather than repair what is claimed.Nothing here reaches the eleven
src/directories' contents, the six modules 0003 names, or any behaviour. No test was added, because what changed is three sentences of prose and no code path.Who has read it
Nobody other than me. There is no second reader on this board tonight, and the evidence above stands in place of one rather than the question being left open.