Skip to main content

Module debounce

Module debounce 

Source
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§

BuildGeneration
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.