Revert the revert of G's mesh-sdk merge (#191): G's sdk stands again over reader release 3
Main reverted G's half merge (#189, reverted by8afc3ebin #191) and then took the reader release's S1-S5, which copied G's code. G's form holds where they differ (process_bus.go, seats.go, state.go and their tests); the release's kept names stay so main's callers keep building: SeatViewPrefix beside SeatReadPrefix, and QueueInvoke's empty strings on not-ok (with its test TestQueueInvoke). The tree differs from G's headf30dee54only by those and the release's two tests (objects cap option, seat states and stream kinds). Builds: design 47 G (the milestone's sdk part, as atf30dee54) Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
This commit is contained in:
Vendored
+2
-3
@@ -11,9 +11,8 @@ Only what go/catalogue's tests read is captured (R4b, issue 1379). Refreshed 202
|
||||
repositories; before that it was mesh-controller's copy, which still held two modules that had left the catalogue.
|
||||
|
||||
mesh-catalog b5dbfbb784507e211372a7c9640d91f7d6dadd84 modules/*/module.json, modules/*/files/**, modules/*/templates/**, predefined.json
|
||||
mesh-contracts 70fe186d7f5743e61f3ce2bbd97a8bfabc5b596e the seat files of the eight bootstrapped seats held there (seats/, health-and-repair/seats/, operator-and-conversation/seats/), as seat.json.captured
|
||||
mesh-contracts bb16f99e2d5e854bb8f6552ce4b256e7c10e8ea0 of those, health-and-repair/seats/mesh-watchdogs and operator-and-conversation/seats/operator-channel (issue 1966)
|
||||
mesh-delivery 932e7ccf025513ec4fce38a534c2c38defbc6701 contracts/seats/mesh-catalog and mesh-delivery-checker, as seat.json.captured (go/seatlist's bootstrap test)
|
||||
mesh-contracts cf5590c7599d3ee3b61c3aa66c88a939ecb41130 the seat files of the eight bootstrapped seats held there (seats/, health-and-repair/seats/, operator-and-conversation/seats/), as seat.json.captured (milestone 47/G)
|
||||
mesh-delivery 5bf848144283055a1ef37441eeda0e439fb6ad7e contracts/seats/mesh-catalog and mesh-delivery-checker, as seat.json.captured (go/seatlist's bootstrap test; milestone 47/G)
|
||||
mesh-host cdcba9ca73755854d21e4e657d7e46c32b9b5265 internal/apply/placement_guard.go
|
||||
|
||||
The two seat copies are put back the same way (git show <commit>:<file> > <file>.captured, the path kept). To move the others, from this repository's go/ directory, with the two repositories checked out beside mesh-sdk:
|
||||
|
||||
Vendored
+315
-86
@@ -84,15 +84,22 @@
|
||||
},
|
||||
{
|
||||
"name": "resync",
|
||||
"description": "Read every observer's findings again and raise and clear what differs from the open conditions: the recovery of a keeper that missed a change.",
|
||||
"description": "Ask the observers to state their findings again, every one or the one named, and raise and clear what differs from the open conditions: the recovery of a keeper that missed a change. Each call is written in the hand-act log of the seat mesh-hand-acts (design 47 G 390).",
|
||||
"input": {
|
||||
"properties": {},
|
||||
"type": "object"
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "ask this observer alone; none asks all"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"description": "what was raised and cleared again"
|
||||
}
|
||||
},
|
||||
"class": "act"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
@@ -113,6 +120,40 @@
|
||||
"body": {
|
||||
"$ref": "#/defs/ConditionEvent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "findings-asked",
|
||||
"keep": {
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "the keeper asks every observer, or one, to state its findings (design 47 G 384, 390)",
|
||||
"properties": {
|
||||
"ask": {
|
||||
"type": "string",
|
||||
"description": "the ask's id"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"by": {
|
||||
"type": "string",
|
||||
"description": "who asked: the keeper, or the person or session that called resync"
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "to ask one observer; none asks all"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ask",
|
||||
"at",
|
||||
"by"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"family": {
|
||||
@@ -184,6 +225,16 @@
|
||||
"type": "string",
|
||||
"description": "self, operator, agent or healer:<name>"
|
||||
},
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "who the condition is about, taken from the finding or handed to operator-channel by the keeper: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"waiting-on": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "what it waits on, from the finding: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"raised": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
@@ -285,102 +336,74 @@
|
||||
"writer": "caller",
|
||||
"key-forms": [
|
||||
{
|
||||
"key": "<key>",
|
||||
"key": "<scope>.<id>.<kind>",
|
||||
"value": {
|
||||
"$ref": "#/bodies/Finding"
|
||||
},
|
||||
"description": "one finding of the observer that wrote it, its layout the body Finding (design 47 G 439, 461, 660)"
|
||||
}
|
||||
],
|
||||
"description": "every observer's findings, one key per finding, kept in the observer's own state and read only by its owner's read tool; the keeper hears each change as the observer's events finding-written, finding-cleared and findings-stated (design 47 G 383, 434)"
|
||||
},
|
||||
{
|
||||
"name": "findings-views",
|
||||
"template": "state",
|
||||
"description": "the keeper's sources: one key per observer and node, its last stated set with its at, its pending keys and the open asks; deleted when the module leaves the catalog or the node (design 47 G 388)",
|
||||
"key-forms": [
|
||||
{
|
||||
"key": "<observer>.<node>",
|
||||
"description": "one observer on one node",
|
||||
"value": {
|
||||
"type": "object",
|
||||
"description": "one thing an observer sees wrong now",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "layout version, 1"
|
||||
},
|
||||
"key": {
|
||||
"type": "string",
|
||||
"description": "scope.id.token"
|
||||
},
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"subject": {
|
||||
"$ref": "#/defs/Subject"
|
||||
},
|
||||
"severity": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"urgent",
|
||||
"warning"
|
||||
]
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "one line"
|
||||
},
|
||||
"headline": {
|
||||
"type": "string"
|
||||
},
|
||||
"explanation": {
|
||||
"type": "string"
|
||||
},
|
||||
"resolved": {
|
||||
"type": "string"
|
||||
},
|
||||
"needs": {
|
||||
"type": "string"
|
||||
},
|
||||
"actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/defs/Action"
|
||||
}
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"description": "newest first, at most 10",
|
||||
"items": {
|
||||
"$ref": "#/defs/Evidence"
|
||||
}
|
||||
},
|
||||
"source": {
|
||||
"type": "string",
|
||||
"description": "the row, probe or event that saw it"
|
||||
},
|
||||
"resolver": {
|
||||
"type": "string",
|
||||
"description": "self, operator, agent or healer:<name>"
|
||||
},
|
||||
"ref": {
|
||||
"type": "string",
|
||||
"description": "the key's last part when it is not the kind"
|
||||
"type": "integer"
|
||||
},
|
||||
"observer": {
|
||||
"type": "string",
|
||||
"description": "the module that wrote it"
|
||||
"type": "string"
|
||||
},
|
||||
"run": {
|
||||
"type": "string",
|
||||
"description": "what of its own saw it last"
|
||||
"node": {
|
||||
"type": "string"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
"stated": {
|
||||
"type": "object",
|
||||
"description": "the last findings-stated set",
|
||||
"properties": {
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/bodies/Finding"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pending": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "the keys it cannot judge yet"
|
||||
},
|
||||
"asks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "the open asks"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"key",
|
||||
"kind",
|
||||
"subject",
|
||||
"severity",
|
||||
"summary",
|
||||
"source",
|
||||
"observer",
|
||||
"at"
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"description": "one finding of the observer that wrote it"
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "every observer's findings, one key per finding; a key written raises or changes the condition of the same key, a key deleted clears it"
|
||||
]
|
||||
}
|
||||
],
|
||||
"defs": {
|
||||
@@ -521,6 +544,16 @@
|
||||
"type": "string",
|
||||
"description": "self, operator, agent or healer:<name>"
|
||||
},
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "who the condition is about, taken from the finding or handed to operator-channel by the keeper: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"waiting-on": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "what it waits on, from the finding: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"raised": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
@@ -618,7 +651,8 @@
|
||||
"silenced",
|
||||
"silence-ended",
|
||||
"cleared",
|
||||
"words"
|
||||
"words",
|
||||
"owner"
|
||||
]
|
||||
},
|
||||
"was": {
|
||||
@@ -643,5 +677,200 @@
|
||||
"change"
|
||||
]
|
||||
}
|
||||
},
|
||||
"bodies": {
|
||||
"Finding": {
|
||||
"type": "object",
|
||||
"description": "one finding as an observer says it: the layout whole, plus scope, id and since (design 47 G 437, 439)",
|
||||
"properties": {
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"scope": {
|
||||
"type": "string",
|
||||
"description": "the key's first part: <scope>.<id>.<kind> (ADR 0564)"
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "the key's second part"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "since when the finding stands"
|
||||
},
|
||||
"severity": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"urgent",
|
||||
"warning"
|
||||
]
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "one line"
|
||||
},
|
||||
"headline": {
|
||||
"type": "string"
|
||||
},
|
||||
"explanation": {
|
||||
"type": "string"
|
||||
},
|
||||
"subject": {
|
||||
"$ref": "#/defs/Subject"
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"description": "newest first, at most 10",
|
||||
"items": {
|
||||
"$ref": "#/defs/Evidence"
|
||||
}
|
||||
},
|
||||
"source": {
|
||||
"type": "string",
|
||||
"description": "the row, probe or event that saw it"
|
||||
},
|
||||
"observer": {
|
||||
"type": "string",
|
||||
"description": "the module that wrote it"
|
||||
},
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "who the finding is about, when not the observer: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"waiting-on": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*|[a-z][a-z0-9-]*|forge:[A-Za-z0-9._-]+)$",
|
||||
"description": "what it waits on: a session who@node (^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9-]*$), a seat's name (^[a-z][a-z0-9-]*$) or a commit's author forge:<account> (^forge:[A-Za-z0-9._-]+$); another is refused (design 47 G 678)"
|
||||
},
|
||||
"actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/defs/Action"
|
||||
}
|
||||
},
|
||||
"needs": {
|
||||
"type": "string"
|
||||
},
|
||||
"resolver": {
|
||||
"type": "string",
|
||||
"description": "self, operator, agent or healer:<name>"
|
||||
},
|
||||
"ref": {
|
||||
"type": "string",
|
||||
"description": "the key's last part when it is not the kind"
|
||||
},
|
||||
"run": {
|
||||
"type": "string",
|
||||
"description": "what of its own saw it last"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"kind",
|
||||
"scope",
|
||||
"id",
|
||||
"at",
|
||||
"since",
|
||||
"severity",
|
||||
"summary",
|
||||
"subject",
|
||||
"source",
|
||||
"observer"
|
||||
]
|
||||
},
|
||||
"FindingWritten": {
|
||||
"$ref": "#/bodies/Finding"
|
||||
},
|
||||
"FindingCleared": {
|
||||
"type": "object",
|
||||
"description": "an observer no longer observes a finding",
|
||||
"properties": {
|
||||
"kind": {
|
||||
"type": "string"
|
||||
},
|
||||
"scope": {
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"why": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"kind",
|
||||
"scope",
|
||||
"id",
|
||||
"at",
|
||||
"why"
|
||||
]
|
||||
},
|
||||
"FindingsStated": {
|
||||
"type": "object",
|
||||
"description": "every finding an observer observes now, at its start and when asked (design 47 G 384, 439)",
|
||||
"properties": {
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"asked": {
|
||||
"type": "string",
|
||||
"description": "the ask it answers; none at a start"
|
||||
},
|
||||
"kinds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "the finding kinds the stating bundle owns and states, the only kinds whose keys the statement deletes and whose conditions the keeper clears when it names none of them; none covers every kind, as a part with one bundle states (design 47 G 580)"
|
||||
},
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/bodies/Finding"
|
||||
}
|
||||
},
|
||||
"pending": {
|
||||
"type": "array",
|
||||
"description": "the keys the observer cannot judge yet since its start, with their since and bound",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"bound": {
|
||||
"type": "string",
|
||||
"description": "a duration such as 5m"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key",
|
||||
"since",
|
||||
"bound"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"at",
|
||||
"findings",
|
||||
"pending"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+80
@@ -159,6 +159,86 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
{
|
||||
"name": "machine-away",
|
||||
"subject": "machine-away.<machine>",
|
||||
"keep": {
|
||||
"max-age-days": 90,
|
||||
"max-mib": 16
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "the watchman's presence key of a machine expired (ADR 0564 4); published by the holder of this seat alone for another machine (design 47 G 436)",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"machine": {
|
||||
"type": "string",
|
||||
"description": "the machine whose presence changed"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"last-heard": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the machine was last heard"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"machine",
|
||||
"at",
|
||||
"last-heard"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "machine-back",
|
||||
"subject": "machine-back.<machine>",
|
||||
"keep": {
|
||||
"max-age-days": 90,
|
||||
"max-mib": 16
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "a machine is heard again after it was away",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"machine": {
|
||||
"type": "string",
|
||||
"description": "the machine whose presence changed"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"last-heard": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the machine was last heard"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"machine",
|
||||
"at",
|
||||
"last-heard"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"family": {
|
||||
"name": "mesh-watchdogs.events",
|
||||
"max-age-days": 7
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "presence",
|
||||
|
||||
+53
-3
@@ -78,6 +78,10 @@
|
||||
"clear": {
|
||||
"type": "boolean",
|
||||
"description": "it is over"
|
||||
},
|
||||
"every-channel": {
|
||||
"type": "boolean",
|
||||
"description": "send it on every channel's send, as a break-glass act is announced, not on the operator's chosen channel alone (design 47 G 514)"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -126,7 +130,7 @@
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "open (open and held), ended or all; none is open when no key or since is given, else all"
|
||||
"description": "open (open, held and held-back), ended or all; none is open when no key or since is given, else all"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
@@ -154,7 +158,11 @@
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "how the ask stands: open, held, or how it ended (answered, expired, cancelled)"
|
||||
"description": "how the ask stands: open, held (no ready channel), held-back (kept open behind the asker's newer asks, ADR 0666 §12), or how it ended (answered, expired, cancelled)"
|
||||
},
|
||||
"held-since": {
|
||||
"type": "string",
|
||||
"description": "when the ask was held back, RFC 3339; present while its state is held-back"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -176,6 +184,37 @@
|
||||
"asks"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ask-again",
|
||||
"description": "Offer a held-back ask now, on a channel that is ready: the asker's ask kept open behind its newer asks (design 47 G 83, 394).",
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string",
|
||||
"description": "<asker>.<id> of the held-back ask"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"description": "where the ask stands after it was offered",
|
||||
"properties": {
|
||||
"state": {
|
||||
"type": "string"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why it was not offered; set alone"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"accepts": [
|
||||
@@ -248,7 +287,7 @@
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "how it stands: open, chosen, expired, cancelled, replaced or refused"
|
||||
"description": "how it stands: open, held-back (kept open behind the asker's newer asks, ADR 0666 §12), chosen, expired, cancelled, replaced or refused"
|
||||
},
|
||||
"opened": {
|
||||
"type": "string",
|
||||
@@ -269,9 +308,20 @@
|
||||
"type": "boolean",
|
||||
"description": "its asker has been told how it ended"
|
||||
},
|
||||
"held-since": {
|
||||
"type": "string",
|
||||
"description": "when the ask was held back, RFC 3339; present while its state is held-back"
|
||||
},
|
||||
"warrant": {
|
||||
"$ref": "#/defs/Warrant"
|
||||
},
|
||||
"answer": {
|
||||
"type": "string",
|
||||
"description": "how it ended, in words"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"description": "when it ended, RFC 3339; present once it ended, a refused ask's refusal time (design 47 G 570, 638)"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
{
|
||||
"name": "list",
|
||||
"description": "Every entry the bus module created, its template, its settings and its fill against its cap.",
|
||||
"callers": "any caller whose role grants it",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -30,6 +29,27 @@
|
||||
"$ref": "#/defs/Held"
|
||||
},
|
||||
"description": "every entry"
|
||||
},
|
||||
"caps": {
|
||||
"type": "object",
|
||||
"description": "the sum of the bus's caps against its limits, in MiB; an absent limit is unlimited (design 47 G 547, 661)",
|
||||
"properties": {
|
||||
"sum-mib": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"account-limit-mib": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"server-limit-mib": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"sum-mib"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -41,7 +61,6 @@
|
||||
{
|
||||
"name": "show",
|
||||
"description": "One entry, its template, settings and fill.",
|
||||
"callers": "any caller whose role grants it",
|
||||
"input": {
|
||||
"$ref": "#/defs/Named"
|
||||
},
|
||||
@@ -53,7 +72,6 @@
|
||||
{
|
||||
"name": "check",
|
||||
"description": "Compare what the bus holds with what was asked, entry by entry; a difference that only grows is said as such.",
|
||||
"callers": "any caller whose role grants it",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -109,7 +127,6 @@
|
||||
{
|
||||
"name": "orphans",
|
||||
"description": "Entries the bus holds that no manifest asks for; never one whose manifest the judge refused or outgrew, nor one of the foundation's old sections.",
|
||||
"callers": "any caller whose role grants it",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
@@ -135,43 +152,42 @@
|
||||
{
|
||||
"name": "create",
|
||||
"description": "Create one entry now.",
|
||||
"callers": "the bus module's own process only",
|
||||
"input": {
|
||||
"$ref": "#/defs/Entry"
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Held"
|
||||
},
|
||||
"optional": true
|
||||
"optional": true,
|
||||
"class": "act"
|
||||
},
|
||||
{
|
||||
"name": "apply",
|
||||
"description": "Apply a difference that only grows: a larger cap, a longer age.",
|
||||
"callers": "the bus module's own process only",
|
||||
"input": {
|
||||
"$ref": "#/defs/Named"
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Held"
|
||||
},
|
||||
"optional": true
|
||||
"optional": true,
|
||||
"class": "act"
|
||||
},
|
||||
{
|
||||
"name": "recreate",
|
||||
"description": "Rebuild an entry whose settings differ in a way that cannot grow, from its data where the storage type allows, after a stream snapshot.",
|
||||
"callers": "the bus module's process, on the operator's warrant",
|
||||
"input": {
|
||||
"$ref": "#/defs/Warranted"
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Held"
|
||||
},
|
||||
"optional": true
|
||||
"optional": true,
|
||||
"class": "warrant"
|
||||
},
|
||||
{
|
||||
"name": "drop",
|
||||
"description": "Remove one orphan, after a stream snapshot.",
|
||||
"callers": "the bus module's process, on the operator's warrant",
|
||||
"input": {
|
||||
"$ref": "#/defs/Warranted"
|
||||
},
|
||||
@@ -191,6 +207,215 @@
|
||||
"dropped"
|
||||
]
|
||||
},
|
||||
"optional": true,
|
||||
"class": "warrant"
|
||||
},
|
||||
{
|
||||
"name": "snapshot-get",
|
||||
"description": "Send the stream snapshot the bus module took before a drop or recreate: its fields, then the file in chunks of at most 512 KiB on the chunk subject of the call, each acknowledged by the caller on the ack subject within 30 seconds. A caller granted no chunk subjects is answered the fields alone, with chunks 0. Refuses snapshot damaged, snapshot missing, snapshot protected and snapshot taken before milestone G (design 47 G 681).",
|
||||
"by-caller": true,
|
||||
"chunks": true,
|
||||
"class": "read",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"request": {
|
||||
"type": "string",
|
||||
"description": "the snapshot's request: the id of the request the keeper took it for, in its state requests",
|
||||
"minLength": 1
|
||||
},
|
||||
"call": {
|
||||
"type": "string",
|
||||
"description": "128 random bits the caller chooses: the subject token of this send's chunks and acknowledgements",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"request",
|
||||
"call"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"request": {
|
||||
"type": "string"
|
||||
},
|
||||
"module": {
|
||||
"type": "string"
|
||||
},
|
||||
"local": {
|
||||
"type": "string",
|
||||
"description": "the entry's local name"
|
||||
},
|
||||
"stream": {
|
||||
"type": "string",
|
||||
"description": "the stream's name on the bus"
|
||||
},
|
||||
"size": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"digest": {
|
||||
"type": "string",
|
||||
"description": "sha256: of the file's bytes"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the snapshot was taken, RFC 3339"
|
||||
},
|
||||
"chunks": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "how many chunks are sent; 0 when the caller is granted no chunk subjects"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why not: snapshot damaged, snapshot missing, snapshot protected or snapshot taken before milestone G; set alone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optional": true
|
||||
},
|
||||
{
|
||||
"name": "snapshot-restore",
|
||||
"description": "Restore in place the snapshot of a protected stream the bus module took before a drop or recreate, under the stream's own name: with verify true it only checks the file against its recorded digest and restores nothing; it refuses names live while a live object of the stream's name exists. Answers accepted, busy or error at once; the outcome comes on the event snapshot-restored (design 47 G 681).",
|
||||
"by-caller": true,
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"request": {
|
||||
"type": "string",
|
||||
"description": "the snapshot's request: the id of the request the keeper took it for, in its state requests",
|
||||
"minLength": 1
|
||||
},
|
||||
"verify": {
|
||||
"type": "boolean",
|
||||
"description": "check the file against its digest and restore nothing"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why, which the hand-act log keeps"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"request",
|
||||
"why"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"description": "the act accepted, or busy with the act that runs, or the error; exactly one of the three is set (design 47 G 681, 691, A-44)",
|
||||
"properties": {
|
||||
"accepted": {
|
||||
"type": "string",
|
||||
"description": "accepted: the act's id"
|
||||
},
|
||||
"busy": {
|
||||
"type": "string",
|
||||
"description": "busy: the id of the act that runs; it keeps no queue"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why not; set alone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optional": true
|
||||
},
|
||||
{
|
||||
"name": "snapshot-restore-cancel",
|
||||
"description": "Cancel a running restore: it removes the keeper's own partial stream, says snapshot-restored with outcome failed under that act and answers accepted, or answers error when that act has ended (design 47 G 681).",
|
||||
"by-caller": true,
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"act": {
|
||||
"type": "string",
|
||||
"description": "the restore's act id",
|
||||
"minLength": 1
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why, which the hand-act log keeps"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"act",
|
||||
"why"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"description": "the act cancelled, or busy with the act that runs, or the error; exactly one of the three is set (design 47 G 681, 691, A-44)",
|
||||
"properties": {
|
||||
"accepted": {
|
||||
"type": "string",
|
||||
"description": "accepted: the act's id"
|
||||
},
|
||||
"busy": {
|
||||
"type": "string",
|
||||
"description": "busy: the id of the act that runs; it keeps no queue"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why not; set alone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optional": true
|
||||
},
|
||||
{
|
||||
"name": "snapshot-remove",
|
||||
"description": "Remove one snapshot and its record now, or every expired one, written in the hand-act log first; a snapshot of before milestone G only by request. Answers accepted, busy or error (design 47 G 681), A-44.",
|
||||
"by-caller": true,
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"request": {
|
||||
"type": "string",
|
||||
"description": "the snapshot's request; or expired true, not both",
|
||||
"minLength": 1
|
||||
},
|
||||
"expired": {
|
||||
"type": "boolean",
|
||||
"description": "true: every snapshot past snapshot-keep-days"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why, which the hand-act log keeps"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"why"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"description": "the act accepted, or busy with the act that runs, or the error; exactly one of the three is set (design 47 G 681, 691, A-44)",
|
||||
"properties": {
|
||||
"accepted": {
|
||||
"type": "string",
|
||||
"description": "accepted: the act's id"
|
||||
},
|
||||
"busy": {
|
||||
"type": "string",
|
||||
"description": "busy: the id of the act that runs; it keeps no queue"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why not; set alone"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optional": true
|
||||
}
|
||||
],
|
||||
@@ -248,6 +473,42 @@
|
||||
"body": {
|
||||
"$ref": "#/defs/Said"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "snapshot-restored",
|
||||
"subject": "snapshot-restored.<request>.<act>",
|
||||
"keep": {
|
||||
"max-age-days": 90,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "how one restore in place of a protected snapshot ended, under the act it was answered accepted with, so a retried restore is told apart from an earlier one (design 47 G 681)",
|
||||
"properties": {
|
||||
"request": {
|
||||
"type": "string"
|
||||
},
|
||||
"act": {
|
||||
"type": "string"
|
||||
},
|
||||
"outcome": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"done",
|
||||
"failed"
|
||||
]
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "when failed"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"request",
|
||||
"act",
|
||||
"outcome"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"family": {
|
||||
@@ -572,6 +833,10 @@
|
||||
"type": "string",
|
||||
"description": "an object store's name"
|
||||
},
|
||||
"objects": {
|
||||
"type": "string",
|
||||
"description": "the bus name of the state's <state>-objects, where its large values go (design 47 G 58, 399)"
|
||||
},
|
||||
"history": {
|
||||
"type": "string",
|
||||
"description": "a ledger's history stream"
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"callers": "any caller whose role grants it; the checker asks it",
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
||||
@@ -36,11 +36,12 @@
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"class": "act"
|
||||
},
|
||||
{
|
||||
"name": "restore",
|
||||
"description": "Restore one module's data from a restore point BESIDE the live data, never over it: each directory as \u003cpath\u003e.restored-\u003cdate\u003e. Swapping it in is a person's act. Lists the restore points when none is named.",
|
||||
"description": "Restore one module's data from a restore point BESIDE the live data, never over it: each directory as <path>.restored-<date>. Swapping it in is a person's act. Lists the restore points when none is named.",
|
||||
"replaces": [
|
||||
"restic restore"
|
||||
],
|
||||
@@ -63,6 +64,71 @@
|
||||
"module"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"class": "act"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
{
|
||||
"name": "item-started",
|
||||
"subject": "item-started.<node>.<module>.<item>",
|
||||
"keep": {
|
||||
"max-age-days": 7,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "the holder started backing up one item of a module on its node, said before it reads the recovery module's restore-started and restored (design 47 G 554, 563)",
|
||||
"required": [
|
||||
"at"
|
||||
],
|
||||
"properties": {
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the item started, RFC 3339"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "item-ended",
|
||||
"subject": "item-ended.<node>.<module>.<item>",
|
||||
"keep": {
|
||||
"max-age-days": 7,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "the holder ended one item: done, failed (error stopped for an item it said started and never ended, at its start) or put-off while a restore of the recovery module runs, the item started again when that restore's restored is heard (design 47 G 554, 563)",
|
||||
"required": [
|
||||
"at",
|
||||
"outcome"
|
||||
],
|
||||
"properties": {
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the item ended, RFC 3339"
|
||||
},
|
||||
"outcome": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"done",
|
||||
"failed",
|
||||
"put-off"
|
||||
],
|
||||
"description": "how the item ended; a put-off item is that night's backup once it runs, neither failed nor missed"
|
||||
},
|
||||
"restore": {
|
||||
"type": "string",
|
||||
"description": "with put-off, the act of the recovery module's restore the item gave way to"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "with failed, why, in words; stopped for an item ended at the holder's start"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@@ -5,8 +5,13 @@
|
||||
"grain": "whole",
|
||||
"domain": "Core",
|
||||
"decision": "novox/hq ADR 0563",
|
||||
"description": "The node seat every node's engine holds (novox/hq ADR 0563, ADR 0618 §3, §4): its hand acts on the operator's warrant, its read-only judgements, its compositions and what it reads of a manifest. Each verb is answered on this node's subject, mesh.seat.node-engine.tool.<verb>.<node>, and each event is published on mesh.seat.node-engine.event.<event>.<node>, the node's name its last token.",
|
||||
"held-by-the-engine": true,
|
||||
"description": "The node seat every node's engine holds (novox/hq ADR 0563, ADR 0618 §3, §4): its hand acts on the operator's warrant, its read-only judgements, its compositions and what it reads of a manifest. Each verb is answered on this node's subject, mesh.seat.node-engine.tool.<verb>.<node>, and each event is published on mesh.seat.node-engine.event.<event>.<node>, the node's name its last token, or, for an event whose subject names <node>, there (composed.<node>, running.<node>.<module>): the grants part grants a node's account only its own node's subjects (ADR 0363 §2).",
|
||||
"acts": [
|
||||
{
|
||||
"step": "compose",
|
||||
"on": "every"
|
||||
}
|
||||
],
|
||||
"verbs": [
|
||||
{
|
||||
"name": "hand-over",
|
||||
@@ -29,7 +34,8 @@
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Asked"
|
||||
}
|
||||
},
|
||||
"class": "warrant"
|
||||
},
|
||||
{
|
||||
"name": "access-act",
|
||||
@@ -57,7 +63,8 @@
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Asked"
|
||||
}
|
||||
},
|
||||
"class": "warrant"
|
||||
},
|
||||
{
|
||||
"name": "judge-directories",
|
||||
@@ -68,7 +75,8 @@
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Said"
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "setuid-search",
|
||||
@@ -84,7 +92,8 @@
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Said"
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "root-free",
|
||||
@@ -107,7 +116,8 @@
|
||||
"required": [
|
||||
"machines"
|
||||
]
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "acts",
|
||||
@@ -127,7 +137,8 @@
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/Acts"
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "packages",
|
||||
@@ -217,7 +228,8 @@
|
||||
"node",
|
||||
"source"
|
||||
]
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "composition",
|
||||
@@ -482,6 +494,29 @@
|
||||
"provisioner_account"
|
||||
],
|
||||
"description": "of the node's own composition, its own fields beside what runs names"
|
||||
},
|
||||
"withheld": {
|
||||
"type": "array",
|
||||
"description": "the module's marked subjects the grants part withholds from this node's runtime, each with why, read through mesh-grants' verb withheld (design 46 approval mark 6)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"subject": {
|
||||
"type": "string"
|
||||
},
|
||||
"why": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"subject",
|
||||
"why"
|
||||
]
|
||||
}
|
||||
},
|
||||
"withheld-unknown": {
|
||||
"type": "string",
|
||||
"description": "withheld unknown: the grants part does not answer, when its verb withheld did not answer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -491,7 +526,8 @@
|
||||
"composition",
|
||||
"judged"
|
||||
]
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "compose",
|
||||
@@ -554,7 +590,8 @@
|
||||
"required": [
|
||||
"pass"
|
||||
]
|
||||
}
|
||||
},
|
||||
"class": "act"
|
||||
},
|
||||
{
|
||||
"name": "compose-candidate",
|
||||
@@ -633,7 +670,8 @@
|
||||
"own",
|
||||
"took"
|
||||
]
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "manifest-reads",
|
||||
@@ -673,12 +711,12 @@
|
||||
"stated-at"
|
||||
],
|
||||
"description": "what this machine's engine reads of a manifest (ADR 0618 §3)"
|
||||
}
|
||||
},
|
||||
"class": "read"
|
||||
},
|
||||
{
|
||||
"name": "seat-list",
|
||||
"description": "The seat list this engine holds and what it waits for (novox/hq ADR 0636 §7): each seat's source (trunk or bootstrap) and digest, the seats held from the bootstrap alone, the definitions refused, the last error and whether the seat mesh-catalog has answered. Read-only.",
|
||||
"callers": "the operator and the healers",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
@@ -690,7 +728,6 @@
|
||||
{
|
||||
"name": "seat-list-again",
|
||||
"description": "Make this engine read the seat list from the seat mesh-catalog now (novox/hq ADR 0636 §7), the recovery of a list unread; it answers what it holds afterwards, and the error when the read failed. A read that changed nothing still ends the engine's wait.",
|
||||
"callers": "the operator and the healers",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
@@ -698,6 +735,257 @@
|
||||
"answer": {
|
||||
"$ref": "#/defs/SeatList"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "first-views",
|
||||
"description": "The node-engine's first views of the owners' states it follows (design 47 G 422, 204): per owner and state, the tool it asks, the revision its picture holds and why it is behind, when it asked and was answered, how many asks and whether its condition is raised; served by mesh-sdk's runtime as the view's read tool; its entries and its kept wants beside (design 47 G 698).",
|
||||
"class": "read",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"first-views",
|
||||
"entries",
|
||||
"wants"
|
||||
],
|
||||
"properties": {
|
||||
"first-views": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object"
|
||||
},
|
||||
"description": "one status per owner and state followed, as mesh-sdk's views runtime keeps it"
|
||||
},
|
||||
"entries": {
|
||||
"type": "array",
|
||||
"description": "one row per entry the node-engine keeps of a module's build by its fingerprint: when it asked the indexer's entry and where that stands (design 47 G 698)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"fingerprint",
|
||||
"state",
|
||||
"since"
|
||||
],
|
||||
"properties": {
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the build's fingerprint"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"asked",
|
||||
"answered",
|
||||
"not-found"
|
||||
],
|
||||
"description": "asked of the indexer, answered, or not found by it"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "since when it stands in that state, RFC 3339"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"wants": {
|
||||
"type": "array",
|
||||
"description": "the wants the node-engine keeps (design 47 G 683, 698)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"module",
|
||||
"fingerprint",
|
||||
"kept-since"
|
||||
],
|
||||
"properties": {
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the module the want is of"
|
||||
},
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the fingerprint wanted"
|
||||
},
|
||||
"kept-since": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "since when the want is kept, RFC 3339"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "first-view-again",
|
||||
"description": "Ask the node-engine's first view of an owner's state again now, by hand (design 47 G 422, 204): a hand act, its caller and why kept in the status first-views reads; served by mesh-sdk's runtime as the view's again tool.",
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"owner",
|
||||
"state",
|
||||
"why"
|
||||
],
|
||||
"properties": {
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"description": "the owner module, as first-views names it"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "the owner's state, as first-views names it"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why it is asked again, in plain words"
|
||||
}
|
||||
}
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"asked",
|
||||
"read"
|
||||
],
|
||||
"properties": {
|
||||
"asked": {
|
||||
"type": "object",
|
||||
"description": "the hand ask written",
|
||||
"required": [
|
||||
"v",
|
||||
"owner",
|
||||
"state",
|
||||
"why",
|
||||
"by",
|
||||
"at"
|
||||
],
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"description": "the owner module"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "the owner's state"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why it was asked again"
|
||||
},
|
||||
"by": {
|
||||
"type": "string",
|
||||
"description": "the caller the runtime proved"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when it was asked, RFC 3339"
|
||||
}
|
||||
}
|
||||
},
|
||||
"read": {
|
||||
"type": "string",
|
||||
"description": "the verb that reads the status, first-views"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "entry-again",
|
||||
"description": "Ask the indexer's entry of a build again now, by hand (design 47 G 683, 698): a hand act, its caller and why kept; the answer says what was asked and the verb that reads it.",
|
||||
"class": "act",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"fingerprint",
|
||||
"why"
|
||||
],
|
||||
"properties": {
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the build's fingerprint, as first-views' entries name it"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why it is asked again, in plain words"
|
||||
}
|
||||
}
|
||||
},
|
||||
"answer": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"asked",
|
||||
"read"
|
||||
],
|
||||
"properties": {
|
||||
"asked": {
|
||||
"type": "object",
|
||||
"description": "the hand ask written",
|
||||
"required": [
|
||||
"v",
|
||||
"fingerprint",
|
||||
"why",
|
||||
"by",
|
||||
"at"
|
||||
],
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the build's fingerprint"
|
||||
},
|
||||
"why": {
|
||||
"type": "string",
|
||||
"description": "why it was asked again"
|
||||
},
|
||||
"by": {
|
||||
"type": "string",
|
||||
"description": "the caller the runtime proved"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when it was asked, RFC 3339"
|
||||
}
|
||||
}
|
||||
},
|
||||
"read": {
|
||||
"type": "string",
|
||||
"description": "the verb that reads the status, first-views"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "process-builds",
|
||||
"description": "The build each process on this node was started with (design 47 *The revision view*): per service and container the fingerprint the node-engine handed it in MESH_FINGERPRINT, or why it is unknown, and when it started. Narrowed by module. Reads only.",
|
||||
"input": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "only this module's processes"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"answer": {
|
||||
"$ref": "#/defs/ProcessBuilds"
|
||||
},
|
||||
"class": "read"
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
@@ -728,6 +1016,46 @@
|
||||
"body": {
|
||||
"$ref": "#/defs/ManifestReadsChanged"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "composed",
|
||||
"subject": "composed.<node>",
|
||||
"body": {
|
||||
"$ref": "#/defs/Composed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "running",
|
||||
"subject": "running.<node>.<module>",
|
||||
"keep": {
|
||||
"max-age-days": 0,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"$ref": "#/defs/Running"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wait-held",
|
||||
"subject": "wait-held.<node>.<module>",
|
||||
"keep": {
|
||||
"max-age-days": 0,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"$ref": "#/defs/Wait"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wait-ended",
|
||||
"subject": "wait-ended.<node>.<module>",
|
||||
"keep": {
|
||||
"max-age-days": 0,
|
||||
"last-per-subject": true
|
||||
},
|
||||
"body": {
|
||||
"$ref": "#/defs/Wait"
|
||||
}
|
||||
}
|
||||
],
|
||||
"family": {
|
||||
@@ -832,6 +1160,9 @@
|
||||
},
|
||||
"handed": {
|
||||
"$ref": "#/defs/AccountsHanded"
|
||||
},
|
||||
"wait": {
|
||||
"$ref": "#/defs/Wait"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -1288,6 +1619,39 @@
|
||||
}
|
||||
],
|
||||
"description": "the findings this node's engine raises about itself, one key per finding, in the layout of the seat mesh-conditions (its findings state): a key written raises the condition of the same key, a key deleted clears it (novox/hq ADR 0564 §2, ADR 0636 §1); today `machine.<node>.seat-list-unread`"
|
||||
},
|
||||
{
|
||||
"name": "bounds",
|
||||
"template": "state",
|
||||
"writer": "holder",
|
||||
"history": 1,
|
||||
"key-forms": [
|
||||
{
|
||||
"key": "<what>.<id>",
|
||||
"value": {
|
||||
"type": "object",
|
||||
"description": "one bound a wait of the node-engine runs against, kept with its own time to live: its expiry is heard as the bus's delete marker and ends the wait (design 47 G §560, A-77)",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "layout version, 1"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"description": "when the wait began, RFC 3339"
|
||||
},
|
||||
"module": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"since"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "the bounds of the node-engine's waits, each a key <what>.<id> with its own time to live (design 47 G A-92)"
|
||||
}
|
||||
],
|
||||
"defs": {
|
||||
@@ -2001,6 +2365,17 @@
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"runner-capabilities": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "the capabilities this node's tool runner states of the calls it answers, as its announcement carries them (design 46 approval mark 6)"
|
||||
},
|
||||
"runner-fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the fingerprint of the tool runner that stated runner-capabilities, as its announcement carries it; empty when it stated none"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -2658,6 +3033,218 @@
|
||||
"state",
|
||||
"since"
|
||||
]
|
||||
},
|
||||
"Composed": {
|
||||
"type": "object",
|
||||
"description": "an entry composed on a node (design 47 *What each step says*)",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"node": {
|
||||
"type": "string",
|
||||
"description": "the node"
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the module"
|
||||
},
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the fingerprint of the want composed"
|
||||
},
|
||||
"digest": {
|
||||
"type": "string",
|
||||
"description": "the digest of the composition (design 47 G 404)"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"description": "when, RFC 3339",
|
||||
"format": "date-time"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"node",
|
||||
"module",
|
||||
"fingerprint",
|
||||
"digest",
|
||||
"at"
|
||||
]
|
||||
},
|
||||
"Running": {
|
||||
"type": "object",
|
||||
"description": "a module's build running on a node, and its health: what the node-engines of other nodes and the grants part decide a seat's pass from (ADR 0660 §2), and the assigner reads a provider's and a canary's health and a put's end from (design 47 G 520); said again on the same subject each time healthy changes and for every module the have holds at the engine's start, kept last per subject with no age limit",
|
||||
"properties": {
|
||||
"v": {
|
||||
"type": "integer",
|
||||
"description": "the layout's version"
|
||||
},
|
||||
"node": {
|
||||
"type": "string",
|
||||
"description": "the node"
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the module"
|
||||
},
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the fingerprint of the build it runs; none with stopped"
|
||||
},
|
||||
"manifest": {
|
||||
"type": "string",
|
||||
"description": "the digest of that build's manifest, the indexer's manifest of it, read by digest from the catalog half"
|
||||
},
|
||||
"healthy": {
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
],
|
||||
"description": "the health of the build that runs, as the node-engine's have holds it from the module's declared check (ADR 0240); a running with none, said by a node-engine of before design 47 G, reads as healthy (design 47 G 520). SeatsToPassOn reads none of it: an unhealthy holder still holds its seat"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"description": "when it was said, RFC 3339",
|
||||
"format": "date-time"
|
||||
},
|
||||
"stopped": {
|
||||
"type": "boolean",
|
||||
"description": "true when the have no longer holds the module on the node, never for an unhealthy build: no fingerprint or manifest then (design 47 G 365, 404, 520); mesh-sdk's SeatsToPassOn counts such a module as not running there"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"v",
|
||||
"node",
|
||||
"module",
|
||||
"at"
|
||||
]
|
||||
},
|
||||
"ProcessBuild": {
|
||||
"type": "object",
|
||||
"description": "the build one process of a module was started with",
|
||||
"properties": {
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the module"
|
||||
},
|
||||
"process": {
|
||||
"type": "string",
|
||||
"description": "the service's unit or the container's name"
|
||||
},
|
||||
"kind": {
|
||||
"type": "string",
|
||||
"description": "service or container",
|
||||
"enum": [
|
||||
"service",
|
||||
"container"
|
||||
]
|
||||
},
|
||||
"fingerprint": {
|
||||
"type": "string",
|
||||
"description": "the fingerprint handed to it in MESH_FINGERPRINT; empty when it was started without one"
|
||||
},
|
||||
"unknown": {
|
||||
"type": "string",
|
||||
"description": "why its build is unknown: started before the node-engine handed MESH_FINGERPRINT, or the value could not be read"
|
||||
},
|
||||
"started": {
|
||||
"type": "string",
|
||||
"description": "when it was started, RFC 3339",
|
||||
"format": "date-time"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"module",
|
||||
"process",
|
||||
"kind"
|
||||
]
|
||||
},
|
||||
"ProcessBuilds": {
|
||||
"type": "object",
|
||||
"description": "what process-builds answers",
|
||||
"properties": {
|
||||
"node": {
|
||||
"type": "string",
|
||||
"description": "the node"
|
||||
},
|
||||
"processes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/defs/ProcessBuild"
|
||||
},
|
||||
"description": "every process the node-engine started, by module"
|
||||
},
|
||||
"error": {
|
||||
"type": "string",
|
||||
"description": "why they could not be read"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"node",
|
||||
"processes"
|
||||
]
|
||||
},
|
||||
"Wait": {
|
||||
"type": "object",
|
||||
"description": "a hold or wait a node-engine says, the fields of the seat mesh-wants' wait (design 47 G 498, 512, 629); in the have it also carries ask-at and act (design 47 G 560)",
|
||||
"properties": {
|
||||
"owner": {
|
||||
"type": "string",
|
||||
"description": "the seat holding the wait: node-engine"
|
||||
},
|
||||
"step": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"compose",
|
||||
"kept-build"
|
||||
],
|
||||
"description": "compose: a hold of the composition (a restore point missing, an entry missing, parts that differ, a recovery that waits); kept-build: waiting for a kept build (design 47 G 499, 541)"
|
||||
},
|
||||
"node": {
|
||||
"type": "string",
|
||||
"description": "the node waited on: the build node for a kept build; the subject's <node> is the node that says it"
|
||||
},
|
||||
"on": {
|
||||
"type": "string",
|
||||
"description": "what it waits on"
|
||||
},
|
||||
"bound": {
|
||||
"type": "string",
|
||||
"description": "a duration such as 30m"
|
||||
},
|
||||
"since": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"clock-from": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "the time the bound counts from (design 47 G 266, 269, 498)"
|
||||
},
|
||||
"words": {
|
||||
"type": "string",
|
||||
"description": "the wait said in words"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string",
|
||||
"description": "why it holds, such as restore point missing, entry-missing, parts-differ, node away or build no longer kept (design 47 G 541, 499)"
|
||||
},
|
||||
"ask-at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "in the have: the time of the first ask of the recovery module for this wait (design 47 G 560)"
|
||||
},
|
||||
"act": {
|
||||
"type": "string",
|
||||
"description": "in the have: the act the recovery module answered accepted with (design 47 G 560)"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"step",
|
||||
"since"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-1161
File diff suppressed because it is too large
Load Diff
+3030
File diff suppressed because it is too large
Load Diff
+159
-47
@@ -176,7 +176,79 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "The merge check's tries: start one, read one, end one. The checker's own events stay under its own subjects (ADR 0620 §2).",
|
||||
"description": "The merge check's tries: start one, read one, end one. The seat says each check's end as checked and what the checker owes the forge as owed; the checker's other events stay under its own subjects (ADR 0620 §2).",
|
||||
"family": {
|
||||
"name": "mesh-delivery-checker.events",
|
||||
"max-age-days": 7
|
||||
},
|
||||
"events": [
|
||||
{
|
||||
"name": "checked",
|
||||
"body": {
|
||||
"type": "object",
|
||||
"description": "a candidate checked: its entries judged at the group's heads (design 47 *What each step says*)",
|
||||
"properties": {
|
||||
"group": {
|
||||
"type": "string",
|
||||
"description": "the group, its branch"
|
||||
},
|
||||
"heads": {
|
||||
"type": "string",
|
||||
"description": "the heads checked, 12 hex digits, as the candidate's revisions are keyed"
|
||||
},
|
||||
"source": {
|
||||
"type": "integer",
|
||||
"description": "the source revision the heads are merged onto"
|
||||
},
|
||||
"catalog": {
|
||||
"type": "integer",
|
||||
"description": "the candidate's catalog graph revision judged, by its number on the seat mesh-catalog"
|
||||
},
|
||||
"verdict": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"pass",
|
||||
"fail",
|
||||
"could not run"
|
||||
],
|
||||
"description": "pass, fail, or could not run when a part the check needs did not answer"
|
||||
},
|
||||
"words": {
|
||||
"type": "string",
|
||||
"description": "what failed first, or the part not heard"
|
||||
},
|
||||
"entries": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/defs/CheckedEntry"
|
||||
},
|
||||
"description": "the entries checked"
|
||||
},
|
||||
"at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"group",
|
||||
"heads",
|
||||
"verdict"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "owed",
|
||||
"subject": "owed.<repository>.<number>",
|
||||
"body": {
|
||||
"$ref": "#/defs/Owed"
|
||||
},
|
||||
"keep": {
|
||||
"max-age-days": 7,
|
||||
"max-mib": 64
|
||||
}
|
||||
}
|
||||
],
|
||||
"holder-events": [
|
||||
{
|
||||
"name": "verdict",
|
||||
@@ -247,51 +319,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tag-wanted",
|
||||
"subject": "mesh.stream.<holder>.event.tag-wanted",
|
||||
"family": "checker.asks",
|
||||
"body": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"description": "owner/repo"
|
||||
},
|
||||
"pull": {
|
||||
"type": "integer",
|
||||
"description": "the pull request"
|
||||
},
|
||||
"head": {
|
||||
"type": "string",
|
||||
"description": "its head"
|
||||
},
|
||||
"branch": {
|
||||
"type": "string",
|
||||
"description": "the pull request's branch: its tag is removed when the branch ends"
|
||||
},
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the group member"
|
||||
},
|
||||
"package": {
|
||||
"type": "string",
|
||||
"description": "the package it declares"
|
||||
},
|
||||
"tag": {
|
||||
"type": "string",
|
||||
"description": "the tag wanted"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"repository",
|
||||
"head",
|
||||
"branch",
|
||||
"module",
|
||||
"package"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "preview.written",
|
||||
"subject": "mesh.stream.<holder>.event.preview.written",
|
||||
@@ -746,5 +773,90 @@
|
||||
"description": "the previews of a head merged onto a trunk",
|
||||
"history": 5
|
||||
}
|
||||
]
|
||||
],
|
||||
"defs": {
|
||||
"Owed": {
|
||||
"type": "object",
|
||||
"description": "the status the checker owes the forge for a head, said under its id and safe to repeat (a status replaces what stands); the forge bridge performs it through the seat git's verb status (design 47 *What the gate owes the forge*)",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "the act's id, the same each time it is said again"
|
||||
},
|
||||
"act": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"status"
|
||||
],
|
||||
"description": "the act: always status"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"description": "the repository, <owner>/<name>",
|
||||
"minLength": 1
|
||||
},
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"description": "the pull request's number"
|
||||
},
|
||||
"head": {
|
||||
"type": "string",
|
||||
"description": "the pull request's head the status is on",
|
||||
"pattern": "^[0-9a-f]{40}$"
|
||||
},
|
||||
"context": {
|
||||
"type": "string",
|
||||
"description": "its context, mesh/check"
|
||||
},
|
||||
"state": {
|
||||
"type": "string",
|
||||
"description": "pending, success, failure or error"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "what it says"
|
||||
},
|
||||
"target": {
|
||||
"type": "string",
|
||||
"description": "the page it links to"
|
||||
},
|
||||
"said": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "when the checker first said it"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"act",
|
||||
"repository",
|
||||
"number",
|
||||
"head",
|
||||
"context",
|
||||
"state"
|
||||
]
|
||||
},
|
||||
"CheckedEntry": {
|
||||
"type": "object",
|
||||
"description": "one entry of the candidate checked: a module at its fingerprint",
|
||||
"properties": {
|
||||
"module": {
|
||||
"type": "string",
|
||||
"description": "the module"
|
||||
},
|
||||
"fp": {
|
||||
"type": "string",
|
||||
"description": "the entry's fingerprint"
|
||||
},
|
||||
"node": {
|
||||
"type": "string",
|
||||
"description": "the node it was composed for, when the check composed it on one"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"module",
|
||||
"fp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+1
@@ -25,4 +25,5 @@ catalogue/seat_dependencies.go: node-service-manager
|
||||
catalogue/shares.go: node-mounts
|
||||
catalogue/shares.go: node-nfs-server
|
||||
internal/beside/beside.go: mesh-catalog
|
||||
seatlist/holder.go: mesh-module-assigner
|
||||
seatlist/seatlist.go: mesh-catalog
|
||||
|
||||
Reference in New Issue
Block a user