G's grants already carry a state's max-mib onto its bucket (Bucket.MaxBytes, §469); main's second copy of that cap in BucketStreamConfig and Composed is dropped for G's, and main's tests (the declared cap row, the held bucket raised) are kept. The checker keeps G's version 0.1 (§368) with main's compositions max-mib 256. Builds: design 47 G §469, §368; A-277 (since mesh-delivery #206 the grants part carries max-mib) Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
199 lines
5.7 KiB
JSON
199 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, "max-mib": 256 },
|
|
{ "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_composition_requests_drop",
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
}
|