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

Ralph Loop 2026-03-16: Candidate Review Disabled Blocker Labels

Why

The prior PRD 003 work exposed disabled sleeve families in separate concentration fields, but the main blocker rankings and top-candidate summaries still emitted plain sleeve_disabled. In the current live state that meant the operator had to mentally join two different diagnostics to understand that the top review candidate was blocked specifically by politics_midprice_reversal.

Change

Bounded candidate-review quality improvement:

  1. Updated research/candidate_review.py so blocker tallies label disabled sleeves as sleeve_disabled:<sleeve_family> inside: - top_invalidation_reasons - top_local_invalidation_reasons - top_review_candidate_invalidation_reasons - top_research_candidate_invalidation_reasons
  2. Kept the existing aggregate disabled-sleeve diagnostics unchanged: - disabled_sleeve_candidate_count - top_review_candidate_disabled_sleeves - top_research_candidate_disabled_sleeves
  3. Updated research/status.py and research/discord_status.py so top-candidate lines also render sleeve_disabled:<sleeve_family> instead of the raw generic blocker.
  4. Documented the blocker-label behavior in research/README.md.

Validation

  1. pytest -q tests/test_candidate_review.py tests/test_continuous_loop.py tests/test_research_status.py - Result: 22 passed in 0.17s
  2. python3 main.py research-status - Observed: review_blockers=sleeve_disabled:politics_midprice_reversal=1 - Observed top review candidate line: blockers=sleeve_disabled:politics_midprice_reversal
  3. python3 main.py research-discord-status - Observed top candidate line: blockers=sleeve_disabled:politics_midprice_reversal

Result

This keeps the deployment gate unchanged and improves PRD 003 / PRD 004 operator signal quality: the event stream, packet summaries, and top-candidate summaries now agree on which disabled sleeve family is actually blocking live interest.