pam ▸ docs/generated/ralph_loop_2026-03-16_replay_action_coverage.md
updated 2026-03-28

Ralph Loop 2026-03-16: Replay Action Coverage

Change

Added sleeve-coverage diagnostics to replay evaluation:

  1. research.run_replay.evaluate() and research.search.evaluate_params() now report how many strategy actions land on: - eventful_rows - moved_rows - large_move_rows
  2. research.status and research.discord_status now surface that action coverage alongside the existing replay-input move coverage.
  3. research/README.md documents the new distinction between scanner misses and sleeve misses.

Why

PRD 001 and PRD 002 both need cleaner attribution. We already knew how many large later moves were never tagged eventful. We did not know whether the strategy still ignored the rows that did move or were tagged eventful. That made “no trade” hard to diagnose.

Validation

Command:

pytest -q tests/test_research_search.py tests/test_research_status.py tests/test_prepare_replay.py

Result:

18 passed in 0.55s

Smoke checks:

python3 main.py research-status
python3 main.py research-discord-status

Current bottleneck observed

From the current persisted replay snapshot:

  1. eventful_rows=1
  2. moved_rows=28
  3. large_move_rows=28
  4. large_move_untagged_rows=28
  5. eventful_action_coverage=0/1
  6. moved_action_coverage=1/28
  7. large_move_action_coverage=1/28

Interpretation:

The scanner is still the dominant bottleneck because every large move remains untagged eventful. But the new action-coverage readout also shows the sleeves barely touch realized movers even when replay rows exist. The next bounded improvement should target eventful calibration first, then use this coverage line to confirm whether sleeve reach improves afterward.