The group try refused the registry group's indexer: the trunk's validator, given no definitions, judged it by its built-in list, which lacks mesh-catalog's seat-definitions and node-engine's manifest-reads. The checker now reads each touched contracts module's definitions at its member's head (the forge's commit trees and files, parts resolved) and lays them over the seat list's in the request. Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
201 lines
5.5 KiB
JSON
201 lines
5.5 KiB
JSON
{
|
|
"module": "mesh-delivery-checker",
|
|
"version": "1",
|
|
"slug": "checker",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-delivery-checker",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"try",
|
|
"try-read",
|
|
"try-end"
|
|
]
|
|
}
|
|
],
|
|
"consumes": [
|
|
"go-package-registry.published",
|
|
"mesh-catalog.seat-definition-changed",
|
|
"mesh-catalog.seat-definition-removed",
|
|
"mesh-build-go.toolchain.reported",
|
|
"mesh-build-node.toolchain.reported",
|
|
"mesh-delivery-assigner.views.assignments",
|
|
"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",
|
|
"npm-package-registry.published"
|
|
],
|
|
"streams": [
|
|
{ "name": "checks", "events": ["preview.**", "owed.**", "try.**"] },
|
|
{ "name": "asks", "events": ["verdict", "tag-wanted"], "retention": "history" }
|
|
],
|
|
"state": [
|
|
{ "name": "asks", "history": 1 },
|
|
{ "name": "hearing", "history": 1 },
|
|
{ "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 }
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.steps",
|
|
"mesh-build-go.toolchains",
|
|
"mesh-build-node.steps",
|
|
"mesh-build-node.toolchains",
|
|
"mesh-delivery-builder.builds",
|
|
"mesh-delivery-gate.source",
|
|
"mesh-delivery-gate.turns",
|
|
"mesh-delivery-watchman.presence",
|
|
"node-engine.have"
|
|
],
|
|
"uses": [
|
|
"node-build-go",
|
|
"node-build-node"
|
|
],
|
|
"tools": [
|
|
"checker_ask_again",
|
|
"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": [
|
|
"gitea.gitea_commit_trees",
|
|
"gitea.gitea_commits",
|
|
"gitea.gitea_compare",
|
|
"gitea.gitea_get_file",
|
|
"gitea.gitea_list_branches",
|
|
"mesh-delivery-assigner.assigner_read_assignments",
|
|
"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:mesh-catalog.seat-definitions",
|
|
"seat:mesh-config.renames",
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"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"
|
|
},
|
|
{
|
|
"name": "checkermsg",
|
|
"kind": "package",
|
|
"language": "go",
|
|
"paths": [
|
|
"checkermsg"
|
|
],
|
|
"series": "0.1"
|
|
}
|
|
]
|
|
}
|
|
}
|