The program puts the validation's run ask on node-build-go's check queue under its own asker and hears its end on step-ended; the manifest invokes seat:node-build-go.accept.check. The revision validated is the branch its merges landed on (the merged message's base, else the trunk), never the pull request's branch. take-in.pending may name a refusal or why the revision could not validate instead of the build it waits for. The whole case runs a stand-in build seat: an accepted revision is taken in as before, by one ask whose job names the indexer entry's repository, path and the revision's head and no heads; a merge whose changed manifest gains a problem stays pending, refused naming it. Builds: design 47 G §712, §713, §714, A-231, A-232, A-247, A-254 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
252 lines
7.0 KiB
JSON
252 lines
7.0 KiB
JSON
{
|
|
"module": "mesh-delivery-indexer",
|
|
"version": "0.1",
|
|
"slug": "indexer",
|
|
"runs-as": "mesh-delivery-indexer",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-catalog",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"modules",
|
|
"module",
|
|
"provides",
|
|
"dependents",
|
|
"seat-definitions",
|
|
"revision",
|
|
"entry",
|
|
"registrations",
|
|
"register",
|
|
"policy",
|
|
"watch",
|
|
"unwatch",
|
|
"versions",
|
|
"outdated",
|
|
"input"
|
|
]
|
|
}
|
|
],
|
|
"tools": [
|
|
"indexer_take_in",
|
|
"indexer_old_sections",
|
|
"indexer_verdicts",
|
|
"indexer_judge",
|
|
"manifests",
|
|
"verdicts",
|
|
"graph",
|
|
"indexer_read_manifests",
|
|
"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_read_unjudged",
|
|
"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_pending",
|
|
"indexer_take_in_pending",
|
|
"indexer_drop_pending",
|
|
"indexer_take_in_merge",
|
|
"indexer_fingerprints_again",
|
|
"indexer_catalog_revision",
|
|
"indexer_catalog_revisions",
|
|
"indexer_candidate_graphs",
|
|
"indexer_recompute",
|
|
"indexer_drop_candidate_graph",
|
|
"indexer_entries",
|
|
"indexer_named_drop",
|
|
"indexer_proposals",
|
|
"indexer_proposal_drop",
|
|
"indexer_seed_again",
|
|
"indexer_inputs",
|
|
"indexer_pins",
|
|
"indexer_unpin",
|
|
"indexer_consumer",
|
|
"indexer_runs",
|
|
"indexer_run_drop",
|
|
"indexer_validate_again"
|
|
],
|
|
"consumes": [
|
|
"go-package-registry.published",
|
|
"mesh-build-go.toolchain.reported",
|
|
"mesh-build-node.toolchain.reported",
|
|
"mesh-conditions.findings-asked",
|
|
"seat:mesh-module-assigner.views.assignments",
|
|
"mesh-builds.package-published",
|
|
"mesh-builds.toolchain-agreed",
|
|
"mesh-wants.version-delivered",
|
|
"node-build-go.step-ended",
|
|
"mesh-wants.wait-ended",
|
|
"mesh-delivery-checker.verdict",
|
|
"mesh-delivery-forge-bridge.forge.**",
|
|
"mesh-delivery.source-moved",
|
|
"mesh-delivery.pinned",
|
|
"mesh-delivery.freed",
|
|
"mesh-delivery.heads-replaced",
|
|
"mesh-delivery.pins-stated",
|
|
"mesh-wants.wanted",
|
|
"mesh-pipeline-runner.run-started",
|
|
"mesh-pipeline-runner.pipeline-ended",
|
|
"node-engine.running",
|
|
"operator-channel.decided",
|
|
"npm-package-registry.published"
|
|
],
|
|
"state": [
|
|
{ "name": "candidates", "history": 10 },
|
|
{ "name": "heard", "history": 64 },
|
|
{ "name": "manifests", "history": 1 },
|
|
{ "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": "runs", "history": 1 },
|
|
{ "name": "own-build", "history": 1 },
|
|
{ "name": "packages", "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": "pending", "history": 1 },
|
|
{ "name": "unjudged", "history": 1 },
|
|
{ "name": "entry-index", "history": 1, "max-mib": 8 },
|
|
{ "name": "named", "history": 1, "max-mib": 4 },
|
|
{ "name": "registrations", "history": 1 },
|
|
{ "name": "proposals", "history": 1, "max-mib": 4 },
|
|
{ "name": "versions", "history": 1, "max-mib": 64 },
|
|
{ "name": "build-edges", "history": 1 },
|
|
{ "name": "inputs", "history": 1 },
|
|
{ "name": "pins", "history": 1, "max-mib": 4 },
|
|
{ "name": "consumers", "history": 1 }
|
|
],
|
|
"streams": [
|
|
{ "name": "registration-history", "events": ["registration.*"], "retention": "history", "max-mib": 64 },
|
|
{ "name": "mesh-delivery-indexer-findings", "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], "max-age-days": 7, "max-mib": 16 }
|
|
],
|
|
"objects": [
|
|
{ "name": "catalog-revisions", "max-mib": 512, "form": 1, "catch-up": "indexer_take_in" }
|
|
],
|
|
"emits": [
|
|
"take-in.pending",
|
|
"take-in.taken",
|
|
"views.candidates",
|
|
"views.config-candidates",
|
|
"views.findings",
|
|
"views.graph",
|
|
"views.heard",
|
|
"views.manifests",
|
|
"views.packages",
|
|
"views.predefined",
|
|
"views.seat-definitions",
|
|
"views.taken",
|
|
"views.verdicts"
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.toolchains",
|
|
"mesh-build-node.toolchains",
|
|
"mesh-delivery-builder.build-log",
|
|
"mesh-delivery-checker.previews"
|
|
],
|
|
"invokes": [
|
|
"seat:git.trees",
|
|
"seat:git.file",
|
|
"seat:git.contains",
|
|
"seat:git.open-pulls",
|
|
"seat:git.branch",
|
|
"mesh-delivery-forge-bridge.bridge_merged_message",
|
|
"seat:node-engine.composition",
|
|
"seat:mesh-delivery.source",
|
|
"seat:mesh-module-assigner.assignments",
|
|
"seat:mesh-module-assigner.placement",
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"seat:mesh-watchdogs.presence",
|
|
"seat:node-build-go.steps",
|
|
"seat:node-build-go.accept.check",
|
|
"seat:node-build-node.steps",
|
|
"seat:node-build-image.steps",
|
|
"mesh-delivery-builder.builder_versions"
|
|
],
|
|
"uses": [
|
|
"operator-channel"
|
|
],
|
|
"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_VERDICTS": "mesh-grants",
|
|
"MESH_VIEW_CALLERS_GRAPH": "mesh-delivery-assigner"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|