Ralph Loop 2026-03-16: Replay Action Coverage
Change
Added sleeve-coverage diagnostics to replay evaluation:
research.run_replay.evaluate()andresearch.search.evaluate_params()now report how many strategy actions land on: -eventful_rows-moved_rows-large_move_rowsresearch.statusandresearch.discord_statusnow surface that action coverage alongside the existing replay-input move coverage.research/README.mddocuments 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:
eventful_rows=1moved_rows=28large_move_rows=28large_move_untagged_rows=28eventful_action_coverage=0/1moved_action_coverage=1/28large_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.