The seat mesh-wants' definition gains the state asks (template state, history 5, view), its key forms the seven kinds' keys as the assigner's asks package writes them (hold, restore, backup, record, outside, revert, assignments) and its value the ask as the assigner composes it; its wants gains view. The assigner's first-view tool asks replaces assigner_read_asks, its callers the teller and the status view; the status view joins the callers of wants and assignments. The teller follows the asks by seat:mesh-wants.views.asks and invokes nothing of the assigner's. The status view's part waits on a question (its tools ask assigner_read_wants). Builds: design 47 G §717, A-299 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
259 lines
7.5 KiB
JSON
259 lines
7.5 KiB
JSON
{
|
|
"module": "mesh-delivery-assigner",
|
|
"version": "0.3",
|
|
"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-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-delivery.source-moved",
|
|
"mesh-catalog.version-released",
|
|
"mesh-wants.version-delivered",
|
|
"mesh-watchdogs.machine-away",
|
|
"mesh-watchdogs.machine-back",
|
|
"mesh-catalog.seat-definition-changed",
|
|
"mesh-catalog.seat-definition-removed",
|
|
"mesh-delivery-builder.build.ended.**",
|
|
"mesh-delivery-indexer.take-in.taken",
|
|
"mesh-delivery-teller.ask-ended",
|
|
"mesh-delivery-teller.views.answers",
|
|
"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"
|
|
],
|
|
"invokes": [
|
|
"mesh-delivery-indexer.manifests",
|
|
"mesh-delivery-indexer.modules",
|
|
"mesh-delivery-teller.teller_read_answers",
|
|
"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-delivery.source",
|
|
"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",
|
|
"seat:node-build-go.accept.check"
|
|
],
|
|
"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",
|
|
"asks",
|
|
"assigner_read_assignments",
|
|
"assigner_read_seat_holders",
|
|
"assigner_read_wants",
|
|
"assigner_read_findings",
|
|
"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",
|
|
"assigner_delivered_again"
|
|
],
|
|
"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": "put-waits", "history": 1 },
|
|
{ "name": "delivery-waits", "history": 1 },
|
|
{ "name": "delivered-again", "history": 1 },
|
|
{ "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_ASKS": "mesh-delivery-teller,mesh-delivery-view",
|
|
"MESH_VIEW_CALLERS_ASSIGNMENTS": "mesh-grants,node-tools,mesh-delivery-indexer,mesh-delivery-builder,mesh-delivery-checker,mesh-delivery-view",
|
|
"MESH_VIEW_CALLERS_SEAT_HOLDERS": "node-tools,mesh-delivery-builder,mesh-delivery-view",
|
|
"MESH_VIEW_CALLERS_WANTS": "mesh-grants,mesh-delivery-view"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|