mesh/merge-gate pass: builds distribution, new: modules/artifact-store-tools → novox; no bus step; every machine composes with the change as it did without…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery failed: its walk failed: a gate on a first machine (what it carried put back), a build, a machine
A module that provides the artifact store cannot build an artifact: building publishes to the store, so the store would be needed to create itself, and the module check refuses it. The tools become artifact-store-tools, assigned beside the store, and read manifests from the store's files through its container as they already read the listing, so they need no address for the store's door. Named for the artifact store, because "store" alone is the database server (hq glossary).
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})); err != nil {
|
||
fmt.Fprintln(os.Stderr, err)
|
||
os.Exit(1)
|
||
}
|
||
}
|