Every node-engine reads the store holder's manifest to find the store, and an engine before form:seat-reach finds it only through the retired provision, so writing the new entry while one counted engine lacks the reading would leave that node without the store. The entry keeps its old manifest, fingerprint and inputs; the new one waits in the state holds and moves once every counted node-engine (ADR 0624 §1, read as the builder reads them) states it. indexer_holds reads, asks again or moves a hold by hand; indexer_engine_reads reads the engines' statements. Claude-Session: https://claude.ai/code/session_01JG73KG7AfSdh6FP8VrBqCn
176 lines
4.8 KiB
JSON
176 lines
4.8 KiB
JSON
{
|
|
"module": "mesh-delivery-indexer",
|
|
"version": "1",
|
|
"slug": "indexer",
|
|
"runs-as": "mesh-delivery-indexer",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-catalog",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"modules",
|
|
"module",
|
|
"provides",
|
|
"dependents"
|
|
]
|
|
}
|
|
],
|
|
"tools": [
|
|
"indexer_take_in",
|
|
"indexer_old_sections",
|
|
"indexer_verdicts",
|
|
"indexer_judge",
|
|
"manifests",
|
|
"modules",
|
|
"verdicts",
|
|
"graph",
|
|
"indexer_read_manifests",
|
|
"indexer_read_modules",
|
|
"indexer_read_predefined",
|
|
"indexer_read_config_candidates",
|
|
"indexer_read_candidates",
|
|
"indexer_read_packages",
|
|
"indexer_read_graph",
|
|
"indexer_read_heard",
|
|
"indexer_read_taken",
|
|
"indexer_read_findings",
|
|
"indexer_read_seat_definitions",
|
|
"indexer_first_views",
|
|
"indexer_first_view_again",
|
|
"indexer_config_readers",
|
|
"indexer_bus_state",
|
|
"indexer_requirements",
|
|
"indexer_package_users",
|
|
"indexer_say_accepted",
|
|
"indexer_seat_definition",
|
|
"indexer_seat_definitions_again",
|
|
"indexer_out_of_step",
|
|
"indexer_holds",
|
|
"indexer_engine_reads"
|
|
],
|
|
"consumes": [
|
|
"go-package-registry.published",
|
|
"mesh-build-go.toolchain.reported",
|
|
"mesh-build-node.toolchain.reported",
|
|
"mesh-delivery-assigner.views.placement",
|
|
"mesh-delivery-builder.version.numbered",
|
|
"mesh-delivery-checker.preview.written",
|
|
"mesh-delivery-checker.verdict",
|
|
"mesh-delivery-forge-bridge.forge.**",
|
|
"node-engine.manifest-reads-changed",
|
|
"npm-package-registry.published"
|
|
],
|
|
"state": [
|
|
{ "name": "candidates", "history": 10 },
|
|
{ "name": "heard", "history": 64 },
|
|
{ "name": "manifests", "history": 1 },
|
|
{ "name": "modules", "history": 20 },
|
|
{ "name": "predefined", "history": 5 },
|
|
{ "name": "config-candidates", "history": 5 },
|
|
{ "name": "taken", "history": 1 },
|
|
{ "name": "takeins", "history": 1 },
|
|
{ "name": "verdicts", "history": 5 },
|
|
{ "name": "oldsections", "history": 1 },
|
|
{ "name": "packages", "history": 5 },
|
|
{ "name": "graph", "history": 5 },
|
|
{ "name": "view-marks", "history": 1 },
|
|
{ "name": "findings", "history": 5 },
|
|
{ "name": "first-views", "history": 1 },
|
|
{ "name": "requirements", "history": 5 },
|
|
{ "name": "seat-definitions", "history": 5 },
|
|
{ "name": "holds", "history": 5 },
|
|
{ "name": "engine-reads", "history": 1 }
|
|
],
|
|
"streams": [
|
|
{ "name": "indexer-views", "events": ["views.**"], "max-age-days": 7, "max-mib": 256 },
|
|
{ "name": "indexer-seat-definitions", "events": ["seat-definition-changed"], "max-age-days": 7 }
|
|
],
|
|
"emits": [
|
|
"manifest-refused",
|
|
"manifest-accepted"
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.toolchains",
|
|
"mesh-build-node.toolchains",
|
|
"mesh-delivery-builder.build-log",
|
|
"mesh-delivery-checker.previews",
|
|
"mesh-delivery-gate.source"
|
|
],
|
|
"invokes": [
|
|
"mesh-delivery-assigner.placement",
|
|
"gitea.gitea_commit_trees",
|
|
"gitea.gitea_contains",
|
|
"gitea.gitea_get_file",
|
|
"gitea.gitea_open_pulls",
|
|
"seat:node-engine.composition",
|
|
"seat:node-engine.manifest-reads",
|
|
"seat:mesh-hand-acts.hand-act"
|
|
],
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "mesh-delivery-indexer",
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "mesh-delivery-indexer",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/mesh-delivery-indexer"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "mesh-delivery-indexer",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "indexer",
|
|
"type": "process",
|
|
"name": "mesh-delivery-indexer",
|
|
"artifact": "program",
|
|
"run": [
|
|
"./mesh-delivery-indexer"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker"
|
|
},
|
|
"user": "mesh-delivery-indexer",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "program",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-indexer",
|
|
"binary": "mesh-delivery-indexer"
|
|
},
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-indexer-tools",
|
|
"binary": "mesh-delivery-indexer-tools",
|
|
"loads": [
|
|
"mesh-delivery-indexer-tools"
|
|
],
|
|
"env": {
|
|
"MESH_VIEW_CALLERS_MANIFESTS": "mesh-grants,node-tools,mesh-delivery-assigner",
|
|
"MESH_VIEW_CALLERS_MODULES": "mesh-grants,node-tools,mesh-delivery-assigner",
|
|
"MESH_VIEW_CALLERS_VERDICTS": "mesh-grants",
|
|
"MESH_VIEW_CALLERS_GRAPH": "mesh-delivery-assigner"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|