420. The ring is circular, and the trade was false
2026-09-04 - directed
What was done
Made the recorded-call ring circular, so CallTrace::tail
is the last calls the guest made rather than the last 48 of the first
8,192 (D568).
| Title | Calls | Tail before | Tail now |
|---|---|---|---|
| PPSA02664 | 418,253 | #8,144-#8,191 | #419,560-#419,607 |
| PPSA25872 | 7,004,897 | #8,144-#8,191 | #7,053,264-#7,053,311 |
D568 called this a trade and it was not one. The ring's opening has exactly one reader - the halt summary - and it quotes eight entries. So the opening now lives in its own eight-slot record that is never overwritten, and the ring answers the question D154 actually asked. Both sides, for the price of eight atomics. There was never a choice to make, only a check nobody had run.
It paid immediately
PPSA25872's tail is now 48 of 48 calls to the unnamed futex - the function that is 78% of every call this project has ever recorded (D566). Before, that field showed early-boot noise from call eight thousand, and nothing in the report connected the wall to what the guest was actually stuck on.
What wrapping costs
Three readers silently assumed a slot's position was its
sequence. Wrapped, slot 3 may hold call 3 or call 8,195. So a sequence
is stored beside each entry, recorded_calls sorts by it,
last_call takes the highest sequence rather than the
highest slot, and - the one failure a circular ring can cause that a
filling one cannot - a return is written only if the slot still
belongs to that call, since after a wrap a later call owns it
and the answer would be filed against the wrong function.
And the classification still fails
This was done to unblock classifying the 97. Six titles re-run with the window at the fault and all six arguments recorded: one producer attributable, the same one as before.
Third explanation tested and refuted - arg0-only, then
the window, and what is left is the plain reading: the guest
does not pass these answers on. It stores them, tests them, or
drops them. For a function called once whose answer is ignored there is
no evidence anywhere and never will be from a run.
The classification is not blocked on tooling. It is blocked on the guest not caring, and three measurements now say so rather than one guess.
Worth noting about the day
The reaches_end warning added this afternoon is now
effectively unreachable - it fired for PPSA02664 two hours ago and
cannot fire again while the ring is circular. Kept, because what it
would catch is a regression to a filling ring, and it has been watched
failing. A guard that has never fired is the one to distrust; this one
has.