mesh/merge-gate pass: builds artifact-store-tools → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery delivered
No record names an image the mesh did not make, so one a definition pins under an older name of the store read as unrecorded, the same word as an image nothing uses. The tool now reads every definition through the catalogue and says named-by-a-definition with the module. The store's older names are the mesh's setting older-store-names, since a catalogue names no installation.
32 lines
1.3 KiB
Go
32 lines
1.3 KiB
Go
// The artifact-store-tools 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 the store's own container, and writing nothing. A collection is asked of
|
||
// the controller, which decides and records what it lets go of (ADR 0189).
|
||
//
|
||
// **A module beside the store, not the store's own.** A module that provides the artifact store cannot
|
||
// also build an artifact: building publishes to the store, so the store would be needed to create
|
||
// itself, and the controller refuses that manifest. So these tools are a second module, assigned to the
|
||
// machine that holds the store. 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{
|
||
Container: os.Getenv("MESH_ARTIFACT_STORE_CONTAINER"),
|
||
Run: ExecRunner,
|
||
UID: os.Getuid(),
|
||
}
|
||
// An empty name serves as the module the runtime names (MESH_SERVED_MODULE): artifact-store-tools.
|
||
if err := stdio.Serve("", Tools(s, Controller{Ask: stdio.Ask}, &Catalogue{Ask: stdio.Ask})); err != nil {
|
||
fmt.Fprintln(os.Stderr, err)
|
||
os.Exit(1)
|
||
}
|
||
}
|