Skip to content

Stepfork v0.1.0a5 - Replay Correctness

This alpha improves replay reporting and behavioral diff readability. It adds no integrations and does not change the .sftrace format.

Changes

  • Frozen replay now compares an entrypoint's final value with the recorded final output when one exists. A different value is reported as divergence even if all instrumented dependency calls matched.
  • The CLI reports execution, dependency matching, and recorded behavior separately. Recorded dependency failures can be reported as reproduced failures when the error type matches.
  • Successful versus raising run diffs align their terminal run events.
  • Replay fingerprints are abbreviated in normal CLI output; use --verbose for full values.
  • Generated pytest tests and documentation state the required installed packages, importable entrypoint, and trace fixture.

Replay does not intercept arbitrary Python side effects such as random calls, time, or unwrapped network access. Final-output comparison cannot detect a side effect that does not change the recorded, redacted final value. Expected regression output remains a value the user reviews and supplies.

Installation

pip install --pre --upgrade stepfork

Requires Python 3.11, 3.12, or 3.13.

Verification

  • Ruff lint and format checks, MyPy, and all 415 pytest tests passed.
  • A fresh Python 3.12 environment installed the built wheel with pytest and both optional extras. All five demos passed using that installed package.
  • An external-directory CLI smoke verified matched and changed final outputs and ran a generated pytest test against the installed wheel.
  • The wheel and source distribution passed twine check.

Feedback

https://github.com/utsab345/stepfork/issues