From 6caa471ed0321a43e548226bf67de6f970c0f7d7 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 7 Oct 2026 20:47:09 +0200 Subject: [PATCH] Issue 296: the refused step logged and saved on every tick --- .../01-diagnosis.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/04-ISSUES/296-a-plans-clock-restarted-at-every-save/01-diagnosis.md b/04-ISSUES/296-a-plans-clock-restarted-at-every-save/01-diagnosis.md index 3c48b59d..a70a6dc6 100644 --- a/04-ISSUES/296-a-plans-clock-restarted-at-every-save/01-diagnosis.md +++ b/04-ISSUES/296-a-plans-clock-restarted-at-every-save/01-diagnosis.md @@ -32,6 +32,11 @@ time, a new revision, and a `plan-moved` event on the bus (ADR 0239) about a pla a busy mesh, with outcomes arriving for other repositories' builds as well as the 30-second timer, that meant a save every few seconds. +The same loop has a second form of this. A plan can have a step refused, for example because builds on +a machine are waiting for their own gate. When that happens, the loop logged the refusal and saved the +plan with the same "tried again" note on every tick. The controller's log showed one line, word for word +the same, every 30 seconds for each such plan. + The write was not needed. Nothing reads `updated` as a heartbeat, and the save is not what keeps a plan alive. The tier stamp, the revision check and the build records do not depend on a save that changes nothing. @@ -47,3 +52,5 @@ nothing. functions, so the line and the condition cannot disagree about a plan. - The loop compares the plan before and after each step and saves only when they differ. The fields the store stamps itself are left out of that comparison. +- A refused step is logged and saved only when its note is new. The refusal's wording called the gated + walk a "release plan", a name the glossary retires; it now says "walk".