OpenRCA-2.0-Lite v2 — fault-kind rebalanced
500-case curated RCA evaluation set, rebalanced 2026-05-03 from the same 1 464-case pool as openrca2-lite-v1 but with diversity caps tuned for fault-kind richness rather than raw graph size.
What changed vs v1
v1 had ~34 % pod-killer cases (PodFailure / PodKill / ContainerKill, single-leg or as
a leg of a hybrid). Under the v2 evaluation contract — which scores network_* faults
on direction.src/dst and jvm_*/http_* on optional method — pod-killer cases are
essentially trivial: the killed service goes silent, all calls to it 5xx, no
direction / method is required for full credit. v2 caps that family aggressively
and reallocates the budget to subtype-rich families.
| v1 | v2 | Δ | |
|---|---|---|---|
| pod-killer total share | 34.4 % | 22.0 % | −12.4 pp |
single-leg Pod* | 92 | 50 | −42 |
hybrid_kill | 80 | 60 | −20 |
HTTP* (8 subtypes) | 54 | 77 | +23 |
Network* (6 subtypes) | 66 | 72 | +6 |
JVM* | 26 | 35 | +9 |
hybrid_clean (real multi-root difficulty) | 140 | 163 | +23 |
trivial cases (longest_path == 2) | 141 (28 %) | 116 (23 %) | −25 |
mean longest_path | 3.46 | 3.64 | +0.18 |
Composition
500 cases · hybrid : leaf = 223 : 277 (44.6% : 55.4%) · pod-killer share = 110/500 = 22.0%
Chaos family
| family | count | % |
|---|---|---|
hybrid_clean | 163 | 32.6 % |
HTTP* | 77 | 15.4 % |
Network* | 72 | 14.4 % |
hybrid_kill | 60 | 12.0 % |
Pod* | 50 | 10.0 % |
*Stress | 43 | 8.6 % |
JVM* | 35 | 7.0 % |
Single-leg subtype distribution (excluding hybrid)
| subtype | count |
|---|---|
JVMMemoryStress | 41 |
NetworkDelay | 33 |
JVMException | 25 |
PodFailure | 25 |
ContainerKill | 20 |
NetworkPartition | 18 |
HTTPResponseReplaceCode | 16 |
HTTPRequestAbort | 13 |
HTTPResponseReplaceBody | 10 |
HTTPRequestReplaceMethod | 9 |
NetworkCorrupt | 9 |
NetworkLoss | 9 |
HTTPResponseAbort | 8 |
HTTPResponseDelay | 7 |
HTTPRequestReplacePath | 7 |
JVMReturn | 7 |
PodKill | 5 |
HTTPRequestDelay | 5 |
NetworkBandwidth | 3 |
JVMLatency | 2 |
JVMCPUStress | 2 |
HTTPResponsePatchBody | 2 |
JVMMySQLLatency | 1 |
System × source pool
| system | count | source pool |
|---|---|---|
ts | 340 | mixed |
hs | 96 | mixed |
otel-demo | 64 | mixed |
source: old = 0 (FSE/openrca2 set) · source: new = 500 (aegisctl detector_success last 48 h)
longest_path distribution (service-level DAG)
longest_path | count |
|---|---|
| 2 | 116 |
| 3 | 176 |
| 4 | 95 |
| 5 | 52 |
| 6 | 32 |
| 7 | 6 |
| 8 | 22 |
| 9 | 1 |
min=2 · p25=3 · p50=3 · p75=4 · max=9 · mean=3.64
Files
dataset/
├── README.md (this file)
├── MANIFEST.json (HF-format curation summary + 500 case entries)
├── manifest.jsonl (500 lines, one JSON object per case)
└── cases/
└── <case_name>/ (telemetry parquets + injection.json + causal_graph.json)
Each case dir contains:
abnormal_metrics.parquet/normal_metrics.parquetabnormal_traces.parquet/normal_traces.parquetabnormal_logs.parquet/normal_logs.parquetabnormal_metrics_histogram.parquet·abnormal_metrics_sum.parquetinjection.json(chaos-mesh ground truth)causal_graph.json(regenerated 2026-05-02 with rcabench-platformreason batch)conclusion.parquet·env.json
manifest.jsonl schema
| field | example | notes |
|---|---|---|
name | ts5-ts-route-plan-service-loss-wkm5kz | matches cases/<name>/ |
source | old / new | which pool the case came from |
system | ts / hs / otel-demo | benchmark name |
longest_path | 5 | service-level DAG longest directed path (node count) |
n_svc | 7 | distinct services in graph |
n_edge | 9 | unique service-level edges |
n_alarm_svc | 4 | services that appear in alarm_nodes |
root_services | ["mysql"] | injection target(s) |
chaos_family | Network* / hybrid_clean / … | aggregated bucket |
primary_kind | NetworkDelay / hybrid | raw chaos_type or hybrid for multi-leg |
subtypes | ["NetworkDelay", "CPUStress"] | every chaos_type in engine_config (NEW in v2) |
hybrid | bool | multi-leg injection? |
has_kill_leg | bool | NEW — at least one PodFailure/PodKill/ContainerKill leg? |
src_path | /home/ddq/.../<case> | absolute path of underlying datapack on the curator's machine |
Intended use
Built to evaluate LLM/agent RCA pipelines under a type-aware scoring contract
(rcabench-platform evaluation/v2):
network_*→ must producedirection.src+direction.dstjvm_*/http_*→ optionalclass.methodfor bonus- hybrid → score per ground-truth fault, not as a set intersection
- every claim must carry a re-runnable DuckDB SQL on the case parquets
Citation
Curated by lincyaw from the OpenRCA-2.0 / RCABench corpus. If you use this dataset in
research, please cite the originating RCABench / OpenRCA-2 papers and reference this
specific dataset version (openrca2-lite-v2).