Design 46 7-approval-mark §22's integration test: the runner's gate wired as main wires it, on a real bus with stand-ins of the operator channel's router and the hand-act seat: a marked call asked, approved, run once, recorded, listed; a restart between the run and warranted's answer recorded once; a Decline runs nothing; no state bound or no holder of operator-channel runs nothing. It failed first on the act's key: `<node>.act.sha256:<hex>` is a key the bus refuses, so every marked call was refused on the live bus. The digest is now escaped with keys.EscapeName (lead answer A-209). The runner's two start tests are one, so the module gains no test (design 47 G §419, §626). Builds: design 46 7-approval-mark §13, §22; design 47 G §419, §626; lead answer A-209 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
node-tools
The node's tool runtime as a module (novox/hq ADR 0175, to-be 38 WP3). Assigned to a machine, it is one process the host runs from this bundle, as the operator's account: it serves every assigned module's tools and every held seat's verbs on the bus, and answers MCP on the machine's loopback — the console (design 34). The mesh composes the process (which bundles to load, where the credential is, whose machine it is); this manifest says only what the machine must have for it: the interpreter, a place for the credential, the loopback port, and leave to call every tool.
The code is the mesh-tools package in this directory; the module at the repository root,
mesh-tools, builds the images TypeScript bundles are compiled in. See the repository README.