words.py built its pattern with (?![\w-]) straight after the retired word, so a plural passed: "alerts" and "rollouts" were fine while "alert" and "rollout" were retired (ADR 0244).
The pattern now accepts s or es on the last word of a retired word or identifier. The exemptions for code spans, quotations, struck-through text, link targets, comments and frontmatter are unchanged.
It failed on 15 uses in 10 documents, one of them found after rebasing onto main. All of them are reworded here, as wording only, and no decision record is touched:
"the hosts" for the node-engines in to-be 28. These were real finds.
"alerts" in the glossary and in to-be 06 and 49. In 49 the word is now quoted, because the sentence names it.
"rollouts" in to-be 45.
"a node hosts" (a verb) in as-is 01 and to-be 15, now "runs" or "holds".
"the hosts file" in to-be 08 and 36, now the hosts file.
00-META/checks/README.md records the failure.
The checks have no test suite, so the failure is recorded in the README the way the other checks record theirs.
The catalogue's checks/words has the same flaw and gets its own PR, novox/mesh-catalog#112.
Checks: records.py, index.py, cycle.py and words.py pass, and so does sh merge-check.sh, after rebasing onto main.
`words.py` built its pattern with `(?![\w-])` straight after the retired word, so a plural passed: "alerts" and "rollouts" were fine while "alert" and "rollout" were retired (ADR 0244).
- The pattern now accepts `s` or `es` on the last word of a retired word or identifier. The exemptions for code spans, quotations, struck-through text, link targets, comments and frontmatter are unchanged.
- It failed on 15 uses in 10 documents, one of them found after rebasing onto main. All of them are reworded here, as wording only, and no decision record is touched:
- "the hosts" for the node-engines in to-be 28. These were real finds.
- "alerts" in the glossary and in to-be 06 and 49. In 49 the word is now quoted, because the sentence names it.
- "rollouts" in to-be 45.
- "a node hosts" (a verb) in as-is 01 and to-be 15, now "runs" or "holds".
- "the hosts file" in to-be 08 and 36, now the `hosts` file.
- `00-META/checks/README.md` records the failure.
The checks have no test suite, so the failure is recorded in the README the way the other checks record theirs.
The catalogue's `checks/words` has the same flaw and gets its own PR, novox/mesh-catalog#112.
Checks: records.py, index.py, cycle.py and words.py pass, and so does `sh merge-check.sh`, after rebasing onto main.
composed together: pass — the change touches no module of the mesh's graph
Transitions
2026-10-07 19:15 (new) → proposed (announced): novox/hq#176's head announced
2026-10-07 19:15 proposed → checked (checked): the verdict names this commit
2026-10-07 19:15 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-07 19:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-07 19:21 published → delivered (done): nothing for a walk to move
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@4b36234c9b13` — **delivered** since 2026-10-07T19:21:44Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Group** `fix/words-match-plurals`, in order: novox/hq@4b36234c9b13 → novox/mesh-catalog@362974244ebc
- composed together: pass — the change touches no module of the mesh's graph
**Transitions**
- 2026-10-07 19:15 (new) → proposed (announced): novox/hq#176's head announced
- 2026-10-07 19:15 proposed → checked (checked): the verdict names this commit
- 2026-10-07 19:15 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-07 19:21 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-07 19:21 published → delivered (done): nothing for a walk to move
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
words.py matched a retired word only when nothing followed it, so the
plural of every retired word passed. The pattern now takes s or es on the
last word; 14 uses in 9 documents are reworded, two of them 'the hosts'
for the node-engines.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
words.pybuilt its pattern with(?![\w-])straight after the retired word, so a plural passed: "alerts" and "rollouts" were fine while "alert" and "rollout" were retired (ADR 0244).soreson the last word of a retired word or identifier. The exemptions for code spans, quotations, struck-through text, link targets, comments and frontmatter are unchanged.hostsfile.00-META/checks/README.mdrecords the failure.The checks have no test suite, so the failure is recorded in the README the way the other checks record theirs.
The catalogue's
checks/wordshas the same flaw and gets its own PR, novox/mesh-catalog#112.Checks: records.py, index.py, cycle.py and words.py pass, and so does
sh merge-check.sh, after rebasing onto main.Delivery
novox/hq@4b36234c9b13— delivered since 2026-10-07T19:21:44ZDelivery plan — builds nothing: the change touches no module of the mesh's graph
Group
fix/words-match-plurals, in order: novox/hq@4b36234c9b → novox/mesh-catalog@362974244eTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.25b313419bto4b36234c9b