ADR 0152: the operator's surface is a module, the console
The work order's group-3 question answered: an ordinary module the mesh assigns to the machine a person sits at, holding a minted credential, calling tools under a manifest grant (invokes), serving MCP on loopback. Design 34; pointers in 33, 25 and 0095; module check designed into 12 (issue 148); README stops claiming an indexing nothing provides (issue 006).
This commit is contained in:
@@ -7,9 +7,10 @@ code:
|
||||
- mesh-controller internal/catalogue/build.go
|
||||
- mesh-controller internal/inventory/secrets.go
|
||||
- mesh-controller cmd/mesh-builder
|
||||
updated: 2026-09-12
|
||||
updated: 2026-09-30
|
||||
decisions:
|
||||
- 02-DECISIONS/0069-a-module-is-a-repository-and-a-path.md
|
||||
- 02-DECISIONS/0037-where-a-module-lives.md
|
||||
- 02-DECISIONS/0009-modules-and-the-graph.md
|
||||
- 02-DECISIONS/0010-delivery.md
|
||||
- 02-DECISIONS/0005-the-node-host.md
|
||||
@@ -60,6 +61,32 @@ module from a repository and a path, and the root-only reading left every existi
|
||||
unbuildable — pointed at the catalogue the builder finds no manifest, pointed at a module's source
|
||||
it finds no manifest either.*
|
||||
|
||||
## A manifest is checked where it is written
|
||||
|
||||
*Added 2026-09-30, from [issue 148](../../04-ISSUES/148-a-manifest-outside-this-catalogue-has-no-check/00-report.md).*
|
||||
|
||||
The check the mesh applies at registration — the manifest parses strictly, every name in it is a
|
||||
usable one, its routes and events and seats are well formed, and no two manifests given together
|
||||
declare one seat — is a verb on the controller's binary, `module check <manifest>…`, and it needs no
|
||||
mesh. It reads the files it is given, runs the same functions registration runs, prints every problem
|
||||
in the manifest's own words, and exits non-zero if there was one. Somebody describing their own
|
||||
application in their own repository — the case [ADR 0037](../../02-DECISIONS/0037-where-a-module-lives.md)
|
||||
calls the one that matters most — runs it before pushing, and finds out there rather than when a
|
||||
running mesh refuses the registration, or later, when a machine applies something that resolved and
|
||||
should not have.
|
||||
|
||||
**What it cannot know, it says.** A seat another module declares elsewhere is unknown to a check that
|
||||
was not handed that module's manifest, and the output says so rather than refusing: pass the other
|
||||
manifest too. The mesh's own seats it knows from the binary, which is the one place that set may be
|
||||
read without a store ([ADR 0122](../../02-DECISIONS/0122-a-seat-is-data-a-rename-is-a-database-update.md)
|
||||
keeps the store authoritative, so a claim on a mesh seat is judged fully only at registration, and the
|
||||
check says that too).
|
||||
|
||||
*How it is checked:* the controller's test runs the check over the catalogue checkout beside it and
|
||||
over a manifest with a known fault, and asserts the first passes and the second names the fault; the
|
||||
test that used to be the only check, `TestEveryCatalogueManifestParses`, now stands beside a command
|
||||
anybody can run.
|
||||
|
||||
## The manifest in the repository is not the manifest the mesh holds
|
||||
|
||||
A resource names an artifact:
|
||||
|
||||
Reference in New Issue
Block a user