Produce explicit, testable root-cause artifacts from correlated incidents without relying on LLM prompting.
RCA is split into modular components under src/incident_agent/rca/:
evidence.py: evidence ranking and contributing signal extractionsummarize.py: incident feature summarizationdependency.py: dependency-aware downstream impact reasoningscoring.py: root-cause candidate scoring and ambiguity detectionengine.py: orchestration and config loading
This keeps reasoning independent from prompt templates, making it easy to replace heuristics later with model-assisted strategies.
Defined in src/incident_agent/schemas/rca.py:
EvidenceBundleIncidentSummaryFeaturesRootCauseHypothesisRCAResult
RootCauseHypothesis.root_cause_support is a relative support score, not a
calibrated probability. It is calculated as:
root_cause_support = top_candidate_score / sum(candidate_scores)
Candidate scores come from severity-ranked evidence plus deterministic service failure and downstream-impact bonuses. The score is useful for comparing RCA candidates within the same incident, but it should not be interpreted as statistical confidence.
Older serialized RCA artifacts containing confidence_score are accepted on
input for migration compatibility. New artifacts serialize root_cause_support.
configs/default.yaml includes:
rca.service_failure_bonusrca.downstream_bonusrca.ambiguity_deltarca.dependency_graph_path
poetry run incident-agent run-rca \
--logs data/sample/incident/anomaly_logs.csv \
--metrics data/sample/incident/anomaly_metrics.csv \
--bucket-size-minutes 5