Say in the go and nodejs READMEs what holds at this step, and what holds once the users require them (review of issue 1573 step A)
mesh/merge-gate head ceb42b0e920e merged into trunk 5efd84e93e38 — pass: builds new: modules/go, modules/nodejs, sent nowhere; no bus step; every machine c…
mesh/repo-check head ceb42b0e920e merged into trunk 5efd84e93e38 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery delivered

This commit is contained in:
2026-10-21 09:25:23 +00:00
parent 025d62478a
commit ceb42b0e92
2 changed files with 16 additions and 11 deletions
+8 -6
View File
@@ -2,11 +2,13 @@
Node.js and npm as a module (novox/hq ADR 0477 §4, issue 1573).
- **Owns the packages `nodejs` and `npm`.** No other module declares them (`checks/toolchains` refuses one that
does).
- **Provides `node-toolchain` with the machine's reach**: dev-tools, lab and mesh-build-node require it, and the
requirement is met only by this module on the same machine. It is never pulled in for whatever asked, so
`nodejs` is assigned to a node on purpose, and a node without it refuses a module that needs it at resolution.
- **Declares the packages `nodejs` and `npm`.** Today dev-tools, lab and mesh-build-node declare some of them too,
which the resolver allows (ADR 0303); once they require `node-toolchain` instead (issue 1573's second step), this
is the only module that declares them, and `checks/toolchains` refuses another.
- **Provides `node-toolchain` with the machine's reach**: a module that requires it composes only on a machine where
this module is assigned. It is never pulled in for whatever asked, so `nodejs` is assigned to a node on purpose.
Nothing requires it yet; dev-tools, lab and mesh-build-node will, in the second step.
- Holds no long-running resource, so it adds nothing to `health-undeclared`.
The node-engine never uninstalls a package, so moving the declaration here removes nothing from a node.
The node-engine never uninstalls a package, so when the users stop declaring `nodejs` and `npm`, nothing leaves a
node that has this module.