Lockstep.Strategy.POS (Lockstep v0.1.0)

Copy Markdown View Source

POS (Partial-Order Sampling). On every step, with probability :resample_prob, re-randomize the priorities of all currently-ready processes; otherwise keep the current priorities. Then run the highest-priority enabled process.

Conceptually a "noisy PCT": where PCT only demotes priorities at d - 1 precommitted change points, POS continually shuffles. The Fray paper (Yuan et al., OOPSLA 2025, https://arxiv.org/abs/2501.12618) reports POS finding bugs across Kafka, Lucene, and Guava in fewer iterations than PCT for many real-world races.

Options

  • :seed -- RNG seed (required)
  • :resample_prob -- probability of resampling priorities at each step. Default 0.5. The Fray paper finds 0.5 a sensible default across workloads.

No :max_steps or bug-depth precommitment, unlike PCT.