D211 - The call recorder is the dispatch ring; the crate declaring one is deleted
decided ยท 2026-08-24
orbistoun-trace sat second in the documented dependency
spine and nothing depended on it. Deleted.
What was actually in it
156 lines and three declarations: a CallEvent struct, a
Sink trait with one method, and a CountingSink
holding two atomic counters. Nothing populated the struct, nothing
implemented the trait but the counter, and nothing called any of it.
The fields that looked like unique capability -
thread_id, all six arguments, the return value - were
fields on a struct nothing filled in. Not capture that
would be lost; declarations that would need writing either way.
Why not revive it
The recording that guests actually need got built where the calls
are, in orbistoun-thunk's dispatch path: a fixed-size
atomic ring drained by orbistoun-worker into the
CallTrace a run reports from.
The Sink trait is the one part that cannot
survive the workload. One title makes ninety-nine million calls
through dispatch in twenty seconds. A dynamically dispatched call per
guest call is precisely the "sink that blocks a guest thread has changed
the program it observes" that principle 9 forbids - and the trait's own
doc comment says so, which is the sharpest evidence that it was written
before the volume was known.
The two gaps worth closing are cheaper where the recording already
is. thread_id and the extra fields are more atomics in the
existing ring. A file sink is a drain concern - write
the ring out periodically - not a per-call one, so it needs nothing on
the call path at all.
What was kept
The three gaps, recorded against the recorder that exists rather than
the crate that declared them, in docs/BACKLOG.md. Deleting
the crate without them would have thrown away the only part that was
worth anything: the observation that an interleaved trace with no thread
column cannot be read, and that a bounded ring loses a long run's
ordering after the first 8192 calls.
The spine is six, not seven
core -> elf -> nid ->
mem -> hle -> loader. A
crate in a documented spine that nothing depends on is worse than an
unused crate elsewhere: the spine is the first description of the
workspace anybody reads, and it was claiming a tracing layer that was
not there.