dashboard_routes.py — root copy is superset:
- Extraction yield query: source_url→path, s.url→s.path (truth audit)
- insufficient_data flag on cascade-coverage endpoint
- Rejection reasons fallback to prs.eval_issues when review_records empty
- rejection_source field replaces disagreement_types in review-summary
- New /api/agent-scorecard endpoint (Argus truth audit)
- Route registration for agent-scorecard
alerting.py — merged from both copies:
- FROM ROOT: "unknown" agent filter in check_agent_health (bug #3)
- FROM ROOT: prs.eval_issues queries in check_rejection_spike,
check_stuck_loops, check_domain_rejection_patterns,
generate_failure_report (truth audit correction Apr 2)
- FROM CANONICAL: _ALLOWED_DIM_EXPRS SQL whitelist + validation
in _check_approval_by_dimension (Ganymede security fix)
Files verified canonical=newer (no changes needed):
IDENTICAL: dashboard_prs.py, shared_ui.py, dashboard_ops.py,
dashboard_health.py, research_tracking.py, response_audit_routes.py
CANONICAL WINS: dashboard_epistemic.py, tier1_metrics.py,
dashboard_agents.py, alerting_routes.py, tier1_routes.py
NOTE: dashboard_routes.py review-summary API no longer returns
disagreement_types, but canonical dashboard_epistemic.py still renders
it — UI will show empty data. Flag for Ganymede review.
Root /diagnostics/ copies are now safe to delete for these 2 files.
Remaining root files already match or are older than canonical.
Pentagon-Agent: Epimetheus <0144398E-4ED3-4FE2-95A3-3D72E1ABF887>