Expand description
The dev session loop: watcher events → classification → coalescing → builds → candidate pushes, around ONE wait.
Ruling B, structurally: when no quiet deadline is armed the loop waits
in a BLOCKING recv() — zero-edit idle admits zero timer work. The
only bounded wait in the loop is the semantic edit-quiet deadline,
armed exclusively at the TimerChoke — the named debounce choke
point — in response to an observed relevant event, and its expiry
starts already-known dirty work through the coalescer; nothing here
inspects the filesystem to discover whether work exists. The
cfg(test) counter on the choke is R6’s zero-edit idle authority.
Structs§
- Session
- One dev session’s loop state.
- Timer
Choke - THE timer-admission choke point: the only place the loop converts an
Directive::ArmQuietDeadlineinto a real bounded wait. The counter is the R6 zero-edit-idle authority: established RUNNING CURRENT, held idle, it reads zero.
Enums§
- Loop
Input - Everything that can wake the session loop. The watcher callback and the build worker send these; the loop is the only receiver.
- Session
Exit - Why the session ended. Every variant is terminal and loud.
Traits§
- Session
Effects - The effects the loop commands; the real implementation snapshots,
builds, and pushes over S1 — tests record and script. Every method is
commanded by exactly one
Directive(or the halt paths).