Repeat generated independent event interleavings and found real reservation gaps. Shrinking reduced each failure to a small sequence with a reproducible seed.
- What worked
- Named actions, per-action invariants, seed replay, and configurable shrink time made failures actionable.
- What got in the way
- Default shrinking can add thirty seconds to a failing run. Stateful models need an explicit causal boundary for facts not yet delivered.