diff --git a/justfile b/justfile index f86f815..cf63a29 100644 --- a/justfile +++ b/justfile @@ -129,6 +129,23 @@ run-cell-mode ENVMODE SEED: --steps=60 --seed={{ SEED }} \ --out-tag=_emerge_{{ ENVMODE }}_s{{ SEED }} +# Build the even, non-overlapping multi-loophole teacher batch (substrate) from the +# de-risk elicit-then-strip hacks + the run_tests teacher pool. Writes +# out/pools/substrate/{prompt_*.jsonl.gz, partition.json}. Modes default to the ones +# with usable seeds (derisk #10): run_tests (pool), exit_code+sentinel (elicit). +build-substrate MODES="run_tests,exit_code,sentinel": + uv run python -m projected_grpo.build_substrate \ + --modes {{ MODES }} --pool-modes run_tests --min-hacks 5 + +# Vanilla-GRPO emergence on the multi-loophole substrate: does the student learn ALL +# K loopholes from the repeated even teacher batch? UAT = end-of-run SUBSTRATE table +# (per-mode hacks>0 + finite first_step). v_hack is loaded only for the cos diagnostic. +run-substrate INTERV="none" SEED="41" MIX="0.25" STEPS="80": + {{ TRAIN }} fast --intervention={{ INTERV }} \ + --teacher-pool-dir=out/pools/substrate --mix-ratio={{ MIX }} \ + --v-hack-path=out/vhack/v_hack_21pairs.safetensors \ + --seed={{ SEED }} --steps={{ STEPS }} --out-tag=_substrate3_{{ INTERV }}_s{{ SEED }} + # Regenerate both dynamics plots from the cell logs (default: all cells; pass a # narrower glob like 'logs/*_cell_*_s41.log' for the seed-41-only checkpoint). regen-dynamics GLOB='logs/*_cell_*.log':