# erp-tune on pfi-gx10 Canonical copies of what is staged on pfi-gx10 for the R47 ERP-seat SFT runs. The harness itself (`eitri-smithy`) is not vendored here; it lives on the box at `/home/infra-ops/erp-tune/eitri-smithy`, git `0a6bd2e`. | file | deployed to | run | |---|---|---| | `run-03c-gx10.json` | `/home/infra-ops/erp-tune/run-03c-gx10.json` | 3c | | `launch-run-03c.sh` | `/home/infra-ops/erp-tune/launch-run-03c.sh` | 3c | | `run-05-gx10.json` | `/home/infra-ops/erp-tune/run-05-gx10.json` | 5 | | `launch-run-05.sh` | `/home/infra-ops/erp-tune/launch-run-05.sh` | 5 | | `build_r5_survivors.py` | `/home/infra-ops/erp-tune/build_r5_survivors.py` | 5 | | `run-06-gx10.json` | `/home/infra-ops/erp-tune/run-06-gx10.json` | 6 | | `launch-run-06.sh` | `/home/infra-ops/erp-tune/launch-run-06.sh` | 6 | | `pull-verify-jenerallee78.sh` | `/home/infra-ops/erp-tune/pull-verify-jenerallee78.sh` | 6 (base pull + byte verify) | | `run-07-gx10.json` | `/home/infra-ops/erp-tune/run-07-gx10.json` | 7 | | `launch-run-07.sh` | `/home/infra-ops/erp-tune/launch-run-07.sh` | 7 | | `build_r7.py` | `/home/infra-ops/erp-tune/build_r7.py` | 7 (survivors-r7 + lossmask-r7 union + config) | | `base-pin-jenerallee78-shards.txt` | `/home/infra-ops/erp-tune/base-pin-jenerallee78-shards.txt` | 6 (32 shard pins, from brokkr-smithy `base-pin-jenerallee78.json`) | Runbooks: [`docs/runbooks/gx10-run-03c.md`](../../docs/runbooks/gx10-run-03c.md), [`docs/runbooks/gx10-run-05.md`](../../docs/runbooks/gx10-run-05.md), [`docs/runbooks/gx10-run-06.md`](../../docs/runbooks/gx10-run-06.md). **Run 3c** — the LoRA that died on ana-ml2 at step 24 when an Anaheim breaker tripped, rehomed here unchanged (eight path keys rehomed to local NVMe, two host/ library `substitute_controls` appended; no hyperparameter/corpus/base/mask/recipe value differs, verified key-by-key). **Run 5** — third R47 corpus-gate run: the 20% slot's composition changes (airoboros OUT, dependency-forcing govreport + qmsum IN) at run 4's lr 2e-04, everything else held; kvasir byte-identical (survivors reused from run 4). `run-05-gx10.json` is run 4's config with recipe/survivors/override swapped. **Run 6** — the run-5 recipe byte-held on a different BASE: jenerallee78's ARA abliteration of Gemma-4-26B-A4B-it @ `0631379a` (index sha `33c59654…`), the line's first abliterated base (runs 3–5 were settled as stock). Corpus, survivors (`survivors-r5.jsonl`), mask, template and hyperparameters unchanged. The landed dir carries the STOCK tokenizer set (the repo's `tokenizer.json` bakes in a 256-token truncation); repo originals kept beside as `*.repo`. **Run 7** — run 6 + an OPENING-SPLIT slot (293 rows, `opening-split/clean-v1`) with its companion loss mask (224 entries, UNION with lossmask-r3 → `lossmask-r7`, 1 duplicate). `survivors-r7` = survivors-r5 + the 293 slot ids (8,505). Launched 2026-09-08 23:06 PT under `operator-2026-09-08-rnd-run7`. Free check: held roots encode identical to run 6 (same 173 chunked / 30 truncated / 59 lost turns), slot 293/293 fit whole, two cwm conversations (cwm-2602, cwm-1826) dropped as unfittable because the mask left them no loss turn — their loss now lives in their opening-split rows. 542 steps, 17.1% padding (run 6: 0%). > **Run 4 is not vendored here.** It ran on the box (config `run-04-gx10.json`, > gated STILL-COUPLED) but its canonical copies were never committed; run 5's > `build_r5_survivors.py` derives from `survivors-r4.jsonl` on the box, so run 4 > is a live dependency of the run-5 build even though it is absent from this repo. Each `run-*-gx10.json` carries its run-scoped `training_eligibility_override`, `overridden_blockers` and `substitute_controls` so the adapter's provenance manifest records the grant, the two open blockers and their substitute controls.