claim_title payloads wrote unresolvable human-readable titles into
frontmatter related fields. Switched to claim_path with slug extraction
so reciprocal edges in merge.py can resolve targets. Renamed
neighbor_titles→neighbor_slugs throughout for consistency.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TELEO_APP_TOKEN secret is not configured, so every push to main
triggered a failing workflow run. Kept manual trigger (workflow_dispatch)
for when we're ready to re-enable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ganymede review finding — the review-summary API no longer returns
disagreement_types, so the card always showed "No disagreements."
Removed the JS loop and HTML table.
Pentagon-Agent: Epimetheus <0144398e-4ed3-4fe2-95a3-3d72e1abf887>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
Extract.py was discarding LLM-provided connections — related_claims went into
frontmatter as wiki-links but supports/challenges/depends_on from the
connections field were ignored entirely. This is the primary driver of 50%+
orphan ratio.
Now: connections[] → typed edge fields (supports/challenges/related) in YAML
frontmatter. related_claims fall back to related edges. Post-write
connect_new_claims() adds vector-search edges for claims the LLM missed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Three bugs fixed:
1. triage_pr() returns 3 values but line 611 unpacked 2 → ValueError on every
non-deterministic PR (circuit breaker opened, 5 PRs stuck)
2. costs import was inside triage else-block → NameError on deterministic routes
3. pr_cost never written to prs.cost_usd → 0% cost tracking across 1,118 PRs
Cost tracking now covers all 4 exit paths: domain failed, domain rejected,
Leo failed, and normal completion. Uses additive UPDATE (cost_usd + ?) so
re-evals accumulate correctly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ganymede review finding — the review-summary API no longer returns
disagreement_types, so the card always showed "No disagreements."
Removed the JS loop and HTML table.
Pentagon-Agent: Epimetheus <0144398e-4ed3-4fe2-95a3-3d72e1abf887>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>