diff --git a/00-META/checks/README.md b/00-META/checks/README.md index 03570189..e0562f7d 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 15 uses in 10 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/36-the-operators-agent-on-a-machine.md b/03-DESIGN/01-to-be/36-the-operators-agent-on-a-machine.md index b13d900a..d0e7f277 100644 --- a/03-DESIGN/01-to-be/36-the-operators-agent-on-a-machine.md +++ b/03-DESIGN/01-to-be/36-the-operators-agent-on-a-machine.md @@ -137,7 +137,7 @@ server's search finds by the command itself. **The guard on the agent's shell** (ADR 0245). The module's plugin carries, first among its hooks, the module's own program as a check before every shell command and file edit: ssh and its kin to a mesh -machine, and writing the hosts or resolver file or setting `HOSTALIASES`, are refused with the tool that +machine, and writing the `hosts` or resolver file or setting `HOSTALIASES`, are refused with the tool that does the job, or with the rule that a missing tool is created in its owning module. It runs from the managed directory, so a session cannot change it, judges with the machines and replaced commands the module last asked of the controller, and records every refusal and every operator's override in the module's state. 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