Expand description
The R2 burst-coalescing state machine: relevant filesystem events open an edit burst; one resettable semantic quiet deadline defines the burst; expiry starts exactly one build of the latest content snapshot; edits during a build make the completing candidate stale (last write wins) and schedule exactly one follow-up build.
The machine is PURE: it owns no thread, no channel, and no timer. Time
enters only as now arguments (the injected clock R6’s determinism
observations require), and every effect leaves as a Directive the
caller executes. The ONE place a real timer may be armed is the
caller’s handling of Directive::ArmQuietDeadline — the named
debounce choke point the Ruling B tripwire admits — and expiry starts
already-known dirty work; it never inspects the filesystem to discover
whether work exists.
Structs§
- Build
Generation - Monotonic label for one build of one content snapshot. Stale build completions are recognized by generation, never by timing.
- Coalescer
- The coalescing machine. See the module doc for the laws it encodes.
Enums§
- Directive
- What the caller must do after feeding the machine one input.