# Figure bundle — scripts + data + figures (self-contained)

Everything needed to regenerate the journey figures, with the data **fetched back from the remote
8×H100** (the original `/tmp/front_densify_pts.json` had been cleared from `/tmp`, so the front cloud
was reconstructed from the raw run logs).

## Layout
```
figure_bundle/
  scripts/   plot_*.py  (portable ones read ../data, write ../figures)
  data/      all inputs (json / tsv / csv)
  figures/   the rendered PNGs
```

## Figures → script → data

| figure | script | data it reads |
|---|---|---|
| `progress_journey_dense.png` | `scripts/plot_journey_dense.py` ✅ portable | `front_densify_pts.json`, `exploration_points.json`, `bo_parsed.json` (+ hardcoded rung/checkpoint labels) |
| `progress_messy.png` | `scripts/plot_progress_messy.py` ✅ portable | `front_densify_pts.json`, `exploration_points.json`, `bo_parsed.json`, `cliff/fwd/explore_results.json` |
| `b200_iteration.png` | `scripts/plot_b200_from_csv.py` ✅ portable | `b200_runs.csv` |
| `codex_vs_ours.png` | `scripts/plot_codex_vs_ours.py` (orig paths) | `front_densify_pts.json`, `exploration_points.json`, `bo_parsed.json`, `codex_results.tsv` |

Regenerate any portable one with e.g.:
```bash
python3 scripts/plot_journey_dense.py     # -> figures/progress_journey_dense.png
python3 scripts/plot_progress_messy.py
python3 scripts/plot_b200_from_csv.py
```

## Data files

| file | what | rows |
|---|---|---|
| **`all_remote_val_bpb.json`** | **every H100 run's `val_bpb`** parsed from the remote omrec logs (the master dataset) | **795** |
| `front_densify_pts.json` | front architecture-exploration cloud (`curr_*`/`nov_*`, val>0.944) — **reconstructed** from `all_remote_val_bpb.json` (the original was lost from `/tmp`) | 129 |
| `exploration_points.json` | 6 sub-agents' exploration points | 72 |
| `bo_parsed.json` | the BO search (`bo1`+`bo2`) | 385 |
| `cliff_results.json` | dense-scaling capacity-cliff sweep | 8 |
| `fwd_results.json` | forward cumulative-enable curriculum (1.089→0.935) | 10 |
| `explore_results.json` | flat-prior exploration wave | 50 |
| `abl/cand/dimsweep/tb/wave2-6_results.json` | the named waves (ablation, B200 candidate pre-screen, dim sweep, time-budget sweep, etc.) | ~70 |
| `codex_results.tsv` | the codex baseline's 262-experiment log | 262 |
| `b200_runs.csv` | every B200 run (config, val_bpb, tokens) | 59 |

## Provenance note

- `all_remote_val_bpb.json` was produced by `parse_all.py` run on the remote (greps `val_bpb:` from
  every `*.log` in omrec + `forever_logs/`).
- `front_densify_pts.json` is a **reconstruction** of the lost original — the journey figure's title
  now reads "167 trials" instead of "115" because the recovered set is slightly more complete (real
  measured points, not the ephemeral subset).
- B200 raw logs (~30 MB) were summarized into `b200_runs.csv`; the full `forever_results.jsonl`
  (138 KB, 470 configs) lives on the remote — its `val_bpb` values are already in
  `all_remote_val_bpb.json` (the `f000xx_*` keys).
