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"`