Every node is a development machine: an agent builds a change and runs its tests there before opening a pull request, and the lab tests it afterwards as QA. No module declared Go or npm, so no node could do the first part.
dev-tools
The tools a machine needs to develop the mesh's own code (novox/hq issue 626). Every node is a development machine: an agent working on a change builds it and runs its tests there, with these tools, before it opens a pull request. The lab is the QA step after that: it tests the work in a sandbox, through its seat at the mesh scope, and is not where development happens.
Assign it to every node.
Owns
| what | package | class (ADR 0182) |
|---|---|---|
the Go toolchain, for go build and go test in every Go module |
go |
package |
a C compiler, for go test -race and cgo |
gcc |
package |
| make | make |
package |
Node.js and npm, for the TypeScript modules' npm ci and npm test |
nodejs, npm |
package |
| Python, for the scripts some checks run | python |
package |
| git and jq | git, jq |
package |
All are in the distribution's official repositories, so the node-engine's package manager installs them on any
node. The versions are the distribution's: the toolchain images that run mesh/repo-check stay the judge of a
pull request, and a local run is the developer's early answer, not the verdict.
Nothing else is placed: no file, no service, no environment. A module's own dependencies come from its lock
file (go.mod, package-lock.json), as in the toolchain images.