ADR 0193: every bundle the runtime serves is launched, and the runtime knows no language; design 38 WP4d

This commit is contained in:
jochen
2026-10-03 21:05:03 +02:00
parent 6a1fc71a4c
commit 6d53f9168a
5 changed files with 113 additions and 0 deletions
@@ -13,6 +13,7 @@ decisions:
- 02-DECISIONS/0149-the-live-mesh-is-the-test-bed.md
- 02-DECISIONS/0188-a-modules-own-code-is-bundles-in-any-language-and-a-tools-bundle-speaks-mcp-to-the-runtime.md
- 02-DECISIONS/0192-a-tools-bundle-declares-what-it-is-given-and-the-runtime-hands-it-to-that-bundle-alone.md
- 02-DECISIONS/0193-every-bundle-the-runtime-serves-is-launched-and-the-runtime-knows-no-language.md
---
# 38. Building the operator's machine
@@ -261,6 +262,21 @@ Two traps met on the way: a tools bundle whose module declares no `tools` list m
the composer delivers it nowhere while the build reports success; and a module whose builds are
pinned to an old commit is left out of a merge's plan and must be built from `main` by hand.
## WP4d — Every served bundle is launched; the runtime in Go
*mesh-sdk, mesh-controller, mesh-tools. [ADR 0193](../../02-DECISIONS/0193-every-bundle-the-runtime-serves-is-launched-and-the-runtime-knows-no-language.md).*
**In order.** The SDK's stdio loop serves what a bundle registered under the module it is told it
serves as. The builder writes, beside every TypeScript entrypoint, an executable launcher that
imports it and serves what it registered; the composer names the launcher where it named the
entrypoint. The runtime launches every served entrypoint and imports none; the resolve hook and the
per-registration environment go. Proven live on all four machines. Then the runtime is rewritten in
Go against the same contract — the bus, the memberships and seats, the launcher, the console's MCP
over HTTP — and replaces the TypeScript one, proven the same way.
**Proof.** The tests ADR 0193 names; live, every moved module's tools and both node seats answer from
launched bundles on every machine, and then do again from the Go runtime.
## WP4c — The module's own long-running code moves
*Not yet broken down.* Twenty-three containers carry code that is not a tool: event handlers,