Seat list reader: calls the seat mesh-catalog's seat-definitions and hears its changed and removed events, acts on nothing new until read, two runtime tools; bootstrap gains mesh-conditions, operator-channel and the contracts' current files (ADR 0636 §1-§4, §7; issue 1966)

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-05 13:42:20 +01:00
parent 1aca4991d4
commit b611bb9ad5
10 changed files with 2383 additions and 170 deletions
+361
View File
@@ -709,6 +709,367 @@
"name": "node-engine.events",
"max-age-days": 7
},
"states": [
{
"name": "have",
"template": "state",
"key-forms": [
{
"key": "<node>.<module>",
"value": {
"type": "object",
"description": "one module's state on a node: what the engine has built, composed and run",
"properties": {
"v": {
"type": "integer"
},
"fp": {
"type": "string",
"description": "the fingerprint held"
},
"composed": {
"type": "string",
"description": "the composition's digest"
},
"build": {
"type": "string"
},
"phase": {
"type": "string",
"description": "how far it has come"
},
"health": {
"type": "string",
"description": "how it is"
},
"detail": {
"type": "string"
},
"user-list": {
"type": "object",
"description": "the user list written"
},
"judgement": {
"type": "string"
},
"waits": {
"type": "string",
"description": "what it waits for"
},
"build-alone": {
"type": "boolean"
},
"kept": {
"type": "array",
"items": {
"type": "string"
}
},
"sealed": {
"type": "array",
"items": {
"type": "string"
}
},
"sealed-at": {
"type": "object"
},
"pull-wait": {
"type": "object",
"description": "a pull the engine waits for"
},
"handed": {
"type": "object",
"description": "the accounts handed"
}
},
"required": [
"v",
"phase",
"health"
]
},
"description": "one module on a node"
},
{
"key": "<node>.node",
"value": {
"type": "object",
"description": "a node's own record",
"properties": {
"v": {
"type": "integer"
},
"composed": {
"type": "string"
},
"windows": {
"type": "object"
},
"busy": {
"type": "object"
},
"strays": {
"type": "object"
},
"filters": {
"type": "object"
},
"profile": {
"type": "object"
},
"record": {
"type": "object",
"description": "the node's record: its tunnel and certificate"
},
"sealed": {
"type": "array",
"items": {
"type": "string"
}
},
"sealed-at": {
"type": "object"
},
"candidates": {
"type": "object",
"additionalProperties": {
"type": "object"
}
},
"composes": {
"type": "string",
"description": "own, or the controller's"
},
"composes-why": {
"type": "string"
}
},
"required": [
"v"
]
},
"description": "the node's own record"
}
],
"history": 20,
"description": "what each node has of each module, written by its engine"
},
{
"name": "composed",
"template": "state",
"key-forms": [
{
"key": "<node>.<module>.<fingerprint>",
"value": {
"type": "object",
"description": "one composition of a module on a node under a fingerprint",
"properties": {
"V": {
"type": "integer"
},
"Node": {
"type": "string"
},
"Module": {
"type": "string"
},
"FP": {
"type": "string"
},
"Data": {
"type": "boolean"
},
"Resources": {
"type": "array",
"items": {
"type": "object"
}
},
"Filled": {
"type": "array",
"items": {
"type": "string"
}
},
"Own": {
"type": "object",
"description": "the node's own adoption, identities, groups, libraries and provisioner account"
},
"Plan": {
"type": "object",
"description": "the module's plan"
},
"Refused": {
"type": "string",
"description": "why the composition was refused"
}
},
"required": [
"Node",
"Module",
"FP"
]
},
"description": "one composition"
}
],
"description": "the compositions of one node, kept in a bucket per node named composed-<node>"
},
{
"name": "data",
"template": "state",
"key-forms": [
{
"key": "<node>.<module>",
"value": {
"type": "object",
"description": "the data items a module has on a node",
"properties": {
"v": {
"type": "integer"
},
"node": {
"type": "string"
},
"module": {
"type": "string"
},
"digest": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [
"node",
"module",
"digest",
"items"
]
},
"description": "a module's data on a node"
}
],
"description": "the data items of each module on each node"
},
{
"name": "packages",
"template": "state",
"key-forms": [
{
"key": "<node>",
"value": {
"type": "object",
"description": "the packages a node declares",
"properties": {
"node": {
"type": "string"
},
"packages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"package": {
"type": "string"
},
"modules": {
"type": "array",
"items": {
"type": "string"
}
},
"absent": {
"type": "boolean"
}
}
}
}
},
"required": [
"node",
"packages"
]
},
"description": "a node's declared packages"
}
],
"description": "the packages each node declares"
},
{
"name": "health",
"template": "state",
"key-forms": [
{
"key": "<node>",
"value": {
"type": "object",
"description": "a node's health as its engine reports it",
"properties": {
"v": {
"type": "integer"
},
"node": {
"type": "string"
},
"network": {
"type": "object"
},
"peers": {
"type": "array",
"items": {
"type": "object"
}
},
"units": {
"type": "object"
},
"relogin": {
"type": "array",
"items": {
"type": "object"
}
},
"found": {
"type": "array",
"items": {
"type": "object"
}
},
"fallback": {
"type": "object"
},
"root": {
"type": "array",
"items": {
"type": "object"
}
},
"contract": {
"type": "integer"
},
"at": {
"type": "string",
"format": "date-time"
}
},
"required": [
"v",
"node",
"at"
]
},
"description": "a node's health"
}
],
"description": "each node's health as its engine reports it"
}
],
"defs": {
"Act": {
"type": "object",