What is missing
The functional spec still says walk, walked, walking where §FS-terms.terms.4 says scan. Sweep it, in one pull request that answers for this word and for nothing else.
-
Row: §FS-terms.terms.4 — "Displaces walk and walk root."
-
Size: 215 occurrences across 14 functional-spec file(s), 24 of them in a heading title. Measured at 4b2b647aaa. The raw grep -c is 303 and is not the number to plan from. Per file: FS-check.md (93), FS-config.md (60), FS-workspace.md (20), FS-fmt.md (17), FS-show.md (6), FS-errors.md (4), FS-init.md (3), FS-lsp.md (3), FS-cli.md (2), FS-cover.md (2), FS-id.md (2), FS-init-fixtures.md (1), FS-list.md (1), FS-output-shapes.md (1).
-
Carve-outs: The walk.rs module and the --walk-adjacent names stay. Read FS-config before rewriting it: the config-discovery sentence "walk up to a grund.toml" is about ascending the directory tree, which is not what a scan does — a scan reads a scope. 93 of the 215 are in FS-check.md and 60 in FS-config.md, so those two files carry two thirds of the work and probably two different senses. The compound walk root is a separate issue; do that one first or take it with this one, but say which.
-
Heading titles this renames:
FS-check.md:150: #### 1.3.1 The walk covers the whole config root
FS-check.md:154: #### 1.3.2 The wider walk reads a superset, each file once
FS-check.md:683: #### 3.14.3 Resolution sees the whole walk
FS-check.md:699: #### 3.14.7 A wider walk can fail wider
FS-check.md:992: #### 3.29.9 Every command that walks reports it, not check alone
FS-check.md:996: #### 3.29.10 Knowable only from the walk
FS-check.md:1000: #### 3.29.11 The scope is the walk the run already makes
FS-check.md:1004: #### 3.29.12 An unlisted block outside the walk is unreported
FS-check.md:1160: #### 4.7.2 Every command that walks says it, not just check``
FS-check.md:1268: #### 4.10.7 Every command that walks says it, and each block says it once
FS-config.md:1: # FS-config: grund reads a TOML config file found by walking up
FS-config.md:577: #### 3.4.7 scan — a place that is listed, not walked
FS-config.md:596: ##### 3.4.7.2 Not walked, however the walk arrives
FS-config.md:596: ##### 3.4.7.2 Not walked, however the walk arrives
FS-config.md:802: ### 3.5 [scan] — what gets walked
FS-config.md:842: ##### 3.5.2.1 The walk root keeps the path the run was handed
FS-config.md:854: #### 3.5.5 A link the walk cannot resolve is reported, and not walked into
FS-config.md:854: #### 3.5.5 A link the walk cannot resolve is reported, and not walked into
FS-config.md:866: #### 3.5.7 include is walked from the config root
FS-config.md:870: #### 3.5.8 Every configured kind home is walked
FS-config.md:874: #### 3.5.9 A walk root outruns every rule about descent
FS-config.md:878: #### 3.5.10 Why every home is walked
FS-fmt.md:74: ##### 2.3.1.1 A Python docstring is walked for its content
FS-workspace.md:1379: ### 8.8 Discovery follows grund check's walk-up
Each one invalidates every Markdown link fragment reaching it. grund fmt --write repairs them in the same change (§FS-fmt.6.3). No coordinate moves — no retired word appears in a named section handle — so every §ID.section citation still resolves.
-
Also in scope: whatever this change breaks, wherever it lives, including README.md (§FS-examples.4 → §REQ-readme.2). Prose in docs/architecture/, in a released changelog under docs/changelog/, and in the frozen GOAL, REQ and decision-record texts is not — those keep the words they have (§FS-terms, FS-terms.md:38-45); grund fmt --write still repairs their link fragments.
-
Claims: this word and nothing else. It makes no claim about any other retired word, and certifying the completeness of unchanged prose beyond it is not part of the review (§FS-terms, FS-terms.md:62-64).
-
Bucket: B — bounded judgement: one dominant retired sense with a named carve-out to respect. Each occurrence is read, but the rule for reading it is stated above.
Why it belongs in this tool
§FS-terms is grund's own specification of what its words mean, and a grund spec that uses a word it retired is the drift that declaration exists to close. FS-terms.md:38-45 says a commissioned pass is a permitted way to pay this debt and that it answers for the words it names — this is one such pass, for one word.
Two things a reviewer should not mistake. grund check exits 0 over every stale link fragment a heading rename leaves behind — an anchor is not a coordinate — so "grund check is green, therefore nothing broke" is wrong here. grund fmt --check names them, --write repairs them, and lychee reports Cannot find fragment independently. And a raw grep -c overstates this sweep by roughly 3× overall (37× on ref), which is why the size above is the measured residual.
What you do today instead
Nothing: the word is retired on paper and stands in the prose. A reader who takes the cheap lead read of a section gets a word the shared vocabulary says is not the word, and has to open FS-terms to find that out — the second file §GOAL-token-economy.1 charges for, and the exact failure §FS-terms says it exists to close.
Worked example: PR #306 (point size → coordinate-size: 11 files, +20/−18, including the heading rename, the nine fragment repairs and README.md). Parent: #291.
What is missing
The functional spec still says walk, walked, walking where §FS-terms.terms.4 says scan. Sweep it, in one pull request that answers for this word and for nothing else.
Row: §FS-terms.terms.4 — "Displaces walk and walk root."
Size: 215 occurrences across 14 functional-spec file(s), 24 of them in a heading title. Measured at
4b2b647aaa. The rawgrep -cis 303 and is not the number to plan from. Per file:FS-check.md(93),FS-config.md(60),FS-workspace.md(20),FS-fmt.md(17),FS-show.md(6),FS-errors.md(4),FS-init.md(3),FS-lsp.md(3),FS-cli.md(2),FS-cover.md(2),FS-id.md(2),FS-init-fixtures.md(1),FS-list.md(1),FS-output-shapes.md(1).Carve-outs: The
walk.rsmodule and the--walk-adjacent names stay. ReadFS-configbefore rewriting it: the config-discovery sentence "walk up to agrund.toml" is about ascending the directory tree, which is not what a scan does — a scan reads a scope. 93 of the 215 are inFS-check.mdand 60 inFS-config.md, so those two files carry two thirds of the work and probably two different senses. The compound walk root is a separate issue; do that one first or take it with this one, but say which.Heading titles this renames:
FS-check.md:150: #### 1.3.1 The walk covers the whole config rootFS-check.md:154: #### 1.3.2 The wider walk reads a superset, each file onceFS-check.md:683: #### 3.14.3 Resolution sees the whole walkFS-check.md:699: #### 3.14.7 A wider walk can fail widerFS-check.md:992: #### 3.29.9 Every command that walks reports it, notcheckaloneFS-check.md:996: #### 3.29.10 Knowable only from the walkFS-check.md:1000: #### 3.29.11 The scope is the walk the run already makesFS-check.md:1004: #### 3.29.12 An unlisted block outside the walk is unreportedFS-check.md:1160: #### 4.7.2 Every command that walks says it, not justcheck``FS-check.md:1268: #### 4.10.7 Every command that walks says it, and each block says it onceFS-config.md:1: # FS-config: grund reads a TOML config file found by walking upFS-config.md:577: #### 3.4.7scan— a place that is listed, not walkedFS-config.md:596: ##### 3.4.7.2 Not walked, however the walk arrivesFS-config.md:596: ##### 3.4.7.2 Not walked, however the walk arrivesFS-config.md:802: ### 3.5[scan]— what gets walkedFS-config.md:842: ##### 3.5.2.1 The walk root keeps the path the run was handedFS-config.md:854: #### 3.5.5 A link the walk cannot resolve is reported, and not walked intoFS-config.md:854: #### 3.5.5 A link the walk cannot resolve is reported, and not walked intoFS-config.md:866: #### 3.5.7includeis walked from the config rootFS-config.md:870: #### 3.5.8 Every configured kind home is walkedFS-config.md:874: #### 3.5.9 A walk root outruns every rule about descentFS-config.md:878: #### 3.5.10 Why every home is walkedFS-fmt.md:74: ##### 2.3.1.1 A Python docstring is walked for its contentFS-workspace.md:1379: ### 8.8 Discovery followsgrund check's walk-upEach one invalidates every Markdown link fragment reaching it.
grund fmt --writerepairs them in the same change (§FS-fmt.6.3). No coordinate moves — no retired word appears in a named section handle — so every§ID.sectioncitation still resolves.Also in scope: whatever this change breaks, wherever it lives, including
README.md(§FS-examples.4 → §REQ-readme.2). Prose indocs/architecture/, in a released changelog underdocs/changelog/, and in the frozen GOAL, REQ and decision-record texts is not — those keep the words they have (§FS-terms,FS-terms.md:38-45);grund fmt --writestill repairs their link fragments.Claims: this word and nothing else. It makes no claim about any other retired word, and certifying the completeness of unchanged prose beyond it is not part of the review (§FS-terms,
FS-terms.md:62-64).Bucket: B — bounded judgement: one dominant retired sense with a named carve-out to respect. Each occurrence is read, but the rule for reading it is stated above.
Why it belongs in this tool
§FS-terms is
grund's own specification of what its words mean, and agrundspec that uses a word it retired is the drift that declaration exists to close.FS-terms.md:38-45says a commissioned pass is a permitted way to pay this debt and that it answers for the words it names — this is one such pass, for one word.Two things a reviewer should not mistake.
grund checkexits 0 over every stale link fragment a heading rename leaves behind — an anchor is not a coordinate — so "grund checkis green, therefore nothing broke" is wrong here.grund fmt --checknames them,--writerepairs them, andlycheereportsCannot find fragmentindependently. And a rawgrep -coverstates this sweep by roughly 3× overall (37× on ref), which is why the size above is the measured residual.What you do today instead
Nothing: the word is retired on paper and stands in the prose. A reader who takes the cheap lead read of a section gets a word the shared vocabulary says is not the word, and has to open
FS-termsto find that out — the second file §GOAL-token-economy.1 charges for, and the exact failure §FS-terms says it exists to close.Worked example: PR #306 (point size → coordinate-size: 11 files, +20/−18, including the heading rename, the nine fragment repairs and
README.md). Parent: #291.