diff --git a/00-META/checks/README.md b/00-META/checks/README.md index 03570189..2fa722b0 100644 --- a/00-META/checks/README.md +++ b/00-META/checks/README.md @@ -78,5 +78,8 @@ of the tools' retired words (`retired-words`) with the glossary. It failed on something real before it passed: 581 uses of retired words in 63 documents on its first run, besides the glossary itself and research 034 — "the host" for the node-engine in 30 designs, "control plane" in 10, the glossary's own entry for the tool runner — and two glossary contradictions (the "console", the deprecated broker's seat), fixed in the change that -added it. Homonyms (*plan*, *gate*, *tier*, *ask*, *store*, *record*, *check*) are not checked by it: a +added it. A retired word's plural (`s` or `es` on its last word) is matched as the word: until 2026-10-07 +it was not, so "alerts", "rollouts" and "the hosts" (the node-engines) passed while their singulars +failed; the plural failed on 14 uses in 9 documents before it passed. A verb that reads like a plural +("a node hosts") is a finding too, and is reworded. Homonyms (*plan*, *gate*, *tier*, *ask*, *store*, *record*, *check*) are not checked by it: a word list cannot tell one sense from another, so they are reviewed. diff --git a/00-META/checks/words.py b/00-META/checks/words.py index d0276070..7d972103 100644 --- a/00-META/checks/words.py +++ b/00-META/checks/words.py @@ -20,7 +20,8 @@ What is enforced: checked document. Running prose is what is left once code blocks, code spans, block quotes, text in quotation marks, struck-through text, link targets, HTML comments and frontmatter are taken out: a quotation keeps the words it quotes, a link target is a file - name, and an identifier lives in a code span. + name, and an identifier lives in a code span. A word's plural is the word: "alerts" fails + as "alert" does. unique no head word (a bolded word opening a glossary entry) heads two entries, and no head word is also struck through on a *Not:* line. tools list with `--list tools` it prints the words retired in the tools' descriptions, which is the @@ -96,9 +97,13 @@ def glossary(): def pattern(word): - """A whole-word, case-insensitive match; a space in the word matches a space, a line break or a hyphen.""" + """A whole-word, case-insensitive match; a space in the word matches a space, a line break or a hyphen. + + The plural is the word too: its last part may end in `s` or `es` ("alerts", "control planes"), since + a retired word does not come back by being counted. Anything else joined on is another word. + """ parts = [re.escape(p) for p in word.split()] - return re.compile(r"(?i)(? shutting it down ends the path that reaches this installation's machines from a workstation. > The rollout is driven from the node, or before the broker stops — a sequencing constraint on > 5.2, not an afterthought. -- [x] 5.5 **the AMQP transport is deleted from the controller and the hosts**. One bus, nothing +- [x] 5.5 **the AMQP transport is deleted from the controller and the node-engines**. One bus, nothing to select ([ADR 0131](../../02-DECISIONS/0131-everything-on-the-mesh-speaks-to-the-broker-seat.md)). **Done 2026-09-28.** The controller's old consume loop, build request, tool call, management diff --git a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md index 7148f1ea..74eb9ac7 100644 --- a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md +++ b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md @@ -697,7 +697,7 @@ warning, not compared), and SMART read under an array. **Done when:** on a lab mesh, a broken build of the controller, the node-engine and the tool runner — one that starts and does nothing, one that crashes, one that cannot reach the bus — is each rolled back with no hand, the mesh ends on the previous build, and a condition and a message say so. Live: the -next three core rollouts each record a health verdict. +next three core builds to roll out each record a health verdict. **Built 2026-10-06** ([ADR 0236](../../02-DECISIONS/0236-a-build-is-judged-on-its-first-machine-and-put-back-by-something-other-than-itself-and-so-it-rolls-out-unattended.md), the operator's "start phase 4"): in mesh-controller (migration 0073), the probes H-controller, H-engine, @@ -713,7 +713,7 @@ so the *done when*; container state in the node-engine's report, without which a crash-loops after its compose applied is seen only through what it breaks; *(designed 2026-10-07 by [ADR 0240](../../02-DECISIONS/0240-a-module-says-how-it-is-healthy-and-the-node-engine-judges-it.md) as [to-be 48](48-a-module-says-how-it-is-healthy.md), whose phases track it)* composing `not-reversible` for -a build whose migration cannot be undone; the next three core rollouts' verdicts. +a build whose migration cannot be undone; the verdicts of the next three core builds to roll out. ### Phase 5 — Checks before merge, and the replays diff --git a/03-DESIGN/01-to-be/49-the-mesh-in-domains.md b/03-DESIGN/01-to-be/49-the-mesh-in-domains.md index e0c747ba..2486746c 100644 --- a/03-DESIGN/01-to-be/49-the-mesh-in-domains.md +++ b/03-DESIGN/01-to-be/49-the-mesh-in-domains.md @@ -80,7 +80,7 @@ ADR 0006 named seven contexts of the controller. Each is a domain now, under the | connectivity | Connectivity | | provisioning | Provisioning | | delivery | Change and delivery — owned by the `mesh-delivery` module, not by the controller (ADR 0239) | -| observability | Health and repair: the mesh built conditions, not alerts, and half of the domain is repair | +| observability | Health and repair: the mesh built conditions, not "alerts", and half of the domain is repair | | identity | Identity and access, with the licences store the seven did not name | Module, Core, Data and Operator and conversation are new: the manifest, the controller itself, the data