Offer no hand start for a walk that is only waiting its turn (issue 529)
mesh/merge-gate pass: builds mesh-controller → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/529-a-waiting-walk-is-answered-or-named delivered: every member is delivered

A hand start there would skip its group's order; point at it only for a
walk nothing holds, and say why nothing holds it.
This commit is contained in:
2026-10-12 11:34:54 +02:00
parent ed037784e2
commit b03ec3b64e
2 changed files with 34 additions and 7 deletions
+14 -5
View File
@@ -89,20 +89,29 @@ func waitingSaid(p inventory.Plan, lines []stalledLine) string {
if len(lines) == 0 {
return waitingNote(p)
}
var held, other []string
var held, unheld, other []string
for _, l := range lines {
if l.State == "held" {
switch l.State {
case "held":
held = append(held, l.Says)
} else {
case "unheld":
unheld = append(unheld, l.Says)
default:
other = append(other, l.Says)
}
}
if len(held) > 0 {
switch {
case len(held) > 0:
return fmt.Sprintf("published; its walk waits for %s's word, and a delivery it carries is held for a person: %s",
p.Delivery.Awaits, strings.Join(held, "; "))
case len(other) > 0:
// Not at its turn: it goes when its turn comes. A hand start here would skip its group's order (review of
// novox/hq issue 529), so none is offered.
return fmt.Sprintf("published; its walk waits for %s's word: %s", p.Delivery.Awaits, strings.Join(other, "; "))
}
// Held by nothing: nothing will give it its word, so the hand start is the way on.
return fmt.Sprintf("published; its walk waits for %s's word: %s — `plans go %s --why …` starts it by hand",
p.Delivery.Awaits, strings.Join(other, "; "), p.ID)
p.Delivery.Awaits, strings.Join(unheld, "; "), p.ID)
}
// letGo gives a waiting walk its word: by the delivery's owner, or a person. The next advance asks its