openrca2-lite-v4
收藏数据集概述:openrca2-lite-v4
基本信息
- 数据集名称:openrca2-lite-v4
- 来源地址:https://huggingface.co/datasets/anon-ops/openrca2-lite-v4
- 版本说明:基于 openrca2-lite-v3 的 500 个案例选择与目录结构,使用 rcabench-platform 提交
9b6661dac80ac3f16dc87c9b777c91f981e02637的 v4 推理输出刷新了每个案例的causal_graph.json、result.json和label.txt文件。 - 导出审计结果:500/500 案例成功生成了
causal_graph.json、500/500 生成了result.json、500/500 的label=attributed,无硬导出错误,无未知根节点。注入时间窗口包含 5 秒的下游预窗口宽限以吸收时间戳桶抖动。
数据布局
数据集目录结构如下:
openrca2-lite-v4/ ├── manifest.jsonl ├── README.md └── cases/ └── <case-name>/ ├── injection.json ├── causal_graph.json # v4 图 ├── result.json # v4 推理结果 ├── label.txt # v4 标签 ├── env.json └── *.parquet
底层数据集:dataset_v3_500_2026-05-03
构建背景
- 构建日期:2026-05-03
- 构建方式:使用清单驱动的因果图推理器(rcabench-platform PR #370 / forge-rework)重建。
- 原始池:与 v1/v2 相同的 1464 个案例池(
_pool_v1_2026-05-02),数据来源为 FSE/openrca2 和 AegisLabdetector_success最近 48 小时数据。 - 关键变化:每个案例的地面真实因果图由新的故障种类清单扩展生成,而非传统的仅规则传播器。
v3 与 v2 的对比
| 对比项 | v2 | v3 | 变化 |
|---|---|---|---|
| 推理器 | 规则后过滤 | 清单驱动层扩展 | — |
| 平均最长路径 | 3.64 | 3.18 | −0.46 |
| 平均边数 | 5.62 | 4.06 | −1.56 |
| 平均服务数 | 4.61 | 3.97 | −0.64 |
| 最大最长路径 | 9 | 7 | −2 |
| 最长路径 ≥ 4 的案例 | 130 (26%) | 194 (39%) | +64 |
| 最长路径 = 2 的案例 | 125 (25%) | 210 (42%) | +85 |
| 最长路径 = 3 的案例 | 194 (39%) | 96 (19%) | −98 |
| 两版本共有案例 | — | 263 | — |
| 替换案例 | — | 237 | — |
v3 中间层(最长路径=3)缩小,深层(最长路径≥4)和浅层(最长路径=2)均增长。这是清单驱动推理器在入口签名仅匹配一个节点时,能够深入推理或立即终止的结果——减少了中间“软3跳”猜测。
最终组成(500 案例)
来源 × 系统分布
| ts | hs | otel-demo | 总计 | |
|---|---|---|---|---|
| 旧(FSE/openrca2) | 0 | 0 | 0 | 0 |
| 新(AegisLab detector_success) | 320 | 142 | 38 | 500 |
| 总计 | 320 | 142 | 38 | 500 |
otel-demo 从 v2 的 64 个减少至 38 个,因为清单推理器只保留了 64 个中的 43 个(其余出现循环或最长路径≤1);ts 和 hs 填补了空缺。
混沌家族分布
| 家族 | 数量 | 占比 |
|---|---|---|
| hybrid_clean | 150 | 30.0% |
| Network* | 97 | 19.4% |
| Pod* | 82 | 16.4% |
| hybrid_kill | 67 | 13.4% |
| HTTP* | 60 | 12.0% |
| *Stress | 24 | 4.8% |
| JVM* | 19 | 3.8% |
| DNS | 1 | 0.2% |
hybrid_clean 达到 150 上限。JVM*/*Stress 家族数量较 v2(分别为 35/43)明显减少,因为这两个家族的清单入口签名更严格(JVM CPU/GC 持续阈值),导致许多池案例在到达第一层前即变为无路径。
混合与叶节点划分 hybrid:leaf = 217:283 (43.4% : 56.6%),处于 v1/v2 使用的 [40:60, 60:40] 范围内,无需人工比例强制。
最长路径直方图
| 最长路径 | 数量 |
|---|---|
| 7 | 1 |
| 6 | 23 |
| 5 | 57 |
| 4 | 113 |
| 3 | 96 |
| 2 | 210 |
选择规则
- 系统容量上限:ts 320、hs 180、otel-demo 150
- 家族容量上限:150
- 根节点容量上限:30(任何单根服务在所有家族中)
- 硬过滤条件:丢弃循环服务图、丢弃最长路径 ≤ 1(单服务爆破,无传播)、丢弃前端注入(loadgen / ts-ui-dashboard / frontend / frontend-proxy)、丢弃缺失或格式错误的 injection.json / engine_config
- 排序规则:按最长路径降序、边数降序、服务数降序、名称升序排序
- 约束条件:hybrid:leaf ∈ [40:60, 60:40] 的比例守卫作为软约束保留,仅在选择 200 个案例后生效;两轮选择器在 Pass 1 不足 500 时放宽约束以填满剩余名额。
底层数据集布局
dataset_v3_500_2026-05-03/ ├── manifest.jsonl # 500 行,每行一个 JSON 案例 ├── README.md └── cases/ └── <case-name>/ # 符号链接 → 原始案例目录 ├── injection.json # 地面真实(engine_config + display_config) ├── causal_graph.json # 清单驱动的服务图(本次重建) ├── env.json ├── result.json ├── label.txt └── .parquet # 12 个 parquet 文件:abnormal_ + normal_*
manifest.jsonl 每行结构示例: json { "name": "ts0-ts-order-service-exception-l2bqm5", "source": "old|new", "system": "ts|hs|otel-demo", "longest_path": 7, "n_svc": 13, "n_edge": 21, "n_alarm_svc": 2, "root_services": ["ts-order-service"], "chaos_family": "JVM*|HTTP*|Network*|Pod*|*Stress|DNS|Time|hybrid_clean|hybrid_kill", "primary_kind": "<chaos_type or hybrid>", "subtypes": ["<sorted unique chaos_types>"], "hybrid": false, "has_kill_leg": false, "src_path": "/abs/path/to/original/case/dir" }
可复现性步骤
-
从
/dataset/rca/、/detector_success_last13h_2026-05-02/、/detector_success_last48h_gap_2026-05-02/创建 1464 个案例池的符号链接包装到_pool_v1_2026-05-02/<case>/converted/,并为每个案例添加<case>/.valid标记。 -
使用清单驱动推理器(rcabench-platform 提交
a130d11或之后,PR #370 合并后)运行推理批处理: bash ./cli/reason.py reason batch --data-base-dir _pool_v1_2026-05-02 --max-workers 12 --max-hops 15 --force -
将
pool/<case>/converted/{causal_graph,result,label,no_*.*}同步回原始源案例目录。 -
运行筛选脚本(构建会话中
/tmp/curate_v3.py),使用上述容量上限和硬过滤条件。




