Terminology
Ground your docs' vocabulary — glossary-backed lexicon rules over the same source layer as every other grounded check.
SHIP'S COMPUTER: The word is "waypoint". You said "node". I have filed this under things we agreed to stop saying.
A glossary is a grounded source with structure: canonical spellings and banned ones. Casing is a linter's job (markdownlint MD044 proper-names).
<!-- mdv: document @glossary/terms=./glossary.json? @glossary/undefined=./glossary.json? -->[
{
"term": "waypoint",
"kind": "domain-term",
"deprecated": ["node"],
"definition": "A charted position a transit plan may pass through."
}
]## Route
The transit plan passes through every node before docking.plan.md
3 warning "node" is a deprecated form of "waypoint" deprecated-term
help: Replace it with the canonical term from the glossaryGlossary entries
JSON only (grammars/; invalid-glossary otherwise). Fields: term, kind, aliases, deprecated, compounds, definition. Put it in CODEOWNERS.
Binding
Per contract (above) or once in config; ? keeps copies shape-only until the glossary exists.
export default defineConfig({
rules: { "@glossary/terms": { value: "glossary?" }, "@glossary/undefined": { value: "glossary?" } },
sources: { declare: { glossary: "./.mediva/sources/glossary.json" } },
});The checks
| Code | Fires on | Default |
|---|---|---|
deprecated-term | a banned spelling; quoted mentions are exempt | warn |
undefined-term | an unlisted acronym, CamelCase or multi-word name | warn, opt-in |
Promote with error=deprecated-term.
Without a glossary
content. checks capitalised names against any source.
<!-- mdv: document content.entities.in=./crew.json -->