Each machine placing the module on the step's branch is asked compose-candidate for its input; one composer.Request per machine (depth compose, the one machine, one case change) carries it with the manifests, verdicts and seat definitions of the step's catalog revision read through mesh-catalog's revision; the request is kept under its run ask (refused at the inputs state's 64 MiB cap, naming the store); one run ask per machine on node-build-go's check queue under the assigner's name, naming no head, its program the node-engine build's catalog entry (the build each machine runs as its running says, read through entry, or the revision's where it differs from the trunk's) with the composer's package. The run's end is heard on the build seat's step-ended and its verdict read through buildstep.StepEnded.ReadOutput; a machine the watchman said away passes with a warning. The step is served from main. Builds: design 47 G §354, §22, §63, §64, §389, A-226, A-238, A-240, A-243, A-252, A-254, A-261 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
252 lines
7.1 KiB
JSON
252 lines
7.1 KiB
JSON
{
|
|
"module": "mesh-delivery-assigner",
|
|
"version": "0.1",
|
|
"slug": "assigner",
|
|
"runs-as": "mesh-delivery-assigner",
|
|
"claims": [
|
|
{
|
|
"name": "mesh-module-assigner",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"assignments",
|
|
"proposals",
|
|
"propose",
|
|
"withdraw",
|
|
"again",
|
|
"placement"
|
|
]
|
|
},
|
|
{
|
|
"name": "mesh-wants",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"upgrade",
|
|
"bus",
|
|
"revision",
|
|
"entry",
|
|
"difference",
|
|
"input"
|
|
]
|
|
}
|
|
],
|
|
"reads": [
|
|
"mesh-delivery-builder.builds",
|
|
"mesh-delivery-gate.merges",
|
|
"mesh-delivery-gate.source",
|
|
"mesh-delivery-teller.answers",
|
|
"mesh-delivery-watchman.presence",
|
|
"mesh-grants.grants",
|
|
"mesh-host.composed",
|
|
"mesh-provisioner.provisions",
|
|
"node-engine.have"
|
|
],
|
|
"uses": [
|
|
"operator-channel"
|
|
],
|
|
"consumes": [
|
|
"mesh-conditions.findings-asked",
|
|
"mesh-conditions.condition-raised",
|
|
"mesh-conditions.condition-changed",
|
|
"mesh-conditions.condition-cleared",
|
|
"mesh-catalog.catalog-revision",
|
|
"mesh-catalog.registration-changed",
|
|
"mesh-catalog.version-released",
|
|
"mesh-catalog.seat-definition-changed",
|
|
"mesh-catalog.seat-definition-removed",
|
|
"mesh-delivery-builder.build.ended",
|
|
"mesh-delivery-teller.ask-ended",
|
|
"mesh-pipeline-runner.pipeline-ended",
|
|
"mesh-pipeline-runner.group-ended",
|
|
"node-build-go.step-ended",
|
|
"node-engine.manifest-reads-changed",
|
|
"node-engine.running",
|
|
"mesh-delivery.pinned",
|
|
"mesh-delivery.freed",
|
|
"mesh-delivery.heads-replaced",
|
|
"mesh-delivery.pins-stated",
|
|
"mesh-watchdogs.machine-away",
|
|
"mesh-watchdogs.machine-back"
|
|
],
|
|
"invokes": [
|
|
"mesh-delivery-indexer.manifests",
|
|
"mesh-delivery-indexer.modules",
|
|
"seat:mesh-catalog.entry",
|
|
"seat:mesh-catalog.registrations",
|
|
{"verb": "seat:mesh-catalog.revision", "fields": ["none-yet"]},
|
|
"seat:mesh-catalog.seat-definitions",
|
|
"seat:mesh-conditions.conditions",
|
|
"seat:mesh-hand-acts.hand-act",
|
|
"seat:mesh-hand-acts.hand-acts",
|
|
"seat:mesh-hand-acts.warranted",
|
|
"seat:node-backup.backed-up",
|
|
"seat:node-backup.now",
|
|
"seat:node-build-go.output",
|
|
"seat:node-engine.compose-candidate",
|
|
"seat:node-engine.manifest-reads",
|
|
"seat:operator-channel.asks"
|
|
],
|
|
"streams": [
|
|
{
|
|
"name": "mesh-delivery-assigner-findings",
|
|
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
|
"max-age-days": 7,
|
|
"max-mib": 16
|
|
}
|
|
],
|
|
"emits": [
|
|
"assignments-copied",
|
|
"put",
|
|
"views.asks",
|
|
"views.copies",
|
|
"views.differences",
|
|
"views.findings",
|
|
"views.assignments",
|
|
"views.seat-holders",
|
|
"views.wants"
|
|
],
|
|
"tools": [
|
|
"assigner_put",
|
|
"assigner_release",
|
|
"assigner_puts",
|
|
"assigner_waits",
|
|
"assigner_inputs",
|
|
"assignments",
|
|
"seat-holders",
|
|
"wants",
|
|
"assigner_read_assignments",
|
|
"assigner_read_seat_holders",
|
|
"assigner_read_wants",
|
|
"assigner_read_findings",
|
|
"assigner_read_asks",
|
|
"assigner_read_differences",
|
|
"assigner_read_copies",
|
|
"assigner_first_views",
|
|
"assigner_first_view_again",
|
|
"assigner_engine_reads",
|
|
"assigner_seat_list",
|
|
"assigner_seat_list_again",
|
|
"assigner_ask_again",
|
|
"assigner_written",
|
|
"assigner_pins",
|
|
"assigner_unpin"
|
|
],
|
|
"state": [
|
|
{ "name": "assignments", "history": 64 },
|
|
{ "name": "placement", "history": 64 },
|
|
{ "name": "copies", "history": 1 },
|
|
{ "name": "proposals", "history": 5 },
|
|
{ "name": "candidates", "history": 5 },
|
|
{ "name": "pulses", "key-ttl": true },
|
|
{ "name": "asks", "history": 5 },
|
|
{ "name": "differences", "history": 64 },
|
|
{ "name": "puts", "history": 20 },
|
|
{ "name": "wants", "history": 20 },
|
|
{ "name": "findings", "history": 5 },
|
|
{ "name": "policies", "history": 20 },
|
|
{ "name": "seat-holders", "history": 5 },
|
|
{ "name": "view-marks", "history": 1 },
|
|
{ "name": "first-views", "history": 1 },
|
|
{ "name": "engine-reads", "history": 1 },
|
|
{ "name": "written", "history": 5 },
|
|
{ "name": "waits", "history": 5 },
|
|
{ "name": "inputs", "history": 1, "max-mib": 64 },
|
|
{ "name": "pins", "history": 5, "max-mib": 4 }
|
|
],
|
|
"config": {
|
|
"outside-wait-minutes": {
|
|
"type": "number",
|
|
"description": "minutes a moved module's failing check waits on an outside cause before the operator is asked to go on or count it as failed (design 47 G section 706); a bound a whole test sets in seconds.",
|
|
"minimum": 1,
|
|
"maximum": 10080,
|
|
"trusted": false,
|
|
"default": 30
|
|
},
|
|
"outside-settle-seconds": {
|
|
"type": "number",
|
|
"description": "seconds the assigner holds its judgement of a failing check when no outside cause is open yet, since the node-engine states the failing check and the network in one report while the condition rises only after the watchman's two looks and the keeper's take-in (design 47 G section 706).",
|
|
"minimum": 1,
|
|
"maximum": 3600,
|
|
"trusted": false,
|
|
"default": 90
|
|
}
|
|
},
|
|
"objects": [
|
|
{ "name": "assignment-revisions", "max-mib": 512, "form": 1 }
|
|
],
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "mesh-delivery-assigner",
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "mesh-delivery-assigner",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/mesh-delivery-assigner"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "mesh-delivery-assigner",
|
|
"place": ".",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "outside-wait",
|
|
"type": "file",
|
|
"path": "${dir:state}/outside-wait-minutes",
|
|
"owner": "mesh-delivery-assigner",
|
|
"mode": "0600",
|
|
"content": "${config:outside-wait-minutes}"
|
|
},
|
|
{
|
|
"id": "outside-settle",
|
|
"type": "file",
|
|
"path": "${dir:state}/outside-settle-seconds",
|
|
"owner": "mesh-delivery-assigner",
|
|
"mode": "0600",
|
|
"content": "${config:outside-settle-seconds}"
|
|
},
|
|
{
|
|
"id": "assigner",
|
|
"type": "process",
|
|
"name": "mesh-delivery-assigner",
|
|
"artifact": "program",
|
|
"run": [
|
|
"./mesh-delivery-assigner"
|
|
],
|
|
"env": {
|
|
"MESH_BROKER_FILE": "${dir:state}/broker",
|
|
"MESH_ASSIGNER_OUTSIDE_WAIT_FILE": "${dir:state}/outside-wait-minutes",
|
|
"MESH_ASSIGNER_OUTSIDE_SETTLE_FILE": "${dir:state}/outside-settle-seconds"
|
|
},
|
|
"user": "mesh-delivery-assigner",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "program",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/mesh-delivery-assigner",
|
|
"binary": "mesh-delivery-assigner",
|
|
"loads": [
|
|
"mesh-delivery-assigner"
|
|
],
|
|
"env": {
|
|
"MESH_VIEW_CALLERS_ASSIGNMENTS": "mesh-grants,node-tools,mesh-delivery-indexer,mesh-delivery-builder,mesh-delivery-checker",
|
|
"MESH_VIEW_CALLERS_SEAT_HOLDERS": "node-tools",
|
|
"MESH_VIEW_CALLERS_WANTS": "mesh-grants"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|