Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ All notable changes to Stepfork are recorded here. The format follows

## [Unreleased] - v0.2.0

Automatic failure minimization using dependency-aware delta debugging.
Automatic failure minimization and fork-at-step debugging with optional overrides.

### Added

Expand All @@ -20,6 +20,19 @@ Automatic failure minimization using dependency-aware delta debugging.
and iteration limits.
- Comprehensive unit tests, integration tests, and CLI tests for minimization.
- Complete documentation in `docs/minimize.md` and updated CLI reference.
- **Fork-at-step** debugging via `stepfork fork` command that creates new traces
at specific execution points while preserving all valid history before the fork.
- Fork points can be specified by step number (`--at-step N`) or event ID
(`--at-event ID`).
- Typed override system (Python API only) to modify tool_result and llm_response
outputs in forked traces via `OverrideSpec`.
- Provenance tracking with `ForkInfo` metadata linking forked traces to parent
trace, fork point, timestamp, and applied overrides.
- Structural validation ensures no broken parent dependencies and maintains
trace integrity.
- 43 fork-specific tests covering fork engine, overrides, edge cases, and
integration scenarios.
- Complete documentation in `docs/fork.md` with CLI and Python API examples.

### Changed

Expand All @@ -32,6 +45,12 @@ Automatic failure minimization using dependency-aware delta debugging.
- Delta debugging uses binary search with dependency preservation. Very large
traces (1000+ events) may require significant replay attempts.
- Timeout handling uses SIGALRM on Unix systems; Windows support is limited.
- Fork-at-step overrides are only available via Python API, not CLI.
- Fork creates modified traces but does not automatically continue execution from
the fork point; replay must be invoked separately.
- Overrides can only modify outputs (tool_result, llm_response), not inputs
(tool_call arguments or llm_request prompts).
- No automatic divergence detection when replaying forked traces with overrides.

## [0.1.0a6] - 2026-10-10

Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ Compare β†’ Define Expected Behavior β†’ Export pytest β†’ Verify Fix
you want frozen with `@trace_tool` or `llm_request`.
- **Behavioral diff** compares a buggy run against a corrected run and reports
exactly which behaviors changed.
- **Failure minimization** automatically finds the smallest trace that still
reproduces a failure via dependency-aware delta debugging.
- **Fork-at-step** creates new traces at specific execution points with optional
output overrides for "what-if" debugging scenarios.
- **pytest export** turns a recorded failure into a regression test that
asserts the corrected behavior.
- **Best-effort redaction** of known credential-shaped values at record time.
Expand Down Expand Up @@ -421,8 +425,8 @@ bundles, are in [docs/security.md](docs/security.md).

### v0.2 (Current)

- **Failure minimization** - Automatic delta debugging to find minimal traces
- Fork-at-step (planned)
- **Failure minimization** - Automatic delta debugging to find minimal traces ([docs/minimize.md](docs/minimize.md))
- **Fork-at-step** - Create new traces at specific execution points with optional overrides ([docs/fork.md](docs/fork.md))
- Baselines (planned)

### v0.3
Expand Down
Loading
Loading