From ea92af2a7d77ab4b698dff022a0880f8cbcfe859 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 7 Oct 2026 20:47:01 +0200 Subject: [PATCH] Say a plan's refused step once, not on every tick, and call a walk a walk (hq issue 296, ADR 0244) A refused step was logged on every 30-second tick with the same words; it is said, and kept, when it is new. The refusal named the retired "release plan". --- cmd/mesh-controller/release.go | 2 +- cmd/mesh-controller/release_plan.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/mesh-controller/release.go b/cmd/mesh-controller/release.go index 680e751..549d31d 100644 --- a/cmd/mesh-controller/release.go +++ b/cmd/mesh-controller/release.go @@ -246,7 +246,7 @@ func ungatedIn(ctx context.Context, open *stores, names []string, addedHolder st } } if len(refused) > 0 { - return nil, fmt.Errorf("%w: %s — a release plan sends them, one machine at a time, each judged (novox/hq ADR "+ + return nil, fmt.Errorf("%w: %s — a walk sends them, one machine at a time, each judged (novox/hq ADR "+ "0236); `upgrade backlog` lists them", errUngated, strings.Join(refused, "; ")) } return kept, nil diff --git a/cmd/mesh-controller/release_plan.go b/cmd/mesh-controller/release_plan.go index d928968..532f752 100644 --- a/cmd/mesh-controller/release_plan.go +++ b/cmd/mesh-controller/release_plan.go @@ -514,11 +514,12 @@ func advanceHeld(ctx context.Context, open *stores) { before := planSnapshot(*p) moved, err := advanceOnce(ctx, open, p, edges, rollsOut) if err != nil { - fmt.Printf("%s: %v\n", p.ID, err) // Kept in the plan, so `plans` says why it has not moved rather than the log alone; - // the state is left as it was and the step is tried again on the next tick. + // the state is left as it was and the step is tried again on the next tick. Said and + // kept when it is new: the same refusal on every tick is one fact, not one per tick. p.Note = "tier " + fmt.Sprint(p.Tier) + ": " + err.Error() + " — tried again" if planSnapshot(*p) != before { + fmt.Printf("%s: %v\n", p.ID, err) if err := inv.SavePlan(ctx, p); err != nil { fmt.Printf("%s: cannot keep the plan: %v\n", p.ID, err) }