From e78c84900276303ef7960896297332843a29507c Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 10 Sep 2026 21:04:01 +0200 Subject: [PATCH] catalogue: a provider that names a provision and says nothing is not the answer servedOnThisMachine stopped at the first module whose `serves` mentioned the provision, even when that entry was empty and there was therefore no fact to give a consumer. here() had always kept looking in that case, and a set where one module names a provision without describing it and another describes it is exactly where the difference shows. Restore the search. Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF --- internal/catalogue/declaration.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/catalogue/declaration.go b/internal/catalogue/declaration.go index 07f4a13..7fd0416 100644 --- a/internal/catalogue/declaration.go +++ b/internal/catalogue/declaration.go @@ -801,7 +801,10 @@ func (r Resolution) servedOnThisMachine(provision string, with Rendering) (map[s } serves := ServedOn(m, provision, with.Ports[m.Module]) if len(serves) == 0 { - return nil, false, nil + // It named the provision and said nothing about it, which is the same as not answering: + // there is no fact for a consumer to be given. Another module in the set may still have + // one, so keep looking rather than concluding from the first. + continue } settled, err := Settle(serves, with.Settings[m.Module]) if err != nil {