Files
pad/internal
xarmian db7a9317ed fix(events): two mechanisms that were each right alone (BUG-2736)
Codex round 20, asked to check the accumulated fixes in COMBINATION rather
than one at a time. Both findings are interactions, which is what that angle
is for.

A STRAGGLER ERASED THE COUNTER-BACKWARDS FLOOR. The straggler drop reused the
same argument an epoch change uses, which CLEARS the floor — but a lower
generation inside the window is not proof of a new space; that is precisely
the question the window exists to defer. The sequence: a counter-backwards
reset raises the floor to 100, a straggler clears it, bare traffic repopulates
from 51, and a client resuming from 99 is served later ids as though coverage
were continuous, silently skipping 51..99.

The boolean is now three named intents — clear, raise, keep — because the
third had no way to spell itself and so took the wrong branch silently. Each
call site now says which it means.

A WRONG-TYPED EPOCH KEY DEFEATED THE RECOVERY WRITTEN FOR A CORRUPTED ONE.
Round 11 rotated an epoch key holding a bad VALUE; a bare GET on a key holding
a list raises WRONGTYPE and aborts the script before that branch can run, so
every phase-2 publish failed until someone deleted the key by hand. The script
checks TYPE first.

THE MUTATION MATRIX EARNED ITS PLACE TWICE HERE. The first version of the
wrong-type test passed with the TYPE check deleted: the script's id == 1
branch SETs the epoch unconditionally, and SET replaces a key of any type, so
on a fresh counter the wrong-typed key was overwritten before the GET was
reached and the branch under test was never entered. The test now publishes
once first, and the mutation fails it. The same matrix then found a DEL in the
recovery branch that no test could distinguish — redundant for the same reason
SET replaces any type — so it is gone rather than left as a line nothing can
justify.

Claude-Session: https://claude.ai/code/session_01JVDBKbgn3Xt7ndW1YoYd8X
2026-08-22 21:55:00 +00:00
..
2026-03-26 01:52:36 +00:00