Skip to content

feat(debug): add reverse time travel - #13

Merged
pocky merged 1 commit into
mainfrom
feature/F006-debug-rr-reverse--time-travel-debugging
Jun 24, 2026
Merged

feat(debug): add reverse time travel#13
pocky merged 1 commit into
mainfrom
feature/F006-debug-rr-reverse--time-travel-debugging

Conversation

@pocky

@pocky pocky commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add rr-backed reverse debugging for the debug extension, including record/replay, reverse stepping, watchpoints, trace listing/deletion, and origin-finding workflows.
  • Gate rr-specific MCP tools behind [debug.record] backend = "rr" so unsupported or unconfigured hosts do not advertise unavailable reverse-debug capabilities.
  • Persist and prune trace metadata with bounded retention, cleanup handling, and structured unsupported/error payloads instead of transport failures.
  • Expand user-facing docs, protocol tests, fixture coverage, and e2e/functional tests for the new reverse-debug workflow.

Changes

Configuration and Runtime Gating

  • .tower/config.toml: Add local [debug.record] rr trace retention and recording timeout settings.
  • crates/core_engine/src/adapters/config/debug.rs: Parse, validate, serialize, and test [debug.record] configuration with rr-only backend support and safe relative trace directories.
  • crates/core_engine/src/adapters/daemon/engine.rs: Filter rr-specific debug tools from the bundled manifest unless rr recording is configured.
  • Makefile: Reorder default extension build list to keep the debug extension included in default extension installs.

Debug Extension

  • extensions/debug/extension.toml: Advertise rr-specific record/replay, reverse execution, watchpoint, trace, and origin tools.
  • extensions/debug/src/main.rs: Initialize rr runtime support, route rr tool dispatch, and preserve fixture behavior for reverse-debug tests.
  • extensions/debug/src/protocol.rs: Add record/replay configuration, schema declarations, and rr tool protocol metadata.
  • extensions/debug/src/rr.rs: Add rr preflight detection, bounded record subprocess execution, fixture recording support, output capture, timeout handling, and trace registration.
  • extensions/debug/src/traces.rs: Add trace identifiers, metadata persistence, retention policy, pruning, lookup, completion, and safe deletion.
  • extensions/debug/src/session.rs: Add replay-backed session support, reverse continue, step back, watchpoints, replay seek targets, and replay session metadata.
  • extensions/debug/src/tools.rs: Add public MCP handlers and DTOs for record, replay, reverse_continue, step_back, watchpoint, traces, delete_trace, find_origin, and record_and_find_origin.
  • extensions/debug/src/origin.rs: Add origin-finding workflows over replay sessions, including watchpoint-driven reverse execution and record-and-find orchestration.
  • extensions/debug/src/eval_at.rs: Share captured-variable serialization helpers with origin capture while preserving eval-at behavior.
  • extensions/debug/src/types.rs: Add structured runtime failure DTOs for tool-facing error payloads.

Tests and Fixtures

  • crates/core_engine/tests/extension_debug_e2e.rs: Add rr tool declaration, gating, DTO, cleanup, fixture-backed reverse-debug, real-rr skip/pass, and parallel stress coverage.
  • crates/core_engine/tests/functional_debug_reverse_mcp.rs: Add functional MCP coverage for public record/replay/origin workflows and structured no-prior-write results.
  • crates/extension_protocol/tests/protocol_tests.rs: Update protocol expectations for the expanded debug tool catalog and rr gating behavior.
  • extensions/debug/tests/eval_at_contract.rs: Preserve eval-at captured-variable contract coverage after helper extraction.
  • extensions/fixtures/debug_adapter/src/main.rs: Add scripted record/replay fixture scenarios, deterministic reverse-debug events, cleanup tokens, and side-channel cleanup reporting.
  • extensions/fixtures/debug_adapter/tests/eval_at_scenario.rs: Add fixture scenario selection, cleanup, ordering, and JSON event contract coverage.

Documentation and Project Knowledge

  • AGENTS.md: Document rr-backed reverse-debug MCP tools and their configuration-dependent availability.
  • README.md: Update feature and documentation summaries for rr-backed reverse debugging.
  • docs/README.md: Refresh documentation index entries for reverse-debug support.
  • docs/extensions.md: Document debug extension reverse-debug behavior and tool exposure.
  • docs/getting-started.md: Add rr record/replay setup guidance.
  • docs/mcp-tools.md: Add MCP reference entries for rr record/replay, reverse execution, trace, and origin tools.
  • docs/user-guide/debug-sessions.md: Add user guidance for rr-backed reverse-debug workflows.
  • .zpm/kb/architecture/journal.wal: Record architecture decisions and conventions for debug eval-at and reverse-debug implementation context.
  • .zpm/kb/feedback/journal.wal: Record reusable feedback rules for trace deletion, rr output capture, and reverse-debug cleanup tests.

Test plan

  • Run cargo fmt --check
  • Run cargo clippy --workspace --all-targets -- -D warnings
  • Run cargo build --workspace --bins
  • Run cargo test --workspace

Closes #12


Generated with awf commit workflow

- `.tower/config.toml`: Configure debug record and replay support
- `.zpm/kb/architecture/journal.wal`: Record architecture decisions for reverse debugging
- `.zpm/kb/feedback/journal.wal`: Record feedback rules for debug implementation
- `AGENTS.md`: Document reverse debugging MCP tools
- `Makefile`: Add reverse debug workflow targets
- `README.md`: Document time-travel debugging capabilities
- `crates/core_engine/src/adapters/config/debug.rs`: Add rr record and replay configuration
- `crates/core_engine/src/adapters/daemon/engine.rs`: Gate rr debug tools by runtime support
- `crates/core_engine/tests/extension_debug_e2e.rs`: Cover rr-backed debug tool discovery
- `crates/core_engine/tests/functional_debug_reverse_mcp.rs`: Add reverse debugging MCP tests
- `crates/extension_protocol/tests/protocol_tests.rs`: Validate reverse debug protocol schemas
- `docs/README.md`: Add reverse debugging documentation links
- `docs/extensions.md`: Document debug extension rr support
- `docs/getting-started.md`: Add setup guidance for debug tracing
- `docs/mcp-tools.md`: Document reverse debug MCP tools
- `docs/user-guide/debug-sessions.md`: Explain record and replay debug sessions
- `extensions/debug/extension.toml`: Expose rr reverse debug tool metadata
- `extensions/debug/src/eval_at.rs`: Integrate eval-at with trace evidence capture
- `extensions/debug/src/main.rs`: Route rr record and replay tool handlers
- `extensions/debug/src/origin.rs`: Add origin-finding reverse debug workflow
- `extensions/debug/src/protocol.rs`: Add reverse debug protocol DTOs
- `extensions/debug/src/rr.rs`: Add rr runtime preflight and recorder support
- `extensions/debug/src/session.rs`: Support replay sessions and reverse execution
- `extensions/debug/src/tools.rs`: Add rr reverse debug tool definitions
- `extensions/debug/src/traces.rs`: Add persisted trace metadata store
- `extensions/debug/src/types.rs`: Add trace and reverse debug types
- `extensions/debug/tests/eval_at_contract.rs`: Cover eval-at trace contract behavior
- `extensions/fixtures/debug_adapter/src/main.rs`: Add scripted reverse debug scenarios
- `extensions/fixtures/debug_adapter/tests/eval_at_scenario.rs`: Cover fixture eval-at scenarios

Closes #12
@pocky
pocky marked this pull request as ready for review June 24, 2026 21:12
@pocky
pocky merged commit 85d81d5 into main Jun 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

F006: Debug rr Reverse / Time-Travel Debugging

1 participant