Builds: design 47 G §558, §530 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
246 lines
6.9 KiB
JSON
246 lines
6.9 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-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",
|
|
"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-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 },
|
|
{ "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"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|