Ralph Loop 2026-03-16: Eventful Reversal Candidate Review Mirror
Change
Mirrored the politics_eventful_reversal sleeve into research/candidate_review.py.
Before this change, candidate review only knew about the older threshold, contrarian, process-watch, economics-band, and politics-midprice sleeves. Live rows that matched the active replay sleeve could therefore show up as no_semantic_sleeve_match or get attributed to a less relevant fallback sleeve.
Why it mattered
research/latest_state.json showed the persisted replay baseline concentrated in politics_eventful_reversal, while candidate review still reported 15 unmatched research candidates and no review candidates. That mismatch meant the live packet was not describing the same sleeve surface that replay and search were actually optimizing.
Validation
pytest -q tests/test_candidate_review.py- Result:
16 passed - Live smoke check:
- Command: built a candidate-review packet from
data/unicorn.dbover the latest 6 runs with the current deployment gate blockers. - Result:
top_research_candidate_sleevesnow includespolitics_eventful_reversal=3. - Result: those rows now carry local blockers like
pair_eventful=falseandabs_move_bps<100.0instead of appearing as semantic mismatches.
Observed effect
This did not create new review candidates by itself. The current live bottleneck remains lack of paired eventful context on the latest rows, not missing sleeve attribution.