What is missing
The functional spec still says namespace where §FS-terms.terms.1 says kind / alias. Sweep it, in one pull request that answers for this word and for nothing else.
-
Row: §FS-terms.terms.1 — "kind — One [[kinds]] row: a class of declarations with a home, citable or not. Displaces prefix, and namespace as a name for an ID space. — and §FS-terms.terms.4: "alias displaces namespace in that sense" (the name a citation uses to reach a workspace member)."
-
Size: 78 occurrences across 8 functional-spec file(s), 7 of them in a heading title. Measured at 4b2b647aaa. The raw grep -c is 117 and is not the number to plan from. Per file: FS-workspace.md (34), FS-check.md (19), FS-init.md (9), FS-config.md (8), FS-fmt.md (2), FS-integrations.md (2), FS-lsp.md (2), FS-rules.md (2).
-
Carve-outs: Two rows, two displacements, and picking the wrong one is the trap. An ID space is a kind; the name a citation uses to reach another project is an alias. FS-terms.md:38-45 freezes the namespace bytes grund init writes from templates/ — the managed block's namespace paragraph keeps the word, and grund init --check must stay green.
-
Heading titles this renames:
FS-check.md:1208: #### 4.9.2 The entry as written, the namespace by its alias path
FS-config.md:931: ### 3.8 [workspace] — sub-project namespaces
FS-config.md:1025: #### 3.9.3 Namespace matching
FS-init.md:368: ##### 2.3.4.16 Project Namespaces
FS-workspace.md:295: ##### 2.2.2.3 An absent namespace absorbs the alias paths beneath it
FS-workspace.md:308: ##### 2.2.2.4 Recognizing a citation into an absent namespace
FS-workspace.md:529: ### 4.3 Unverified is reported once per namespace
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 namespace where §FS-terms.terms.1 says kind / alias. Sweep it, in one pull request that answers for this word and for nothing else.
Row: §FS-terms.terms.1 — "kind — One
[[kinds]]row: a class of declarations with a home, citable or not. Displaces prefix, and namespace as a name for an ID space. — and§FS-terms.terms.4: "alias displaces namespace in that sense" (the name a citation uses to reach a workspace member)."Size: 78 occurrences across 8 functional-spec file(s), 7 of them in a heading title. Measured at
4b2b647aaa. The rawgrep -cis 117 and is not the number to plan from. Per file:FS-workspace.md(34),FS-check.md(19),FS-init.md(9),FS-config.md(8),FS-fmt.md(2),FS-integrations.md(2),FS-lsp.md(2),FS-rules.md(2).Carve-outs: Two rows, two displacements, and picking the wrong one is the trap. An ID space is a kind; the name a citation uses to reach another project is an alias.
FS-terms.md:38-45freezes thenamespacebytesgrund initwrites fromtemplates/— the managed block's namespace paragraph keeps the word, andgrund init --checkmust stay green.Heading titles this renames:
FS-check.md:1208: #### 4.9.2 The entry as written, the namespace by its alias pathFS-config.md:931: ### 3.8[workspace]— sub-project namespacesFS-config.md:1025: #### 3.9.3 Namespace matchingFS-init.md:368: ##### 2.3.4.16 Project NamespacesFS-workspace.md:295: ##### 2.2.2.3 An absent namespace absorbs the alias paths beneath itFS-workspace.md:308: ##### 2.2.2.4 Recognizing a citation into an absent namespaceFS-workspace.md:529: ### 4.3 Unverified is reported once per namespaceEach 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.