The builder adopts meshcatalogclient's branch follower on its views reader (A-5, A-15): the modules, their manifests (kept from the entry that holds them, by its digest), their packages and each package's name in its ecosystem are read from the catalog half's entries, never the indexer's modules, manifests, candidates and packages views; an entry of a branch other than the module's first builds its fingerprint and supersedes only its own branch's older one; the start's sweep runs once every followed half's first view is in; the builder's tools bundle reads package names through the same follower. A run's candidate is no input of the builder (A-84): its read of the indexer's candidates view goes, and the entry point for a run's build ask is not built (no line gives the ask's form). The seats' events the builder's own handler takes are named per seat so the follower's events have one taker. Builds: design 47 G §348, §479, §614, A-5, A-15, A-84 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
210 lines
6.0 KiB
JSON
210 lines
6.0 KiB
JSON
{
|
|
"module": "mesh-delivery-builder",
|
|
"version": "1",
|
|
"slug": "builder",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-builds",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"reserved"
|
|
]
|
|
}
|
|
],
|
|
"tools": [
|
|
"builder_announce_again",
|
|
"builder_ask_again",
|
|
"builder_bounds",
|
|
"builder_build_again",
|
|
"builder_builds_since",
|
|
"builder_engine_reads",
|
|
"builder_floor_again",
|
|
"builder_floor_waits",
|
|
"builder_old_form",
|
|
"builder_publish_again",
|
|
"builder_reserved",
|
|
"builder_release",
|
|
"builder_reserved_drop",
|
|
"builder_seat_queue",
|
|
"builder_stuck",
|
|
"builder_toolchains",
|
|
"builder_toolchains_drop",
|
|
"builder_waits",
|
|
"builder_versions",
|
|
"reserved",
|
|
"builder_first_views",
|
|
"builder_first_view_again"
|
|
],
|
|
"emits": [
|
|
"build.asked-again",
|
|
"version.old-form-closed"
|
|
],
|
|
"consumes": [
|
|
"mesh-conditions.findings-asked",
|
|
"container-image-registry.kept",
|
|
"container-image-registry.published",
|
|
"container-image-registry.refused",
|
|
"container-image-registry.removed",
|
|
"go-package-registry.kept",
|
|
"go-package-registry.published",
|
|
"go-package-registry.refused",
|
|
"go-package-registry.removed",
|
|
"mesh-artifact-sweep.artifacts-gone",
|
|
"mesh-catalog.manifest-accepted",
|
|
"mesh-catalog.version-released",
|
|
"mesh-catalog.versions-filled",
|
|
"mesh-conditions.condition-cleared",
|
|
"mesh-delivery-forge-bridge.forge.**",
|
|
"node-build-go.toolchain-reported",
|
|
"node-build-node.toolchain-reported",
|
|
"node-engine.manifest-reads-changed",
|
|
"node-engine.running",
|
|
"npm-package-registry.kept",
|
|
"npm-package-registry.published",
|
|
"npm-package-registry.refused",
|
|
"npm-package-registry.removed",
|
|
"oci-artifact-registry.kept",
|
|
"oci-artifact-registry.published",
|
|
"oci-artifact-registry.refused",
|
|
"oci-artifact-registry.removed",
|
|
"mesh-delivery-assigner.views.assignments",
|
|
"mesh-catalog.catalog-revision",
|
|
"mesh-catalog.registration-changed",
|
|
"mesh-delivery.source-moved"
|
|
],
|
|
"invokes": [
|
|
"mesh-delivery-forge-bridge.bridge_tags",
|
|
"mesh-delivery-indexer.indexer_requirements",
|
|
"seat:container-image-registry.remove",
|
|
"seat:container-image-registry.versions",
|
|
"seat:git.tag",
|
|
"seat:go-package-registry.remove",
|
|
"seat:go-package-registry.versions",
|
|
"seat:mesh-artifact-sweep.held",
|
|
"seat:mesh-builds.reserved",
|
|
"seat:mesh-catalog.versions",
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"seat:mesh-watchdogs.presence",
|
|
"seat:node-build-go.drop",
|
|
"seat:node-build-image.drop",
|
|
"seat:node-build-node.drop",
|
|
"seat:node-engine.manifest-reads",
|
|
"seat:npm-package-registry.remove",
|
|
"seat:npm-package-registry.versions",
|
|
"seat:oci-artifact-registry.remove",
|
|
"seat:oci-artifact-registry.versions",
|
|
"mesh-delivery-assigner.assigner_read_assignments",
|
|
"seat:mesh-catalog.entry",
|
|
"seat:mesh-catalog.registrations",
|
|
"seat:mesh-catalog.revision",
|
|
"seat:mesh-delivery.source"
|
|
],
|
|
"state": [
|
|
{ "name": "builds", "history": 5 },
|
|
{ "name": "engine-reads", "history": 1 },
|
|
{ "name": "findings", "history": 5 },
|
|
{ "name": "floor-waits", "history": 1 },
|
|
{ "name": "hearing", "history": 1 },
|
|
{ "name": "instances", "history": 1 },
|
|
{ "name": "old-form", "history": 1 },
|
|
{ "name": "bounds", "history": 1, "key-ttl": true },
|
|
{ "name": "queues", "history": 1 },
|
|
{ "name": "toolchains-heard", "history": 1 },
|
|
{ "name": "waits", "history": 1, "max-mib": 4 },
|
|
{ "name": "reserved", "history": 1 },
|
|
{ "name": "reasks", "history": 1 },
|
|
{ "name": "versions", "history": 1 },
|
|
{ "name": "first-views", "history": 1 }
|
|
],
|
|
"streams": [
|
|
{ "name": "waits", "events": ["wait-held.**", "wait-ended.**"], "max-age-days": 7, "max-mib": 16 },
|
|
{ "name": "mesh-delivery-builder-findings", "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], "max-age-days": 7, "max-mib": 16 }
|
|
],
|
|
"config": {
|
|
"toolchain-wait-minutes": {
|
|
"type": "number",
|
|
"description": "minutes an entry waits for the agreed toolchain of its language to name the version its fingerprint names (design 47 G section 672); a bound a whole test sets in seconds.",
|
|
"minimum": 1,
|
|
"maximum": 10080,
|
|
"trusted": false,
|
|
"default": 60
|
|
}
|
|
},
|
|
"logs": [
|
|
{ "name": "build-log", "max-age-days": 30, "max-mib": 3072 }
|
|
],
|
|
"reads": [
|
|
"mesh-build-go.steps",
|
|
"mesh-build-image.steps",
|
|
"mesh-build-node.steps",
|
|
"mesh-delivery-assigner.assignments",
|
|
"mesh-delivery-gate.source"
|
|
],
|
|
"uses": [
|
|
"node-build-go",
|
|
"node-build-image",
|
|
"node-build-node"
|
|
],
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "mesh-delivery-builder",
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "mesh-delivery-builder",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/mesh-delivery-builder"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "mesh-delivery-builder",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "builder",
|
|
"type": "process",
|
|
"name": "mesh-delivery-builder",
|
|
"artifact": "program",
|
|
"run": [
|
|
"./mesh-delivery-builder"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker",
|
|
"MESH_BUILDER_TOOLCHAIN_WAIT_MINUTES": "${config:toolchain-wait-minutes}"
|
|
},
|
|
"user": "mesh-delivery-builder",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "program",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-builder",
|
|
"binary": "mesh-delivery-builder"
|
|
},
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-builder-tools",
|
|
"binary": "mesh-delivery-builder-tools",
|
|
"loads": [
|
|
"mesh-delivery-builder-tools"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|