/**
 * Current-code invariants asserted (2026-04-21, ses_006 Phase 1):
 *
 *   - `canExecute(runId)` on an unknown runId returns true (no breaker
 *     means no constraint).
 *   - `recordFailure(runId)` lazily creates a breaker entry in `closed`
 *     state for unknown runIds; `recordSuccess(runId)` is a no-op when
 *     no entry exists.
 *   - Consecutive failures: after `failureThreshold` calls in a row
 *     without intervening success, `state` → `open`, `trippedAt` set,
 *     single `breaker_tripped` event.
 *   - In `open` state, `canExecute` returns false until `resetTimeoutMs`
 *     has elapsed since `trippedAt`; at that point it transitions to
 *     `half_open`, emits `breaker_half_open`, and returns true.
 *   - In `half_open`, `canExecute` keeps returning true (the probe is
 *     allowed more than once) until the next `recordSuccess` closes the
 *     breaker or the next `recordFailure` re-trips it.
 *   - `recordSuccess` in `half_open` → `closed`; emits
 *     `breaker_probe_success` then `breaker_reset` (two events, in
 *     that order).
 *   - `recordFailure` in `half_open` → `open`; emits
 *     `breaker_probe_failure` then `breaker_tripped` (two events).
 *     The `consecutiveFailures` count carries over (not reset by the
 *     half-open probe cycle).
 *   - `recordSuccess` in `closed` resets `consecutiveFailures` to 0 and
 *     updates `lastSuccessAt`; emits nothing.
 *   - `recordSuccess` while `open`: logs a warning, does NOT change
 *     state (behaviour is "discarded"); emits nothing.
 *   - `recordFailure` while `open`: no additional events; state stays
 *     open (consecutive counter does NOT advance from `recordFailure`
 *     while open in the current implementation either — see test).
 *   - `reset(runId)` forces the breaker to `closed` regardless of prior
 *     state; emits `breaker_reset`; clears `consecutiveFailures` and
 *     `trippedAt` but preserves `lastFailureAt` / `lastSuccessAt`.
 *   - `listTripped()` returns snapshots for every breaker in `open` or
 *     `half_open`; closed breakers are excluded.
 *   - Breaker entries are keyed per-`RunId`; state does not leak across
 *     runs. No per-tenant dimension (design.md §2.1 aspirational).
 */
export {};
//# sourceMappingURL=breaker.test.d.ts.map