Files
mesh-delivery/modules/mesh-delivery-checker/module.json
T
jschoubben 6d9a7b8aae Checker follows the assignments of the holder of the seat mesh-module-assigner found at run time; FollowAssignments, AssignerModule and AssignmentsBucket go
buildrun gains AssignerHolder, AssignmentsOf and SleepFor (moved from the builder's program, which uses them), so
the builder and the checker follow the holder's first-view tool, views family and state alike; the checker's
manifest consumes the seat's views assignments and reads its assignments state, its composition reads the
picture once followed. The assigner's callers list for the first view gains the checker.

Builds: design 47 G A-82, A-119, A-126, A-131
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 01:38:34 +01:00

198 lines
5.7 KiB
JSON

{
"module": "mesh-delivery-checker",
"version": "0.1",
"slug": "checker",
"claims": [
{
"name": "mesh-delivery-checker",
"scope": "mesh",
"serves": [
"try",
"try-read",
"try-end",
"input"
]
}
],
"consumes": [
"mesh-catalog.catalog-revision",
"mesh-catalog.seat-definition-changed",
"mesh-catalog.seat-definition-removed",
"mesh-delivery-indexer.views.candidates",
"mesh-delivery-indexer.views.manifests",
"mesh-delivery-indexer.views.modules",
"mesh-delivery-indexer.views.packages",
"mesh-delivery-indexer.views.predefined",
"mesh-delivery-indexer.views.seat-definitions",
"mesh-conditions.findings-asked",
"seat:mesh-module-assigner.views.assignments",
"node-build-go.toolchain-reported",
"node-build-node.toolchain-reported",
"node-engine.running"
],
"streams": [
{ "name": "checks", "events": ["preview.**", "owed.**", "try.**"] },
{ "name": "asks", "events": ["verdict"], "retention": "history" },
{ "name": "mesh-delivery-checker-findings", "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], "max-age-days": 7, "max-mib": 16 }
],
"state": [
{ "name": "asks", "history": 1 },
{ "name": "hearing", "history": 1 },
{ "name": "inputs", "ttl-seconds": 86400 },
{ "name": "compositions", "ttl-seconds": 259200 },
{ "name": "kept", "history": 1 },
{ "name": "owed", "history": 5 },
{ "name": "previews", "history": 5 },
{ "name": "tries", "history": 1 },
{ "name": "verdicts", "history": 5 },
{ "name": "first-views", "history": 1 },
{ "name": "findings", "history": 1 },
{ "name": "could-not-run", "history": 1 }
],
"reads": [
"mesh-delivery-builder.builds",
"mesh-delivery-watchman.presence",
"node-engine.have",
"seat:mesh-module-assigner.assignments",
"seat:node-build-go.steps",
"seat:node-build-go.toolchains",
"seat:node-build-node.steps",
"seat:node-build-node.toolchains"
],
"uses": [
"node-build-go",
"node-build-node"
],
"tools": [
"checker_ask_again",
"checker_composition_requests",
"checker_inputs",
"checker_kept",
"checker_previews",
"checker_pull",
"checker_status",
"checker_first_views",
"checker_first_view_again",
"checker_tries",
"checker_try",
"checker_try_end",
"checker_try_read",
"checker_verdicts"
],
"invokes": [
"mesh-delivery-indexer.indexer_read_candidates",
"mesh-delivery-indexer.indexer_read_manifests",
"mesh-delivery-indexer.indexer_read_modules",
"mesh-delivery-indexer.indexer_read_packages",
"mesh-delivery-indexer.indexer_read_predefined",
"mesh-delivery-indexer.indexer_read_seat_definitions",
"seat:git.file",
"seat:mesh-catalog.revision",
"seat:mesh-catalog.seat-definitions",
"seat:mesh-config.renames",
"seat:mesh-hand-acts.hand-act",
"seat:mesh-module-assigner.assignments",
"seat:node-build-go.drop",
"seat:node-build-node.drop",
"seat:node-engine.compose-candidate"
],
"own-secrets": {
"broker": "${dir:state}/broker"
},
"secrets-owner": "mesh-delivery-checker",
"config": {
"compose-answer-bound": {
"type": "number",
"description": "seconds a check waits for each placed node's engine to answer compose-candidate (novox/hq ADR 0593 §7, §9); a node that has not answered by then is named in the verdict as not composed on that node: no answer, and the check passes with that warning.",
"minimum": 1,
"maximum": 600,
"trusted": false,
"default": 60
},
"build-wait-bound": {
"type": "number",
"description": "seconds a check waits for the builder's builds of its candidate to end before it composes with them (novox/hq ADR 0603 §10); a build failed fails the check, naming it, and a build not ended by then is named in the verdict and the check composes without it.",
"minimum": 60,
"maximum": 7200,
"trusted": false,
"default": 1800
}
},
"resources": [
{
"id": "account",
"type": "user",
"name": "mesh-delivery-checker",
"shell": "/usr/bin/nologin",
"home": "/var/lib/mesh-delivery-checker"
},
{
"id": "state",
"type": "directory",
"mode": "0700",
"owner": "mesh-delivery-checker",
"place": ".",
"unknown": "program"
},
{
"id": "settings",
"type": "file",
"path": "${dir:state}/settings.json",
"mode": "0600",
"owner": "mesh-delivery-checker",
"takes-config": [
"compose-answer-bound",
"build-wait-bound"
],
"merge": "json",
"template": "files/settings.json"
},
{
"id": "checker",
"type": "process",
"name": "mesh-delivery-checker",
"artifact": "program",
"run": [
"./mesh-delivery-checker"
],
"env": {
"MESH_BROKER_FILE": "${dir:state}/broker",
"MESH_CHECKER_SETTINGS": "${dir:state}/settings.json"
},
"user": "mesh-delivery-checker",
"health": {
"kind": "unit"
}
}
],
"build": {
"artifacts": [
{
"name": "program",
"kind": "bundle",
"language": "go",
"system": "arch",
"from": "cmd/mesh-delivery-checker",
"binary": "mesh-delivery-checker"
},
{
"name": "tools",
"kind": "bundle",
"language": "go",
"system": "arch",
"from": "cmd/mesh-delivery-checker-tools",
"binary": "mesh-delivery-checker-tools",
"loads": [
"mesh-delivery-checker-tools"
]
},
{
"name": "files",
"kind": "archive",
"from": "files"
}
]
}
}