Say nothing serves a call only for the bus's own no-responders, never for a tool's error that mentions 503 (issue 1529)
mesh/merge-gate head d295fd4250a7 merged into trunk 18260ce9beca — pass, with a note: builds mesh-tools, node-tools (+40 dependent(s)) → ace, g14, novox, s…
mesh/repo-check head d295fd4250a7 merged into trunk 18260ce9beca — pass: its merge-check.sh passed
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1792534538429799487 (novox/mesh-tools at e0fadc43 into main, d…

This commit is contained in:
2026-10-21 00:02:34 +02:00
parent 18260ce9be
commit d295fd4250
3 changed files with 37 additions and 3 deletions
+4 -2
View File
@@ -7,6 +7,8 @@ import (
"regexp"
"strings"
"github.com/nats-io/nats.go"
"github.com/novox/mesh-tools/node-tools/internal/bus"
)
@@ -109,7 +111,6 @@ func subjectListed(name, node string, l *Listing) string {
}
var (
noResponders = regexp.MustCompile(`(?i)no responders|503`)
// The bus's own two refusals, by their whole phrase. "authorization" alone also matched a tool's own
// answer that merely mentions the word — the runtime refusing a state value with an Authorization
// header (novox/hq ADR 0201) read as "this account may not call", which sent the reader the wrong way.
@@ -127,7 +128,8 @@ func whyItFailed(key string, err error) string {
}
msg := err.Error()
switch {
case noResponders.MatchString(msg):
// By type, not text: a tool's own error that mentions 503 is the tool's answer (issue 1529).
case errors.Is(err, bus.ErrNoResponders) || errors.Is(err, nats.ErrNoResponders):
extra := ""
if strings.HasPrefix(key, "seat:") {
extra = ", or nothing holds that seat"