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.
33 lines
2.3 KiB
Markdown
33 lines
2.3 KiB
Markdown
# 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](../064-a-mesh-build-cannot-fetch-a-modules-external-dependencies/00-report.md).
|
|
- 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.
|