Files
mesh-delivery/modules
jschoubben ade6a28281 Checker: a check judging its step's end is judging, not lost, so checker_ask_again no longer ends a check about to pass (issue 1721)
mesh-catalog #562's step passed on shanks at 10:52:16Z and its end was heard at 10:52:17Z (its own watch was deaf;
HeardEnds read it at the nudge of that same step end). The checker was judging it (kept verdicts, composition) when
checker_status, reading only the steps state, named it lost: no step runs and the newest one ended. checker_ask_again,
called on that at 10:52:27Z, ended the judging (context canceled) and the check ran whole again, passing at 11:00:16Z.
No step end was lost; the read tools could not tell judging from lost.

The running check now writes, in its state asks (already its own, by verdict key), the step whose end it heard and
judges, and since when; its next ask or its end clears it. checker_status names such a candidate under judging, not
lost, and checker_ask_again refuses it. A judging older than the step bound counts as lost (the checker that heard it
stopped). State on the bus, written on the step-end event; no timer.

Quick fix: a grace time after a step's end in lostWhy. Thorough fix (chosen): the checker says on the bus what it
judges, so the read side never guesses; a grace would misname any judging longer than it (a composition wait).

Test: a row in TestACheckWhoseAskJudgedNothingIsAskedAgainOrRead holds the composition and reads status and
ask-again while the step's end is judged; without the fix it names the check lost and the ask again fails it.
2026-10-30 12:04:29 +01:00
..