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

Ralph Loop 2026-03-16: Candidate Review State Blockers

Change

Bounded PRD-003 improvement: candidate-review diagnostics now split blocker tallies by candidate state.

Added fields:

  1. top_review_candidate_invalidation_reasons
  2. top_research_candidate_invalidation_reasons

These sit alongside the existing combined, local, and global blocker tallies. The point is to separate:

  1. live rows that are already review-worthy but blocked by the loop-level deployment gate
  2. rows that are still mostly sleeve-mismatch research candidates

Without this split, a summary dominated by research-candidate sleeve mismatches could hide the fact that review candidates are mainly blocked by global replay confidence.

Files changed

  1. research/candidate_review.py
  2. research/continuous_loop.py
  3. research/status.py
  4. research/discord_status.py
  5. research/README.md
  6. tests/test_candidate_review.py
  7. tests/test_continuous_loop.py
  8. tests/test_research_status.py

Validation

Focused tests:

pytest tests/test_candidate_review.py -q
pytest tests/test_continuous_loop.py -q
pytest tests/test_research_status.py -q

Observed:

  1. 6 passed in tests/test_candidate_review.py
  2. 3 passed in tests/test_continuous_loop.py
  3. 8 passed in tests/test_research_status.py

Operator smoke:

python3 main.py research-status --json | rg -n "top_review_candidate_invalidation_reasons|top_research_candidate_invalidation_reasons" -n -C 1

Observed on March 16, 2026:

  1. research-status --json emitted both new fields in the live packet
  2. the packet still showed deployment_gate_ready: false, so this change did not relax the hard deployment gate

Why this is useful

The current loop is still blocked globally by weak replay metrics. This patch makes that explicit for review candidates while separately showing that the research-candidate pool is dominated by local sleeve mismatch blockers. That is better candidate-review signal quality without changing trading behavior.