The builder, its tools bundle, the assigner (process and bundle) and the view's tools bundle answered their seat list's again tool to the modules node-tools and mesh-healers. Their lists are now the operator, seat:node-tool-runner and seat:mesh-healers, resolved by a holder function: - meshcatalogclient's Branches.Claimant (moved from the builder's versions.HolderOf, which now asks it) names the claimant of mesh-module-assigner from the trunk's half, and Branches.SeatHolders follows that claimant's seat-holders view through the part's wiring. It drops the view and follows the new claimant's on a catalog change, asks nothing on a timer, and answers seatlist.HoldersIn. - the assigner answers HoldersIn from its own seat-holders picture (its world in the process, the watched copy in the bundle). The builder's and the view's manifests consume seat:mesh-module-assigner.views.seat-holders. The assigner's seat-holders first-view tool answers both, by module as A-131 has it. Builds: design 47 G A-298, A-295, A-296, A-210, A-131, §717, §616, §614 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
255 lines
7.7 KiB
JSON
255 lines
7.7 KiB
JSON
{
|
|
"module": "mesh-delivery-builder",
|
|
"version": "0.1",
|
|
"slug": "builder",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-builds",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"reserved"
|
|
]
|
|
}
|
|
],
|
|
"tools": [
|
|
"builder_announce_again",
|
|
"builder_seat_list",
|
|
"builder_seat_list_again",
|
|
"builder_ask_again",
|
|
"builder_bounds",
|
|
"builder_build",
|
|
"builder_build_again",
|
|
"builder_builds_since",
|
|
"builder_engine_reads",
|
|
"builder_floor_again",
|
|
"builder_floor_waits",
|
|
"builder_old_form",
|
|
"builder_publish_again",
|
|
"builder_publish_queue",
|
|
"builder_reserved",
|
|
"builder_release",
|
|
"builder_reserved_drop",
|
|
"builder_seat_queue",
|
|
"builder_stuck",
|
|
"builder_toolchains",
|
|
"builder_toolchains_drop",
|
|
"builder_waits",
|
|
"builder_versions",
|
|
"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.seat-definition-changed",
|
|
"mesh-catalog.seat-definition-removed",
|
|
"mesh-catalog.version-released",
|
|
"mesh-catalog.versions-filled",
|
|
"mesh-conditions.condition-cleared",
|
|
"node-build-go.toolchain-reported",
|
|
"node-build-node.toolchain-reported",
|
|
"node-engine.manifest-reads-changed",
|
|
"node-engine.running",
|
|
"operator-channel.decided",
|
|
"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",
|
|
"seat:mesh-module-assigner.views.assignments",
|
|
"seat:mesh-module-assigner.views.seat-holders",
|
|
"mesh-catalog.catalog-revision",
|
|
"mesh-catalog.registration-changed",
|
|
"mesh-delivery.source-moved"
|
|
],
|
|
"invokes": [
|
|
"seat:container-image-registry.remove",
|
|
"seat:container-image-registry.versions",
|
|
"seat:git.tag",
|
|
"seat:git.tags",
|
|
"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-module-assigner.assignments",
|
|
"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",
|
|
"seat:container-image-registry.publish",
|
|
"seat:go-package-registry.publish",
|
|
"seat:npm-package-registry.publish",
|
|
"seat:oci-artifact-registry.publish",
|
|
"seat:mesh-catalog.entry",
|
|
"seat:mesh-catalog.registrations",
|
|
"seat:mesh-catalog.seat-definitions",
|
|
"seat:mesh-catalog.revision",
|
|
"seat:mesh-delivery.source",
|
|
"seat:node-build-go.accept.delivery",
|
|
"seat:node-build-node.accept.delivery",
|
|
"seat:node-build-image.accept.delivery"
|
|
],
|
|
"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": "publish-queue", "history": 1, "max-mib": 4 },
|
|
{ "name": "acted", "history": 1, "max-mib": 1 },
|
|
{ "name": "asked", "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-builds", "events": ["build.ended.**"], "max-age-days": 7, "max-mib": 16, "last-per-subject": true },
|
|
{ "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
|
|
},
|
|
"republish-max-versions": {
|
|
"type": "number",
|
|
"description": "the most versions one event of a registry holder queues to publish again, newest first (design 47 G section 588); the rest wait for the next event or builder_publish_again.",
|
|
"minimum": 1,
|
|
"maximum": 10000,
|
|
"trusted": false,
|
|
"default": 50
|
|
}
|
|
},
|
|
"logs": [
|
|
{ "name": "build-log", "max-age-days": 30, "max-mib": 3072 }
|
|
],
|
|
"reads": [
|
|
"seat:mesh-module-assigner.assignments",
|
|
"seat:node-build-go.steps",
|
|
"seat:node-build-image.steps",
|
|
"seat:node-build-node.steps"
|
|
],
|
|
"uses": [
|
|
"node-build-go",
|
|
"node-build-image",
|
|
"node-build-node",
|
|
"operator-channel"
|
|
],
|
|
"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": "toolchain-wait",
|
|
"type": "file",
|
|
"path": "${dir:state}/toolchain-wait-minutes",
|
|
"owner": "mesh-delivery-builder",
|
|
"mode": "0600",
|
|
"content": "${config:toolchain-wait-minutes}"
|
|
},
|
|
{
|
|
"id": "republish-max",
|
|
"type": "file",
|
|
"path": "${dir:state}/republish-max-versions",
|
|
"owner": "mesh-delivery-builder",
|
|
"mode": "0600",
|
|
"content": "${config:republish-max-versions}"
|
|
},
|
|
{
|
|
"id": "builder",
|
|
"type": "process",
|
|
"name": "mesh-delivery-builder",
|
|
"artifact": "program",
|
|
"serves": [
|
|
"seat:mesh-builds.reserved"
|
|
],
|
|
"run": [
|
|
"./mesh-delivery-builder"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker",
|
|
"MESH_BUILDER_TOOLCHAIN_WAIT_FILE": "${dir:state}/toolchain-wait-minutes",
|
|
"MESH_BUILDER_REPUBLISH_MAX_FILE": "${dir:state}/republish-max-versions"
|
|
},
|
|
"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"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|