reorg: out/ sorted by datatype (vhack/ pools/ runs/ vhack_grads/ figs/)

Code writes+reads the new scheme; migrate_out_dirs.py moved 225 loose artifacts
(0 left at top level). Per-run checkpoints+rollouts now group under
runs/<ts>_<run_id>/ as train.safetensors/rollouts.jsonl. Figures land in
out/figs/ with a stable docs/figs/<name>.png symlink (figs.link_latest).
justfile also gains run-cell REFRESH param (online-erasure arm). Smoke +
smoke-vanilla + results all green on new paths. Requeue manifest preserves the
why/resolve labels that pueue reset wiped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wassname
2026-05-30 03:52:24 +00:00
co-authored by Claude Opus 4.8
parent 4fb7b59548
commit 4621488cc0
19 changed files with 296 additions and 75 deletions
+6 -2
View File
@@ -20,6 +20,8 @@ matplotlib.use("Agg")
import matplotlib.pyplot as plt
import tyro
from projected_grpo.figs import link_latest
def _frac(tok: str) -> float | None:
if "/" in tok:
@@ -60,7 +62,7 @@ def parse(log: Path):
ship_step=ship_step, ship_hack=ship_hack, ship_solve=ship_solve)
def main(log: str, out: str = "out/route_evidence.png") -> None:
def main(log: str, out: str = "out/figs/route_evidence.png") -> None:
d = parse(Path(log))
RED, GREY = "#b03a2e", "#9a8c7a" # hack=red (the story); solve=muted (context)
fig, ax = plt.subplots(figsize=(7, 4))
@@ -93,7 +95,9 @@ def main(log: str, out: str = "out/route_evidence.png") -> None:
fig.tight_layout()
Path(out).parent.mkdir(parents=True, exist_ok=True)
fig.savefig(out, dpi=130)
print(f"wrote {out} (train_hack_final={d['train_hack'][-1]:.3f}, "
link = link_latest(Path(out))
print(f"wrote {out} (docs/figs latest -> {link}) "
f"(train_hack_final={d['train_hack'][-1]:.3f}, "
f"ship_hack_final={d['ship_hack'][-1]:.3f}, ship_solve_final={d['ship_solve'][-1]:.3f})")