WS3: surface evaluation internals (gap/rvol/per-criterion reasons)

- SetupEvaluationResult.criteria_detail: per-criterion {name,passed,reason}.
- watcher CriteriaEvaluatedEvent now carries gap_pct, relative_volume, status,
  reason, and the per-criterion detail (was only passed/failed names).
- CLI: 'inspect criteria SYMBOL' shows status + gap/rvol + each criterion reason;
  new 'inspect signals' = ready board + per-symbol gap/rvol/status.

Verified on real 2026-06-15 bars: RGNT shows 9/9 with reasons (rvol 26.2x),
'late' explained by the 10:30 ET cutoff. 67/67 tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
momentum devandClaude Opus 4.8 committed 2026-06-16 07:22:55 -04:00
1 parent 9e79c50751
commit a16a8cd29d
4 files changed
+84 -6

No files matched your search

+8
View File
@@ -204,6 +204,11 @@ class Watcher:
criteria_results={
"passed": evaluation.criteria_names_passed,
"failed": evaluation.criteria_names_failed,
"detail": evaluation.criteria_detail,
"gap_pct": evaluation.gap_pct,
"relative_volume": evaluation.relative_volume,
"status": evaluation.status,
"reason": evaluation.reason,
},
total_criteria=evaluation.criteria_total,
passed_criteria=evaluation.criteria_passed,
@@ -212,6 +217,9 @@ class Watcher:
"symbol": symbol,
"success_score_pct": evaluation.success_score_pct,
"status": evaluation.status,
"reason": evaluation.reason,
"gap_pct": evaluation.gap_pct,
"relative_volume": evaluation.relative_volume,
},
)
)