distribution: say what the store holds and what the records name, so collection is no longer blind (hq ADR 0251)
mesh/merge-gate fail: builds distribution → novox; no bus step; a manifest the change touches fails the module check: modules/distribution/module.json: thi…
mesh/repo-check fail: its merge-check.sh failed: long-running resources without health: 69
mesh/delivery superseded: a newer head of the same pull request

The store had no working tools: its TypeScript client was never built, and nothing could count what
the store holds that no record names. A Go bundle lists the store's files through its own container,
reads each manifest through its door, and sets that beside the controller's records. Collection is
asked of the controller, which decides and records; the store's tools never delete. The image.pushed
event was declared and never emitted, and nothing consumes it, so it goes.
This commit is contained in:
jochen
2026-10-08 11:59:47 +02:00
parent f7b1853b8b
commit 5f22ebbe97
17 changed files with 1865 additions and 220 deletions
@@ -0,0 +1,31 @@
// The distribution module's Go bundle (novox/hq ADR 0251 §1–3, to-be 51): a process the node's runtime
// launches and speaks MCP over stdio to. It says what the artifact store holds — its repositories, its
// size, and what the controller's records say of each manifest — read from the store's own files
// through its own container and from its door, and writing to neither. A collection is asked of the
// controller, which decides and records what it lets go of (ADR 0189). stdout is the protocol; what
// this bundle says, it says on stderr.
package main
import (
"fmt"
"os"
stdio "git.novox.be/novox/mesh-sdk/go"
)
func main() {
s := &Store{
URL: os.Getenv("MESH_STORE_URL"),
Container: os.Getenv("MESH_STORE_CONTAINER"),
Run: ExecRunner,
UID: os.Getuid(),
}
if s.URL == "" {
fmt.Fprintln(os.Stderr, "[store-tools] MESH_STORE_URL is not set: every manifest will be said as unread")
}
// An empty name serves as the module the runtime names (MESH_SERVED_MODULE): distribution.
if err := stdio.Serve("", Tools(s, Controller{Ask: stdio.Ask})); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}