mesh-sdk: the captured copy of the assigner's seat follows the rename (issue 1966)

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
This commit is contained in:
2026-11-05 21:57:26 +01:00
parent ab1efaa74b
commit dae0c05d55
@@ -5,11 +5,11 @@
"grain": "whole",
"domain": "Core",
"decision": "novox/hq ADR 0567, ADR 0634, ADR 0635",
"description": "The seat that places modules on nodes (ADR 0567): the state of placement and the proposals that change it. Renamed from mesh-placement (ADR 0634 §9).",
"description": "The seat that places modules on nodes (ADR 0567): the state of assignments and the proposals that change it.",
"verbs": [
{
"name": "assignments",
"description": "Read the assignments: one node's key, the nodes one module is placed on, or every key, each with its revision, and how full the state is against its cap. With history, one node's or one module's changes in order: a revision the state keeps whole, an older one as the proposal's changes from its placement-changed event.",
"description": "Read the assignments: one node's key, the nodes one module is placed on, or every key, each with its revision, and how full the state is against its cap. With history, one node's or one module's changes in order: a revision the state keeps whole, an older one as the proposal's changes from its assignments-changed event.",
"optional": true,
"input": {
"properties": {
@@ -42,12 +42,12 @@
},
"answer": {
"type": "object",
"description": "placement as read: nodes, keys with their revisions, history, seat holders, the state's fill"
"description": "assignments as read: nodes, keys with their revisions, history, seat holders, the state's fill"
}
},
{
"name": "proposals",
"description": "Every open proposal of placement: its changes, the revision of each key it was laid over, its candidates, every node's answer, the differences computed and answered, its verdict and its ask. Narrowed to one by id.",
"description": "Every open proposal of assignments: its changes, the revision of each key it was laid over, its candidates, every node's answer, the differences computed and answered, its verdict and its ask. Narrowed to one by id.",
"optional": true,
"input": {
"properties": {
@@ -65,7 +65,7 @@
},
{
"name": "propose",
"description": "Propose a change of placement, with why: laid over the current keys and refused at once, naming every finding, when the result cannot be placed (two modules on one host port, a provider not placed, a seat held once held twice, two nodes with one address, two hubs, a module the indexer does not hold, a node with no record). Otherwise the nodes it touches compose it in shadow and answer, and on a passing verdict the operator is asked to approve it. Who proposes is the caller, as the runtime proves it. An add-node from mesh-enrolment, whose warrant names its node and address, is written with no ask of its own: its Approve is the enrolment's (ADR 0587 §7).",
"description": "Propose a change of assignments, with why: laid over the current keys and refused at once, naming every finding, when the result cannot be placed (two modules on one host port, a provider not placed, a seat held once held twice, two nodes with one address, two hubs, a module the indexer does not hold, a node with no record). Otherwise the nodes it touches compose it in shadow and answer, and on a passing verdict the operator is asked to approve it. Who proposes is the caller, as the runtime proves it. An add-node from mesh-enrolment, whose warrant names its node and address, is written with no ask of its own: its Approve is the enrolment's (ADR 0587 §7).",
"optional": true,
"input": {
"additionalProperties": false,
@@ -110,7 +110,7 @@
},
{
"name": "withdraw",
"description": "Withdraw an open proposal: its key and its candidates are deleted and placement-withdrawn carries it whole. With why.",
"description": "Withdraw an open proposal: its key and its candidates are deleted and assignments-withdrawn carries it whole. With why.",
"optional": true,
"input": {
"properties": {
@@ -158,27 +158,27 @@
],
"events": [
{
"name": "placement-proposed",
"name": "assignments-proposed",
"body": {
"$ref": "#/defs/PlacementEvent"
"$ref": "#/defs/AssignmentsEvent"
}
},
{
"name": "placement-withdrawn",
"name": "assignments-withdrawn",
"body": {
"$ref": "#/defs/PlacementEvent"
"$ref": "#/defs/AssignmentsEvent"
}
},
{
"name": "placement-judged",
"name": "assignments-judged",
"body": {
"$ref": "#/defs/PlacementEvent"
"$ref": "#/defs/AssignmentsEvent"
}
},
{
"name": "placement-changed",
"name": "assignments-changed",
"body": {
"$ref": "#/defs/PlacementEvent"
"$ref": "#/defs/AssignmentsEvent"
}
}
],
@@ -313,9 +313,9 @@
"type": "boolean",
"description": "the proposal changes this node's composition through another's key"
},
"placement": {
"$ref": "#/defs/Placement",
"description": "the node's placement with the proposal laid over it; absent when the proposal takes its key away"
"assignments": {
"$ref": "#/defs/Assignments",
"description": "the node's assignments with the proposal laid over it; absent when the proposal takes its key away"
}
},
"required": [
@@ -380,7 +380,7 @@
"description": "a node seat on one node"
}
],
"description": "who holds which seat on which node, composed from every node's placement"
"description": "who holds which seat on which node, composed from every node's assignments"
}
],
"defs": {
@@ -423,14 +423,14 @@
},
"mesh-wide": {
"type": "object",
"description": "the whole mesh's settings layer of the module's placement"
"description": "the whole mesh's settings layer of the module's assignments"
},
"has-mesh-wide": {
"type": "boolean"
},
"layer": {
"type": "object",
"description": "this node's settings layer of the module's placement"
"description": "this node's settings layer of the module's assignments"
},
"has-layer": {
"type": "boolean"
@@ -580,9 +580,9 @@
"public-key"
]
},
"Placement": {
"Assignments": {
"type": "object",
"description": "one node's placement assembled",
"description": "one node's assignments assembled",
"properties": {
"v": {
"type": "integer"
@@ -685,8 +685,8 @@
"type": "object"
},
"whole": {
"$ref": "#/defs/Placement",
"description": "the node's whole placement, for a seed"
"$ref": "#/defs/Assignments",
"description": "the node's whole assignments, for a seed"
},
"decided": {
"$ref": "#/defs/NodeDecided"
@@ -903,9 +903,9 @@
"state"
]
},
"PlacementEvent": {
"AssignmentsEvent": {
"type": "object",
"description": "what each placement event carries",
"description": "what each assignments event carries",
"properties": {
"proposal": {
"$ref": "#/defs/Proposal"
@@ -915,7 +915,7 @@
"items": {
"type": "object"
},
"description": "for placement-changed, by node the revisions before and after and the modules added, removed or changed"
"description": "for assignments-changed, by node the revisions before and after and the modules added, removed or changed"
},
"warrant": {
"type": "object",
@@ -940,7 +940,7 @@
},
"ended": {
"type": "string",
"description": "for placement-withdrawn, why it ended"
"description": "for assignments-withdrawn, why it ended"
}
},
"required": [