# Version 0.1.0 boundaries

Pure decision library: time is injected with every call, so nothing reads a
clock, sleeps, or retries on its own. Wiring a real timer loop is the
caller's; the library guarantees the decisions that loop should honor.

Single-instance, in-memory, no coordination: nothing here limits across
processes; a distributed limiter needs a shared store and is out of scope.

Float arithmetic: token bucket and GCRA compute in doubles. On dyadic
parameters (the tested case - eighths of a second, quarter-token rates,
integer capacities) both paths are exact and the equivalence is bitwise;
with non-dyadic values the two round differently at the admission boundary,
which the equivalence tests document rather than hide.

Window semantics: the sliding window holds (now - window, now] - an event
ages out exactly at now - window. Weights are whole numbers on windows and
continuous on buckets. The fixed window's boundary burst (up to 2x across a
boundary) is demonstrated by test, not hidden.

SplitMix64 is deterministic and non-cryptographic; a seeded jitter table is
reproducible by design, which is the point and the limit.

The CLI is JS-only; the library supports js, wasm, wasm-gc and native.
