Skip to content

v0.3.0

Latest

Choose a tag to compare

@sx4im sx4im released this 30 Sep 12:36
· 1 commit to main since this release

Added

  • Deterministic UUID Generation: Added Rng.uuid() and SimEnv.uuid(), generating RFC 4122 v4 UUIDs deterministically from the seeded PRNG.
  • Settle Outcome Visibility: Simulator.settle() now returns Promise<SchedulerRunResult>, reporting { completed: boolean, steps: number } so scenarios can verify whether the event heap reached quiescence.
  • Active Network Configuration Seam: Added getConfig() method to SimNetworkLike, BasicNetwork, and SimNetwork, and exposed config inside NetworkContext.

Fixed

  • In-Flight Partition Drops: SimNetwork and BasicNetwork now check partition status at delivery time as well as send time, ensuring in-flight packets are dropped if a partition began while the packet was in transit.
  • Post-Settlement Invariant Evaluation: expectInvariant now evaluates immediately against sim.getWorld() when registered after the event queue has already drained, eliminating silent false-positives.
  • Failure Capsule Configuration Accuracy: Simulator.configSnapshot() now extracts the active network configuration from net.getConfig?.(), ensuring that custom drop/duplicate probabilities are accurately captured in failure capsules.
  • Scheduler Past-Time Event Guards: Scheduler.schedule() throws early if an event timestamp is in the past (time < clock.now()), naming the offending timestamp and preventing heap ordering corruption.
  • Async Continuation Rejection Handling: Scheduler.run() captures asynchronous Promise rejections in continuations, draining microtasks and surfacing errors cleanly through the simulation loop rather than triggering process-level unhandled rejections.
  • PRNG Zero-State Validation: Rng.setState() validates that at least one state word is non-zero, preventing xoshiro256** from collapsing into an absorbing zero state.
  • CRDT Harness Anti-Entropy Convergence: Added partition heal anti-entropy synchronization in examples/crdt/harness.ts to ensure eventual consistency verification runs cleanly.
  • CLI Sweep Input Validation: chronos sweep validates that --seeds is a positive integer, rejecting negative or non-numeric arguments with a descriptive error.