060: 44 of 70 modules now mesh-buildable (was 8) — the mechanical majority, proven by direct builds and the bed. The structural remainders: external-dependency fetch (new issue 064) and route-proxy's cross-repo build context. 064 records the build environment's isolation from public npm and Docker Hub.
2.3 KiB
Diagnosis — 2026-09-18
The gap was mechanical for most of the catalogue and structural for a few.
The mechanical part (fixed). 44 of 70 modules now carry a build section and a Dockerfile
mirroring the eight that already had one: two named bases (build and runtime), the module's own
source compiled against the sdk in the base, and every serve-time entrypoint named in the runtime
image so tools serve, events flow, and a provider's provisioner reconciles in the same process
(the convention hq issue 061 settled — postgres, gitea and lavinmq were retrofitted to it from
running their provisioner as a separate args command). Proven end to end: redis, keycloak,
mongodb, mosquitto and openai-consumer build through the mesh's own builder from their own
directory; the built-store-cross-node bed builds and runs the retrofitted lavinmq and postgres.
The structural part (deferred, each with an owner).
- Three modules need an artifact the mesh build environment cannot fetch — an npm package
(model-usage:
pg; anthropic-manager:tweetnacl) or a binary from a public image (minio:mc). The build's npm and container runtime reach the mesh's own registry, not the public one; apt works, npm and image pulls do not. This is its own question — issue 064. - route-proxy's build context is the mesh-controller repository, not its own module directory (it ships the packaging of a proxy whose canonical source lives with the contract). The build section names a Dockerfile relative to the module; a cross-repository context is a shape it cannot yet express. Deferred pending a design decision on cross-repo build inputs.
The remaining modules are exempt rather than unbuilt: the foundation trio (builder, mesh-controller, distribution — built by the foundation's own path, and distribution cannot build through the store it provides, ADR 0072/issue 029), and the upstream-image-only modules that run a stock image and carry no code of their own.
Located in: mesh-catalog (the manifests and Dockerfiles), with the convention enforced by mesh-controller's builder. Resolved for the mechanical majority; the two structural remainders are tracked as issue 064 and the route-proxy cross-repo deferral.