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>
Move vitality.py/vitality_routes.py from root diagnostics/ to ops/diagnostics/ (canonical location).
Overwrite ops/diagnostics/alerting.py and alerting_routes.py with root versions (newer: SQL injection protection via _ALLOWED_DIM_EXPRS, proper error handling + conn.close).
Remove root diagnostics/*.py — all code now in ops/diagnostics/.
Include diff log documenting resolution of each multi-copy file.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Imports 67 files from VPS (/opt/teleo-eval/) into repo as the single source
of truth. Previously only 8 of 67 files existed in repo — the rest were
deployed directly to VPS via SCP, causing massive drift.
Includes:
- pipeline/lib/: 33 Python modules (daemon core, extraction, evaluation, merge, cascade, cross-domain, costs, attribution, etc.)
- pipeline/: main daemon (teleo-pipeline.py), reweave.py, batch-extract-50.sh
- diagnostics/: 19 files (4-page dashboard, alerting, daily digest, review queue, tier1 metrics)
- agent-state/: bootstrap, lib-state, cascade inbox processor, schema
- systemd/: service unit files for reference
- deploy.sh: rsync-based deploy with --dry-run, syntax checks, dirty-tree gate
- research-session.sh: updated with Step 8.5 digest + cascade inbox processing
No new code written — all files are exact copies from VPS as of 2026-04-06.
From this point forward: edit in repo, commit, then deploy.sh.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>