Resolve one node over an Input, its credentials as stand-ins and its settings (issue 1362). Ported from mesh-control 6c2a8d62 planFor. Nothing is made: a pair credential is how it stands (held, to make, only a person's to give, refused), never its value; keepRecorded is left to the caller, who puts the kept manifest in the Catalogue. The bus credential nobody issued and a given own secret under an old key are refused where the controller refuses them, in the rendering (issue 1364).

This commit is contained in:
2026-10-20 06:28:05 +00:00
parent 80fa1a0551
commit 7ba9bcd873
3 changed files with 229 additions and 4 deletions
+2 -2
View File
@@ -124,7 +124,7 @@ func (c *composer) whoResolves(requirement string) (map[string]bool, map[string]
// Why a node could not be resolved, kept rather than raised: one broken node must not stop the rest being described.
refused := map[string]string{}
for _, n := range c.in.sorted() {
plan, err := c.resolution(n.Name)
resolved, err := c.planFor(n.Name)
switch {
case unresolvable(err):
refused[n.Name] = err.Error()
@@ -133,7 +133,7 @@ func (c *composer) whoResolves(requirement string) (map[string]bool, map[string]
// Not a node that does not resolve: a question that went unanswered.
return nil, nil, fmt.Errorf("whether %s answers %q cannot be read: %w", n.Name, requirement, err)
}
for _, m := range plan.Modules {
for _, m := range resolved.Plan.Modules {
for _, offered := range m.Offers() {
if offered == requirement {
on[n.Name] = true