diff --git a/go/seats/seats.go b/go/seats/seats.go index 371a5fd..5e4e996 100644 --- a/go/seats/seats.go +++ b/go/seats/seats.go @@ -684,6 +684,9 @@ func List() []Seat { Input: map[string]any{"properties": map[string]any{"module": map[string]any{"description": "a module placed on this machine whose apply is also tried again (optional)", "type": "string"}}, "type": "object"}}, {Name: "compose-candidate", Description: "Compose a check's candidate on this machine in shadow, with its own sealed values and the indexer's manifest verdicts, and say per module placed here whether it composes (with its digest and whether the candidate changes it), is refused by the candidate or is held without it, each with why, and the verdict of the machine's own composition (novox/hq ADR 0593 ยง7). Read-only: applies nothing and writes nothing. Answered by this machine's engine alone, within the asker's bound.", Optional: true, Input: map[string]any{"properties": map[string]any{"candidate": map[string]any{"description": "the key of the indexer's candidate, .", "type": "string"}, "input": map[string]any{"description": "\"true\": also answer the composition input the candidate was composed from, for the sandbox path", "enum": []string{"true", "false"}, "type": "string"}}, "required": []string{"candidate"}, "type": "object"}}, + {Name: "pull-waits", Description: "The failed pulls this machine's engine waits on a store's holder for (design 51 *What a pull meets in the swap*): per module, the image, the seat it came through and that seat's holder, when the pull began, how many settled events of that holder it heard and the last, and its last retry and what started it. Read-only. Answered by this machine's engine alone.", Optional: true, + Input: map[string]any{"properties": map[string]any{}, "type": "object"}, + Output: map[string]any{"properties": map[string]any{"waits": map[string]any{"description": "every failed pull waiting on a holder", "items": map[string]any{"properties": map[string]any{"holder": map[string]any{"description": "that seat's holder, whose settled the retry waits on", "type": "string"}, "image": map[string]any{"description": "the image whose pull failed", "type": "string"}, "module": map[string]any{"description": "the module whose apply failed", "type": "string"}, "pull-began": map[string]any{"description": "when the failed pull began, RFC 3339", "type": "string"}, "retry-last": map[string]any{"description": "when it was last tried again, RFC 3339", "type": "string"}, "retry-trigger": map[string]any{"description": "what started that retry: settled, or the engine's start", "type": "string"}, "seat": map[string]any{"description": "the seat the image came through", "type": "string"}, "settled-count": map[string]any{"description": "the settled events of the holder heard since the engine started", "type": "integer"}, "settled-last": map[string]any{"description": "when the last was heard, RFC 3339", "type": "string"}}, "required": []string{"module", "image"}, "type": "object"}, "type": "array"}}, "required": []string{"waits"}, "type": "object"}}, }}, {Name: NodeLoginManager, Scope: "node", Grain: "seat-list", Decision: "novox/hq ADR 0208", Serves: []Verb{ diff --git a/seats/node-engine/seat.json b/seats/node-engine/seat.json index 20ee202..21b288c 100644 --- a/seats/node-engine/seat.json +++ b/seats/node-engine/seat.json @@ -32,7 +32,7 @@ "input": { "properties": { "access": { - "description": "the access, library:\u003cname\u003e", + "description": "the access, library:", "type": "string" }, "act": { @@ -117,7 +117,7 @@ }, { "name": "composition", - "description": "One module's composition on this machine beside what runs of it, read-only: the composition its want's build has in the bucket composed-\u003cnode\u003e (the latest revision, or the one whose digest is given, from the revisions the bucket keeps), the digest of each kept revision, what runs (applied, its have, or the kept declaration), its want and have (phase running, failed, held or waiting-yes, and the digest that waits for a yes), and the move's judgement with its words: why a record module waits for a yes. With diff, every resource added, removed or changed, a provider's received file naming the consumers that join or leave.", + "description": "One module's composition on this machine beside what runs of it, read-only: the composition its want's build has in the bucket composed- (the latest revision, or the one whose digest is given, from the revisions the bucket keeps), the digest of each kept revision, what runs (applied, its have, or the kept declaration), its want and have (phase running, failed, held or waiting-yes, and the digest that waits for a yes), and the move's judgement with its words: why a record module waits for a yes. With diff, every resource added, removed or changed, a provider's received file naming the consumers that join or leave.", "optional": true, "input": { "properties": { @@ -161,7 +161,7 @@ "input": { "properties": { "candidate": { - "description": "the key of the indexer's candidate, \u003cgroup\u003e.\u003cheads hash\u003e", + "description": "the key of the indexer's candidate, .", "type": "string" }, "input": { @@ -178,6 +178,72 @@ ], "type": "object" } + }, + { + "name": "pull-waits", + "optional": true, + "description": "The failed pulls this machine's engine waits on a store's holder for (design 51 *What a pull meets in the swap*): per module, the image, the seat it came through and that seat's holder, when the pull began, how many settled events of that holder it heard and the last, and its last retry and what started it. Read-only. Answered by this machine's engine alone.", + "input": { + "type": "object", + "properties": {} + }, + "answer": { + "type": "object", + "required": [ + "waits" + ], + "properties": { + "waits": { + "type": "array", + "description": "every failed pull waiting on a holder", + "items": { + "type": "object", + "required": [ + "module", + "image" + ], + "properties": { + "module": { + "type": "string", + "description": "the module whose apply failed" + }, + "image": { + "type": "string", + "description": "the image whose pull failed" + }, + "seat": { + "type": "string", + "description": "the seat the image came through" + }, + "holder": { + "type": "string", + "description": "that seat's holder, whose settled the retry waits on" + }, + "pull-began": { + "type": "string", + "description": "when the failed pull began, RFC 3339" + }, + "settled-count": { + "type": "integer", + "description": "the settled events of the holder heard since the engine started" + }, + "settled-last": { + "type": "string", + "description": "when the last was heard, RFC 3339" + }, + "retry-last": { + "type": "string", + "description": "when it was last tried again, RFC 3339" + }, + "retry-trigger": { + "type": "string", + "description": "what started that retry: settled, or the engine's start" + } + } + } + } + } + } } ], "events": [ diff --git a/ts/src/seats.ts b/ts/src/seats.ts index eec8f18..3cbdb10 100644 --- a/ts/src/seats.ts +++ b/ts/src/seats.ts @@ -6581,6 +6581,72 @@ export const list: readonly Seat[] = [ }, "name": "compose-candidate", "optional": true + }, + { + "description": "The failed pulls this machine's engine waits on a store's holder for (design 51 *What a pull meets in the swap*): per module, the image, the seat it came through and that seat's holder, when the pull began, how many settled events of that holder it heard and the last, and its last retry and what started it. Read-only. Answered by this machine's engine alone.", + "input": { + "properties": {}, + "type": "object" + }, + "name": "pull-waits", + "optional": true, + "output": { + "properties": { + "waits": { + "description": "every failed pull waiting on a holder", + "items": { + "properties": { + "holder": { + "description": "that seat's holder, whose settled the retry waits on", + "type": "string" + }, + "image": { + "description": "the image whose pull failed", + "type": "string" + }, + "module": { + "description": "the module whose apply failed", + "type": "string" + }, + "pull-began": { + "description": "when the failed pull began, RFC 3339", + "type": "string" + }, + "retry-last": { + "description": "when it was last tried again, RFC 3339", + "type": "string" + }, + "retry-trigger": { + "description": "what started that retry: settled, or the engine's start", + "type": "string" + }, + "seat": { + "description": "the seat the image came through", + "type": "string" + }, + "settled-count": { + "description": "the settled events of the holder heard since the engine started", + "type": "integer" + }, + "settled-last": { + "description": "when the last was heard, RFC 3339", + "type": "string" + } + }, + "required": [ + "module", + "image" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "waits" + ], + "type": "object" + } } ] },