# Resilience trajectory atlas

该目录由 `tools/build_trajectory_atlas.py` 从原始 rollout、episode metrics、planner log、trace、Rebound/Stability analysis 与 critic export 元数据生成。索引覆盖 180 条运行、10 个 Episode、3 个 perturbation seed 和 6 个 stress level；共提取 3115 个具有规划、动作、进度或结果变化的节点。

## 文件

- `run_index.csv` / `run_index.json`：每条 rollout 的统一指标与证据路径，共 180 行。
- `planning_event_index.csv` / `planning_event_index.json`：规划动作变化、replan、进度跃迁、失败信号与终止节点。
- `case_selection.json`：Rebound、Stability、GE 的纵向与横向案例，以及可复现的选择准则。

## 科学解释边界

Rebound 的 `C_rec` 与恢复窗来自单次 rollout 的 Rebound analysis。Stability 的 `trajectory_loss` 来自单条 critic trajectory，`beta_at_lambda` 来自 clean/stress 配对后处理。GE 的容量与边界以 task family 的 episode×seed×lambda 网格为统计对象；`run_index` 中重复保存 family-level GE 字段，便于前端按运行联接。

Thought 摘要由 trace 中显式记录的 `Thought:` 字段进行抽取式压缩。动作与观测计数来自同一 trace；规划节点来自 planner-log。全部证据路径相对于 resilience 结果根目录，可直接回溯原始文件。

## 案例选择

- Rebound：Episode 239 / seed 1，六个 λ；横向固定 seed=1、λ=1.0，在 mixed_temporal family 内比较。
- Stability：Episode 144 / seed 2，六个 λ；横向固定 seed=2、λ=0.4，保留 trajectory loss 与 beta 同时有效的轨迹。
- GE：Episode 78 / seed 1 展示 placement_only 六点剖面，并以 Episode 239 / seed 1 支持 mixed_temporal 对照。GE 结论读取 family-level 完整网格。

## GE family 支持

| task family | runs | valid cells | valid capacity rows | λ* | normalized AUDC |
|---|---:|---:|---:|---:|---:|
| mixed_temporal | 72 | 72 | 72 | 0.0 | 0.5027015309696383 |
| placement_only | 54 | 54 | 54 | 0.0 | 0.4667842431298618 |
| spatial_relation | 54 | 0 | 0 | None | None |

## 重新生成

```powershell
python tools/build_trajectory_atlas.py
```

脚本仅依赖 Python 标准库；Windows 长路径由内部 I/O 适配处理。
