From ba4220ad7dc0304138a6f1c3d6cec8823c3be2bd Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 4 Nov 2026 02:26:44 +0100 Subject: [PATCH] Say that the vault's reading of a plan follows a node's rule and is never it (issue 1966) Comments only: AssignmentHands and Rendering.Assigned said a node composing itself hands by the vault's word, which kept a node with no plan from ever making one. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig --- go/catalogue/declaration.go | 4 ++-- go/catalogue/handed.go | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/go/catalogue/declaration.go b/go/catalogue/declaration.go index 0da1418..14878e8 100644 --- a/go/catalogue/declaration.go +++ b/go/catalogue/declaration.go @@ -273,8 +273,8 @@ type Rendering struct { Hands bool Provisioner string // Assigned is, by module, whether the vault judged it handed (AssignmentHands of the plan in its assignment), as the - // vault answered the node composing itself; where it names a module, Handing follows it alone (issue 774). Nil, or a - // module it does not name, is judged by the manifest and the machine, as the composer of the plans does. + // vault answered the node composing itself. Never the rule: the node hands by the manifest, its build and the machine, + // and reads this only to say where the vault disagrees (issue 1966). Nil where the vault said nothing. Assigned map[string]bool } diff --git a/go/catalogue/handed.go b/go/catalogue/handed.go index 2fba9d0..e2853b4 100644 --- a/go/catalogue/handed.go +++ b/go/catalogue/handed.go @@ -233,8 +233,10 @@ func handedBy(m Manifest, archive Built) *Handed { // AssignmentHands is whether a module's value in the seat mesh-provisioner's plans (the assignments mirror's shape, // `{"provisioning": }`) hands its module to the provisioner: Plan.Hands of the plan it carries, false with no -// plan. A value that does not read is an error, never "not handed". The one rule the vault judges `own` by and a node -// composing itself follows (Rendering.Assigned, issue 774). +// plan. A value that does not read is an error, never "not handed". What the vault judges `own` by: the plan is what the +// node's last composition made, so it follows that node's rule (the manifest, its build and the machine) one +// composition later. Never the rule a node composing itself hands by: with no plan yet it would never make one (issue +// 1966); the node reads it only to say where the two disagree (Rendering.Assigned). func AssignmentHands(raw []byte) (bool, error) { var a struct { Provisioning *Plan `json:"provisioning"`