src/window-tracking/AttentionDriverSpecs.md
Turns the reducer's input stream into AttentionModel inputs, holds the model's state, and allocates the
arrival sequences the model compares. Every decision belongs to the kernel; this decides only what each event
MEANS.
The translation is the architecture. The reducer's vocabulary is shaped by where an event came from; the model's by what it says about the user. Four groups:
frontProcessChanged, never a window; an activation
carrying AltTab's own target is already a window namer and needs no readfocusedWindowUnknown, which is a value rather than a silencenoInput. This is the whole point of the vocabulary: physical ordering is not expressible as
attention at all.needsRead.
Measured: a plain activation names no window from ANY source when the app's focused window did not change,
and this is the one hole nothing else fills.The model learns which app is in front from activations. An app that was already frontmost when AltTab
started produced none, so every answer it gave was about a process the model did not think was in front, and
Cmd+inside it moved nothing.syncFrontmost` reads the front app from the model of the world before
translating an answer, which is a correction rather than a claim about the user.