Sprints 3-6: transplant families, controls, sweeps, mechanism, Tier-0 confirmatory run; Tier-1 MLX harness; paper draft
- alignment maps (identity/Procrustes/ridge/CCA/sham), six graft families, control battery, supervised/distillation references - model matrix (17 toy models), runs graft_tier0 v1/v2 and confirmatory (prereg v1.0 frozen, D10), persistent fresh-process check - annihilation proposition (regression-fitted maps remove recipient-unpredictable directions) with proof - MLX layer wrapping with bitwise no-op test; Tier-1 task-vector transfer script (dev run in progress) - figures/tables generated from results; paper sections intro/theory/design/results/mechanism/robustness/discussion/limitations Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
13 changed files +19,989 −0
modified
docs/DECISION_LOG.md
+19 −0
@@ -21,3 +21,22 @@ All entries are dated; "before freeze" refers to the confirmatory freeze (PREREG | ||
| 21 | 21 | token restores nothing; it is added to the next sweep. The pilot's localization set (length-3 programs, |
| 22 | 22 | Ω at index 1, corrupt = `zib`) is a *development* set; confirmatory localization will use new seeds and |
| 23 | 23 | other corrupt operators. |
| 24 | +- **D7 (2026-11-09, before freeze).** Exploratory run `graft_tier0_f50a28ca1bf7` showed that affine maps fitted to | |
| 25 | + predict the recipient's activations on Ω-containing rows (ridge, CCA) *remove* the Ω-specific component (the | |
| 26 | + recipient has none to predict), while orthogonal maps (Procrustes) and maps fitted on task-free rows preserve | |
| 27 | + it (Procrustes on task-free rows: 0.99 same-init / 0.96 different-init vs ridge-on-Ω-rows 0.17). The reference | |
| 28 | + map for the secondary families (steering, subspace, adapter, H5, mismatch, dose, layer grid) is therefore | |
| 29 | + **Procrustes fitted on task-free alignment rows**; ridge variants are kept as comparisons. Protocol tag | |
| 30 | + `v2-unrelated-procrustes-reference`; the v1 run is retained in the registry. | |
| 31 | +- **D8 (2026-11-09, before freeze).** Pairs are classified by initialization: donor_s*i* and recipient_s*i* share | |
| 32 | + the initialization seed (identical initial weights, different data); off-diagonal pairs do not. Reported | |
| 33 | + separately because the identity graft works only for same-initialization pairs (0.87 vs 0.10). | |
| 34 | +- **D9 (2026-11-09, before freeze).** Tier-1 alignment prompts are *format-matched and task-free* (``Input:/Output:`` | |
| 35 | + frames with random content, D9) after the quick run showed that sentence-final states are off the manifold of | |
| 36 | + ``Output:``-position states; held-out R² is now computed on rows never used for fitting; a donor-in-the-loop | |
| 37 | + replace graft (donor few-shot state mapped into the recipient) and its controls (donor zero-shot state, shuffled | |
| 38 | + query, sham map) are added; a declared norm-rescaled variant of the mapped vector is reported. | |
| 39 | +- **D10 (2026-11-09, FREEZE).** PREREGISTRATION v1.0 (Tier 0) frozen after `graft_tier0_30e3644aa801`; primary | |
| 40 | + method = activation graft with task-free Procrustes at L0→L0, α = 1; confirmatory seed base 90 000. SHA-256 of | |
| 41 | + `docs/PREREGISTRATION.md` at freeze recorded below. | |
| 42 | + PREREGISTRATION.md sha256 at freeze: fe06d326bbbd27916d573a617e94d4443546f179587209e2e04a6893aad25d3e | |
modified
docs/EXPERIMENT_LOG.md
+42 −0
@@ -41,3 +41,45 @@ criteria of EXPERIMENT_PLAN §4 are met. | ||
| 41 | 41 | |
| 42 | 42 | **Pilot variability for power (PREREGISTRATION §5).** Seed sd of recipient target accuracy 0.053; cluster |
| 43 | 43 | bootstrap half-width of the paired gap ≈ 0.022 with 1 000 items / ≈ 900 programs. |
| 44 | + | |
| 45 | +| 2026-11-09 | Model matrix `artifacts/models/matrix_v1` (17 toy models: donor/recipient/unrelated × 3 seeds, w96 ×2, L6 ×2, stride-2 donor/recipient ×2) | completed | `artifacts/models/matrix_v1/index.json` | ≈ 45 s each on MPS; all dev accuracies 1.000 | | |
| 46 | +| 2026-11-09 | `graft_tier0_quick_7d4278be3e5a` (CPU, 1 seed, n = 300) | completed (55 s) | `experiments/summaries/graft_tier0_quick_7d4278be3e5a/` | pipeline check; revealed the map-suppression effect (D7) | | |
| 47 | +| 2026-11-09 | `graft_tier0_f50a28ca1bf7` (MPS, 9 pairs, n = 1 000, protocol v1) | completed (140 s) | `experiments/summaries/graft_tier0_f50a28ca1bf7/` | exploratory; see §Transplant results v1 | | |
| 48 | +| 2026-11-09 | `eval_persistent` on `graft_tier0_f50a28ca1bf7` (fresh process, seed base 70 000) | completed | `experiments/summaries/graft_tier0_f50a28ca1bf7/persistent/fresh_process_eval.json` | saved ridge adapter: target 0.143 vs base 0.118 (no acquisition); control 1.000 | | |
| 49 | +| 2026-11-09 | `tier1_taskvector_quick_b89f92479155` (MLX, qwen3b→qwen1.5b, 12 queries/task) | completed (150 s) | `experiments/summaries/tier1_taskvector_quick_b89f92479155/` | within-model vectors: antonym 0.75 (L16), capital 1.00 (L20) in Qwen2.5-1.5B; cross-model ≤ 0.25 = unrelated-task control; led to D9 | | |
| 50 | + | |
| 51 | +## Transplant results v1 — `graft_tier0_f50a28ca1bf7` (exploratory; superseded by the v2 protocol run) | |
| 52 | + | |
| 53 | +Target-stratum accuracy, mean over pairs (same-init n = 3 / different-init n = 6), control in parentheses: | |
| 54 | +activation graft identity 0.873 (0.99) / 0.101 (0.10); Procrustes on Ω rows 0.785 (0.985) / 0.697 (0.943); | |
| 55 | +**Procrustes on task-free rows 0.993 (0.996) / 0.956 (0.989)**; ridge on task-free rows 0.814 (1.0) / 0.795 (1.0); | |
| 56 | +ridge on Ω rows 0.170 / 0.175; CCA 0.08 / 0.089; sham map 0.10 (0.085); norm-matched random 0.089 (0.097); | |
| 57 | +shuffled token 0.10 (0.10); shuffled layer 0.187 (1.0); unrelated-skill donor 0.076 (1.0); steering α ≤ 4: ≤ 0.082; | |
| 58 | +subspace k ≤ 128 (ridge reference): ≤ 0.172; adapter graft 0.095; supervised adapter 1.0; distillation 1.0; | |
| 59 | +weight grafts: L0 MLP 0.262 (0.962), L0 block 0.642 (0.726), L0–L2 blocks + Ω embedding 0.774 (0.749), shuffled | |
| 60 | +layer 0.083 (0.089), unrelated donor 0.094 (0.933). Recipient baselines 0.111 / 0.047 / 0.067 (chance ≈ 0.10). | |
| 61 | +Mismatch (Procrustes on Ω rows): width 128→96 0.638 (0.981); depth 4→6 L1→L1 0.988 (1.0), L0→L0 0.358 (0.75). | |
| 62 | +Stride-2 (ridge): L3 0.604 (0.993). Mechanism: donor attn_out.0 ablated at read positions 0.086 (0.102); | |
| 63 | +rescue from intact donor_s1 1.000 (1.0); sham rescue 0.112; reverse graft recipient→donor 0.965 (1.0). | |
| 64 | +Rule-vs-cache (ridge fitted on Ω inputs {0..5}): seen 0.472, unseen 0.740 (consistent with suppression of seen | |
| 65 | +rows); adapter: seen 0.259, unseen 0.0. Dose (ridge): monotone to 0.34 at α = 1.5, control collapses at α = 2. | |
| 66 | +Layer grid (ridge): 0.25–0.42, best at recipient L3. | |
| 67 | + | |
| 68 | +| 2026-11-09 | `graft_tier0_30e3644aa801` (MPS, protocol v2: task-free Procrustes reference map) | completed (176 s) | `experiments/summaries/graft_tier0_30e3644aa801/` | exploratory; see §Transplant results v2 | | |
| 69 | +| 2026-11-09 | `eval_persistent` on `graft_tier0_30e3644aa801` (fresh process, seed base 70 000) | completed | `.../persistent/fresh_process_eval.json` | saved donor-free adapter: target 0.414 (Ω-step 0.455) vs base 0.140; control 0.981 | | |
| 70 | + | |
| 71 | +## Transplant results v2 — `graft_tier0_30e3644aa801` (exploratory; basis of the v1.0 freeze) | |
| 72 | + | |
| 73 | +Same as v1 for the activation-graft families and controls (identical numbers: same models, same splits). | |
| 74 | +With the task-free Procrustes reference map: subspace grafts k = 1/2/4/8/16/32 → 0.230/0.296/0.650/**0.936**/ | |
| 75 | +0.970/0.983 (random subspace of equal k: 0.076/0.079/0.088/0.085/0.127/0.173; control 1.0 throughout); | |
| 76 | +adapter graft (donor-free) 0.581 (control 0.998); steering α ≤ 4 ≤ 0.096; layer grid: donor L1–L3 → any | |
| 77 | +recipient layer 1.00, L0→L0 0.98, L0→L1–3 0.75–0.82; dose: 0.44 (α 0.5), 0.90 (0.75), **0.98 (1.0)**, 0.92 (1.25), | |
| 78 | +0.75 (1.5), 0.39 (2.0; control 0.36); mismatch with task-free Procrustes: width 96 L0→L0 0.886, **L1→L1 1.000**; | |
| 79 | +depth 6 L0→L0 0.765, **L1→L1 1.000**, L1→L2 1.000, L2→L2 1.000 (sham 0.07–0.12 with control destroyed); | |
| 80 | +stride-2: L0 0.370, L1 0.747, **L2 1.000, L3 1.000** (ridge: 0.13–0.60); rule-vs-cache: Procrustes fitted on | |
| 81 | +seen Ω inputs → seen 0.966 / unseen 0.831 (ratio 0.86); donor-free adapter → seen 0.765 / unseen 0.000 (cache); | |
| 82 | +mechanism unchanged (ablation 0.086 → rescue 1.000, sham 0.115; reverse 0.965). | |
| 83 | + | |
| 84 | +| 2026-11-09 | `graft_tier0_confirmatory_0c2257f6803e` (MPS, PREREGISTRATION v1.0, seed base 90 000) | **completed** | `experiments/summaries/graft_tier0_confirmatory_0c2257f6803e/{results.json,CONFIRMATORY.md,confirmatory.json}` | primary: 9/9 pairs lower bound > SESOI, mean Δ_T^adj 0.875 (sd 0.042, min 0.776) → H2 SUPPORTED; H4 NOT SUPPORTED (one pair control 0.946 < 0.95; others ≥ 0.985); Holm: subspace k8 vs random +0.850, adapter vs base +0.472, weight L0 block vs shuffled +0.556 (retention 0.720), all rejected at Holm; H5 seen 0.941 / unseen 0.768 (ratio 0.816 ≥ 0.8) SUPPORTED; adapter cache 0.702 / 0.000 | | |
| 85 | +| 2026-11-09 | `eval_persistent` on the confirmatory run (fresh process, seed base 95 000) | completed | `.../persistent/fresh_process_eval.json` | saved adapter: target 0.344 [0.317, 0.372] vs base 0.115; control 0.979 | | |
modified
docs/PREREGISTRATION.md
+47 −0
@@ -65,3 +65,50 @@ the run manifest and in `EXPERIMENT_LOG.md`. No run is excluded for its outcome. | ||
| 65 | 65 | Split hashes are stored in manifests; evaluation splits are generated with seeds disjoint from training |
| 66 | 66 | and alignment seeds; `assert_disjoint` is enforced at build time; alignment data for mappings never |
| 67 | 67 | include evaluation items (checked by item hash). |
| 68 | + | |
| 69 | +--- | |
| 70 | + | |
| 71 | +# Preregistration v1.0 — CONFIRMATORY FREEZE (Tier 0), 2026-11-09 | |
| 72 | + | |
| 73 | +Frozen after exploratory runs `graft_tier0_f50a28ca1bf7` (protocol v1) and `graft_tier0_30e3644aa801` | |
| 74 | +(protocol v2) and **before** any confirmatory split was generated. Confirmatory evaluation and alignment | |
| 75 | +items come from seed base 90 000 (never used before); the trained models (`artifacts/models/matrix_v1`) are | |
| 76 | +unchanged; the analysis code (`scripts/run_transplant.py` at the commit recorded in the confirmatory manifest) | |
| 77 | +is unchanged. | |
| 78 | + | |
| 79 | +## Primary method (fixed) | |
| 80 | +Activation graft, donor in the loop, at the recipient's `resid_post.0` at every read position (untargeted), | |
| 81 | +α = 1, with the alignment map = **orthogonal Procrustes with isotropic scale fitted on task-free alignment rows** | |
| 82 | +(3 000 items without Ω, disjoint from evaluation items). Model pairs: the nine donor_s{i} → recipient_s{j} | |
| 83 | +pairs (3 same-initialization, 6 different-initialization). | |
| 84 | + | |
| 85 | +## Primary outcome and contrast | |
| 86 | +Δ_T^adj on `target_iid` = [Q_T(graft) − Q_T(recipient)] − [Q_T(sham map) − Q_T(recipient)], paired on items, | |
| 87 | +cluster bootstrap over programs (2 000 draws), reported per pair and summarized over pairs (mean, sd, min). | |
| 88 | +**Decision rule:** H2 (sufficiency) is supported if the lower 95 % bound of Δ_T^adj exceeds SESOI = 0.25 in at | |
| 89 | +least 8 of the 9 pairs and the mean over pairs exceeds 0.5; retention H4 is supported if `control_iid` accuracy | |
| 90 | +with the graft is ≥ 0.95 in all nine pairs. | |
| 91 | + | |
| 92 | +## Secondary pre-declared contrasts (Holm correction over these four families, α = 0.05) | |
| 93 | +1. Subspace graft k = 8 (Ω-contrast PCA through the primary map) vs random subspace k = 8, matched seeds. | |
| 94 | +2. Adapter graft (donor-free ridge interface to the primary map's targets) vs unmodified recipient; and the | |
| 95 | + same adapter evaluated in a fresh process on new splits (persistence; `scripts/eval_persistent.py`). | |
| 96 | +3. Weight graft L0 block (attention + MLP + LN) vs shuffled-layer weight control, matched seeds; retention | |
| 97 | + reported as a cost. | |
| 98 | +4. Rule-vs-cache (H5): primary-map graft fitted on Ω inputs {0,…,5} (Procrustes on seen rows) evaluated on | |
| 99 | + unseen-input items vs seen-input items; supported if unseen ≥ 0.8 × seen. The donor-free adapter is | |
| 100 | + predicted to FAIL this test (cache), and the failure is reported as such. | |
| 101 | + | |
| 102 | +## Mechanism tests (fixed, matched seed 0) | |
| 103 | +Donor ablation (attn_out.0 zeroed at read positions) → rescue from intact donor_s1 through the task-free | |
| 104 | +Procrustes map vs sham rescue; reverse graft recipient → donor on control items (no harm expected). | |
| 105 | + | |
| 106 | +## Portability (fixed) | |
| 107 | +Width mismatch (d 128 → 96) and depth mismatch (4 → 6 layers) with the task-free Procrustes map at L1 → L1 | |
| 108 | +(the layer pair selected in exploration) and L0 → L0; stride-2 pair at L2 → L2 and L3 → L3. | |
| 109 | + | |
| 110 | +## Exploratory (not confirmatory) | |
| 111 | +Everything else produced by the script (layer grid, dose, other maps, steering, other k) is reported as | |
| 112 | +exploratory and labelled so in the paper. | |
| 113 | + | |
| 114 | +## Tier 1 (to be frozen in a separate section after the development run completes) | |
added
experiments/manifests/graft_tier0_30e3644aa801.json
+90 −0
@@ -0,0 +1,90 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "models": "matrix_v1", | |
| 4 | + "protocol": "v2-unrelated-procrustes-reference", | |
| 5 | + "quick": false, | |
| 6 | + "seed_base": 30000, | |
| 7 | + "tag": "main" | |
| 8 | + }, | |
| 9 | + "created_utc": "2026-11-09T07:36:09+00:00", | |
| 10 | + "data_hashes": { | |
| 11 | + "align_target": { | |
| 12 | + "hash": "2aadb9513aeabf54", | |
| 13 | + "n": 3000, | |
| 14 | + "seed": 30001 | |
| 15 | + }, | |
| 16 | + "align_unrelated": { | |
| 17 | + "hash": "19a475dcc593cb0d", | |
| 18 | + "n": 3000, | |
| 19 | + "seed": 30002 | |
| 20 | + }, | |
| 21 | + "comp_heldout": { | |
| 22 | + "hash": "9c6da34a8ad49288", | |
| 23 | + "n": 1000, | |
| 24 | + "seed": 30012 | |
| 25 | + }, | |
| 26 | + "control_iid": { | |
| 27 | + "hash": "98a88deb1a923d81", | |
| 28 | + "n": 1000, | |
| 29 | + "seed": 30011 | |
| 30 | + }, | |
| 31 | + "len_ood": { | |
| 32 | + "hash": "1e5385df81ec873b", | |
| 33 | + "n": 500, | |
| 34 | + "seed": 30013 | |
| 35 | + }, | |
| 36 | + "target_iid": { | |
| 37 | + "hash": "9a69f681d0b62bbb", | |
| 38 | + "n": 1000, | |
| 39 | + "seed": 30010 | |
| 40 | + } | |
| 41 | + }, | |
| 42 | + "experiment_id": "graft_tier0", | |
| 43 | + "git": { | |
| 44 | + "branch": "main", | |
| 45 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 46 | + "dirty": true | |
| 47 | + }, | |
| 48 | + "hardware": { | |
| 49 | + "chip": "Apple M5 Max", | |
| 50 | + "cpu_count": 18, | |
| 51 | + "hostname_hash": "9ad7358c662e", | |
| 52 | + "machine": "arm64", | |
| 53 | + "memory_gb": 48.0, | |
| 54 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 55 | + "torch_cuda": false, | |
| 56 | + "torch_mps": true | |
| 57 | + }, | |
| 58 | + "history": [ | |
| 59 | + { | |
| 60 | + "note": "", | |
| 61 | + "status": "running", | |
| 62 | + "utc": "2026-11-09T07:36:11+00:00" | |
| 63 | + }, | |
| 64 | + { | |
| 65 | + "note": "", | |
| 66 | + "status": "completed", | |
| 67 | + "utc": "2026-11-09T07:39:17+00:00" | |
| 68 | + } | |
| 69 | + ], | |
| 70 | + "interpretation": "", | |
| 71 | + "libraries": { | |
| 72 | + "mlx": "?", | |
| 73 | + "mlx_lm": "0.31.3", | |
| 74 | + "numpy": "2.4.4", | |
| 75 | + "pydantic": "2.13.4", | |
| 76 | + "python": "3.14.4", | |
| 77 | + "safetensors": "0.7.0", | |
| 78 | + "scipy": "1.17.1", | |
| 79 | + "torch": "2.12.0", | |
| 80 | + "transformers": "5.8.1" | |
| 81 | + }, | |
| 82 | + "outputs": { | |
| 83 | + "items": "artifacts/runs/graft_tier0_30e3644aa801", | |
| 84 | + "results": "experiments/summaries/graft_tier0_30e3644aa801/results.json" | |
| 85 | + }, | |
| 86 | + "run_id": "graft_tier0_30e3644aa801", | |
| 87 | + "seeds": {}, | |
| 88 | + "status": "completed", | |
| 89 | + "warnings": [] | |
| 90 | +} | |
| \ No newline at end of file | ||
added
experiments/manifests/graft_tier0_confirmatory_0c2257f6803e.json
+90 −0
@@ -0,0 +1,90 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "models": "matrix_v1", | |
| 4 | + "protocol": "v2-unrelated-procrustes-reference", | |
| 5 | + "quick": false, | |
| 6 | + "seed_base": 90000, | |
| 7 | + "tag": "confirmatory" | |
| 8 | + }, | |
| 9 | + "created_utc": "2026-11-09T07:41:03+00:00", | |
| 10 | + "data_hashes": { | |
| 11 | + "align_target": { | |
| 12 | + "hash": "3afb3d9322bd4e85", | |
| 13 | + "n": 3000, | |
| 14 | + "seed": 90001 | |
| 15 | + }, | |
| 16 | + "align_unrelated": { | |
| 17 | + "hash": "ce28064949d5c649", | |
| 18 | + "n": 3000, | |
| 19 | + "seed": 90002 | |
| 20 | + }, | |
| 21 | + "comp_heldout": { | |
| 22 | + "hash": "89f1988aff8d8535", | |
| 23 | + "n": 1000, | |
| 24 | + "seed": 90012 | |
| 25 | + }, | |
| 26 | + "control_iid": { | |
| 27 | + "hash": "ad4f0fde325b0378", | |
| 28 | + "n": 1000, | |
| 29 | + "seed": 90011 | |
| 30 | + }, | |
| 31 | + "len_ood": { | |
| 32 | + "hash": "c1179ed20c26701a", | |
| 33 | + "n": 500, | |
| 34 | + "seed": 90013 | |
| 35 | + }, | |
| 36 | + "target_iid": { | |
| 37 | + "hash": "c104c5c2174007f6", | |
| 38 | + "n": 1000, | |
| 39 | + "seed": 90010 | |
| 40 | + } | |
| 41 | + }, | |
| 42 | + "experiment_id": "graft_tier0_confirmatory", | |
| 43 | + "git": { | |
| 44 | + "branch": "main", | |
| 45 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 46 | + "dirty": true | |
| 47 | + }, | |
| 48 | + "hardware": { | |
| 49 | + "chip": "Apple M5 Max", | |
| 50 | + "cpu_count": 18, | |
| 51 | + "hostname_hash": "9ad7358c662e", | |
| 52 | + "machine": "arm64", | |
| 53 | + "memory_gb": 48.0, | |
| 54 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 55 | + "torch_cuda": false, | |
| 56 | + "torch_mps": true | |
| 57 | + }, | |
| 58 | + "history": [ | |
| 59 | + { | |
| 60 | + "note": "", | |
| 61 | + "status": "running", | |
| 62 | + "utc": "2026-11-09T07:41:05+00:00" | |
| 63 | + }, | |
| 64 | + { | |
| 65 | + "note": "", | |
| 66 | + "status": "completed", | |
| 67 | + "utc": "2026-11-09T07:44:03+00:00" | |
| 68 | + } | |
| 69 | + ], | |
| 70 | + "interpretation": "", | |
| 71 | + "libraries": { | |
| 72 | + "mlx": "?", | |
| 73 | + "mlx_lm": "0.31.3", | |
| 74 | + "numpy": "2.4.4", | |
| 75 | + "pydantic": "2.13.4", | |
| 76 | + "python": "3.14.4", | |
| 77 | + "safetensors": "0.7.0", | |
| 78 | + "scipy": "1.17.1", | |
| 79 | + "torch": "2.12.0", | |
| 80 | + "transformers": "5.8.1" | |
| 81 | + }, | |
| 82 | + "outputs": { | |
| 83 | + "items": "artifacts/runs/graft_tier0_confirmatory_0c2257f6803e", | |
| 84 | + "results": "experiments/summaries/graft_tier0_confirmatory_0c2257f6803e/results.json" | |
| 85 | + }, | |
| 86 | + "run_id": "graft_tier0_confirmatory_0c2257f6803e", | |
| 87 | + "seeds": {}, | |
| 88 | + "status": "completed", | |
| 89 | + "warnings": [] | |
| 90 | +} | |
| \ No newline at end of file | ||
added
experiments/manifests/graft_tier0_f50a28ca1bf7.json
+89 −0
@@ -0,0 +1,89 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "models": "matrix_v1", | |
| 4 | + "quick": false, | |
| 5 | + "seed_base": 30000, | |
| 6 | + "tag": "main" | |
| 7 | + }, | |
| 8 | + "created_utc": "2026-11-09T07:31:00+00:00", | |
| 9 | + "data_hashes": { | |
| 10 | + "align_target": { | |
| 11 | + "hash": "2aadb9513aeabf54", | |
| 12 | + "n": 3000, | |
| 13 | + "seed": 30001 | |
| 14 | + }, | |
| 15 | + "align_unrelated": { | |
| 16 | + "hash": "19a475dcc593cb0d", | |
| 17 | + "n": 3000, | |
| 18 | + "seed": 30002 | |
| 19 | + }, | |
| 20 | + "comp_heldout": { | |
| 21 | + "hash": "9c6da34a8ad49288", | |
| 22 | + "n": 1000, | |
| 23 | + "seed": 30012 | |
| 24 | + }, | |
| 25 | + "control_iid": { | |
| 26 | + "hash": "98a88deb1a923d81", | |
| 27 | + "n": 1000, | |
| 28 | + "seed": 30011 | |
| 29 | + }, | |
| 30 | + "len_ood": { | |
| 31 | + "hash": "1e5385df81ec873b", | |
| 32 | + "n": 500, | |
| 33 | + "seed": 30013 | |
| 34 | + }, | |
| 35 | + "target_iid": { | |
| 36 | + "hash": "9a69f681d0b62bbb", | |
| 37 | + "n": 1000, | |
| 38 | + "seed": 30010 | |
| 39 | + } | |
| 40 | + }, | |
| 41 | + "experiment_id": "graft_tier0", | |
| 42 | + "git": { | |
| 43 | + "branch": "main", | |
| 44 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 45 | + "dirty": true | |
| 46 | + }, | |
| 47 | + "hardware": { | |
| 48 | + "chip": "Apple M5 Max", | |
| 49 | + "cpu_count": 18, | |
| 50 | + "hostname_hash": "9ad7358c662e", | |
| 51 | + "machine": "arm64", | |
| 52 | + "memory_gb": 48.0, | |
| 53 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 54 | + "torch_cuda": false, | |
| 55 | + "torch_mps": true | |
| 56 | + }, | |
| 57 | + "history": [ | |
| 58 | + { | |
| 59 | + "note": "", | |
| 60 | + "status": "running", | |
| 61 | + "utc": "2026-11-09T07:31:02+00:00" | |
| 62 | + }, | |
| 63 | + { | |
| 64 | + "note": "", | |
| 65 | + "status": "completed", | |
| 66 | + "utc": "2026-11-09T07:33:33+00:00" | |
| 67 | + } | |
| 68 | + ], | |
| 69 | + "interpretation": "", | |
| 70 | + "libraries": { | |
| 71 | + "mlx": "?", | |
| 72 | + "mlx_lm": "0.31.3", | |
| 73 | + "numpy": "2.4.4", | |
| 74 | + "pydantic": "2.13.4", | |
| 75 | + "python": "3.14.4", | |
| 76 | + "safetensors": "0.7.0", | |
| 77 | + "scipy": "1.17.1", | |
| 78 | + "torch": "2.12.0", | |
| 79 | + "transformers": "5.8.1" | |
| 80 | + }, | |
| 81 | + "outputs": { | |
| 82 | + "items": "artifacts/runs/graft_tier0_f50a28ca1bf7", | |
| 83 | + "results": "experiments/summaries/graft_tier0_f50a28ca1bf7/results.json" | |
| 84 | + }, | |
| 85 | + "run_id": "graft_tier0_f50a28ca1bf7", | |
| 86 | + "seeds": {}, | |
| 87 | + "status": "completed", | |
| 88 | + "warnings": [] | |
| 89 | +} | |
| \ No newline at end of file | ||
added
experiments/manifests/graft_tier0_quick_7d4278be3e5a.json
+89 −0
@@ -0,0 +1,89 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "models": "matrix_v1", | |
| 4 | + "quick": true, | |
| 5 | + "seed_base": 30000, | |
| 6 | + "tag": "main" | |
| 7 | + }, | |
| 8 | + "created_utc": "2026-11-09T07:25:13+00:00", | |
| 9 | + "data_hashes": { | |
| 10 | + "align_target": { | |
| 11 | + "hash": "2e9e93027c216aa2", | |
| 12 | + "n": 600, | |
| 13 | + "seed": 30001 | |
| 14 | + }, | |
| 15 | + "align_unrelated": { | |
| 16 | + "hash": "4467a0296d6dbcc4", | |
| 17 | + "n": 600, | |
| 18 | + "seed": 30002 | |
| 19 | + }, | |
| 20 | + "comp_heldout": { | |
| 21 | + "hash": "51ad8603009a9dd2", | |
| 22 | + "n": 300, | |
| 23 | + "seed": 30012 | |
| 24 | + }, | |
| 25 | + "control_iid": { | |
| 26 | + "hash": "b8916fa4b7243e6f", | |
| 27 | + "n": 300, | |
| 28 | + "seed": 30011 | |
| 29 | + }, | |
| 30 | + "len_ood": { | |
| 31 | + "hash": "e21b8c770ad0b017", | |
| 32 | + "n": 200, | |
| 33 | + "seed": 30013 | |
| 34 | + }, | |
| 35 | + "target_iid": { | |
| 36 | + "hash": "50bc867931acc1be", | |
| 37 | + "n": 300, | |
| 38 | + "seed": 30010 | |
| 39 | + } | |
| 40 | + }, | |
| 41 | + "experiment_id": "graft_tier0_quick", | |
| 42 | + "git": { | |
| 43 | + "branch": "main", | |
| 44 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 45 | + "dirty": true | |
| 46 | + }, | |
| 47 | + "hardware": { | |
| 48 | + "chip": "Apple M5 Max", | |
| 49 | + "cpu_count": 18, | |
| 50 | + "hostname_hash": "9ad7358c662e", | |
| 51 | + "machine": "arm64", | |
| 52 | + "memory_gb": 48.0, | |
| 53 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 54 | + "torch_cuda": false, | |
| 55 | + "torch_mps": true | |
| 56 | + }, | |
| 57 | + "history": [ | |
| 58 | + { | |
| 59 | + "note": "", | |
| 60 | + "status": "running", | |
| 61 | + "utc": "2026-11-09T07:25:15+00:00" | |
| 62 | + }, | |
| 63 | + { | |
| 64 | + "note": "", | |
| 65 | + "status": "completed", | |
| 66 | + "utc": "2026-11-09T07:26:11+00:00" | |
| 67 | + } | |
| 68 | + ], | |
| 69 | + "interpretation": "", | |
| 70 | + "libraries": { | |
| 71 | + "mlx": "?", | |
| 72 | + "mlx_lm": "0.31.3", | |
| 73 | + "numpy": "2.4.4", | |
| 74 | + "pydantic": "2.13.4", | |
| 75 | + "python": "3.14.4", | |
| 76 | + "safetensors": "0.7.0", | |
| 77 | + "scipy": "1.17.1", | |
| 78 | + "torch": "2.12.0", | |
| 79 | + "transformers": "5.8.1" | |
| 80 | + }, | |
| 81 | + "outputs": { | |
| 82 | + "items": "artifacts/runs/graft_tier0_quick_7d4278be3e5a", | |
| 83 | + "results": "experiments/summaries/graft_tier0_quick_7d4278be3e5a/results.json" | |
| 84 | + }, | |
| 85 | + "run_id": "graft_tier0_quick_7d4278be3e5a", | |
| 86 | + "seeds": {}, | |
| 87 | + "status": "completed", | |
| 88 | + "warnings": [] | |
| 89 | +} | |
| \ No newline at end of file | ||
added
experiments/manifests/tier1_taskvector_e105e3d91386.json
+56 −0
@@ -0,0 +1,56 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "k": 8, | |
| 4 | + "pairs": [ | |
| 5 | + "qwen3b:qwen1.5b", | |
| 6 | + "qwen1.5b:qwen3b", | |
| 7 | + "llama3b:qwen3b", | |
| 8 | + "qwen3b:llama3b" | |
| 9 | + ], | |
| 10 | + "quick": false, | |
| 11 | + "split": "dev", | |
| 12 | + "task_seed": 0 | |
| 13 | + }, | |
| 14 | + "created_utc": "2026-11-09T07:46:30+00:00", | |
| 15 | + "data_hashes": {}, | |
| 16 | + "experiment_id": "tier1_taskvector", | |
| 17 | + "git": { | |
| 18 | + "branch": "main", | |
| 19 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 20 | + "dirty": true | |
| 21 | + }, | |
| 22 | + "hardware": { | |
| 23 | + "chip": "Apple M5 Max", | |
| 24 | + "cpu_count": 18, | |
| 25 | + "hostname_hash": "9ad7358c662e", | |
| 26 | + "machine": "arm64", | |
| 27 | + "memory_gb": 48.0, | |
| 28 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 29 | + "torch_cuda": false, | |
| 30 | + "torch_mps": true | |
| 31 | + }, | |
| 32 | + "history": [ | |
| 33 | + { | |
| 34 | + "note": "", | |
| 35 | + "status": "running", | |
| 36 | + "utc": "2026-11-09T07:46:33+00:00" | |
| 37 | + } | |
| 38 | + ], | |
| 39 | + "interpretation": "", | |
| 40 | + "libraries": { | |
| 41 | + "mlx": "?", | |
| 42 | + "mlx_lm": "0.31.3", | |
| 43 | + "numpy": "2.4.4", | |
| 44 | + "pydantic": "2.13.4", | |
| 45 | + "python": "3.14.4", | |
| 46 | + "safetensors": "0.7.0", | |
| 47 | + "scipy": "1.17.1", | |
| 48 | + "torch": "2.12.0", | |
| 49 | + "transformers": "5.8.1" | |
| 50 | + }, | |
| 51 | + "outputs": {}, | |
| 52 | + "run_id": "tier1_taskvector_e105e3d91386", | |
| 53 | + "seeds": {}, | |
| 54 | + "status": "running", | |
| 55 | + "warnings": [] | |
| 56 | +} | |
| \ No newline at end of file | ||
added
experiments/manifests/tier1_taskvector_quick_b89f92479155.json
+77 −0
@@ -0,0 +1,77 @@ | ||
| 1 | +{ | |
| 2 | + "config": { | |
| 3 | + "k": 8, | |
| 4 | + "pairs": [ | |
| 5 | + "qwen3b:qwen1.5b" | |
| 6 | + ], | |
| 7 | + "quick": true, | |
| 8 | + "split": "dev", | |
| 9 | + "task_seed": 0 | |
| 10 | + }, | |
| 11 | + "created_utc": "2026-11-09T07:29:41+00:00", | |
| 12 | + "data_hashes": { | |
| 13 | + "addthree": { | |
| 14 | + "hash": "63af249180d379b8", | |
| 15 | + "n_queries": 12 | |
| 16 | + }, | |
| 17 | + "antonym": { | |
| 18 | + "hash": "22992056ec21621c", | |
| 19 | + "n_queries": 12 | |
| 20 | + }, | |
| 21 | + "capital": { | |
| 22 | + "hash": "0ce7fe08025fd9c5", | |
| 23 | + "n_queries": 12 | |
| 24 | + }, | |
| 25 | + "morph": { | |
| 26 | + "hash": "313569abbc843a4f", | |
| 27 | + "n_queries": 12 | |
| 28 | + } | |
| 29 | + }, | |
| 30 | + "experiment_id": "tier1_taskvector_quick", | |
| 31 | + "git": { | |
| 32 | + "branch": "main", | |
| 33 | + "commit": "3c8aa79b74d2cc497e2fb506375ad8b3d2c30882", | |
| 34 | + "dirty": true | |
| 35 | + }, | |
| 36 | + "hardware": { | |
| 37 | + "chip": "Apple M5 Max", | |
| 38 | + "cpu_count": 18, | |
| 39 | + "hostname_hash": "9ad7358c662e", | |
| 40 | + "machine": "arm64", | |
| 41 | + "memory_gb": 48.0, | |
| 42 | + "platform": "macOS-27.0-arm64-arm-64bit-Mach-O", | |
| 43 | + "torch_cuda": false, | |
| 44 | + "torch_mps": true | |
| 45 | + }, | |
| 46 | + "history": [ | |
| 47 | + { | |
| 48 | + "note": "", | |
| 49 | + "status": "running", | |
| 50 | + "utc": "2026-11-09T07:29:44+00:00" | |
| 51 | + }, | |
| 52 | + { | |
| 53 | + "note": "", | |
| 54 | + "status": "completed", | |
| 55 | + "utc": "2026-11-09T07:32:14+00:00" | |
| 56 | + } | |
| 57 | + ], | |
| 58 | + "interpretation": "", | |
| 59 | + "libraries": { | |
| 60 | + "mlx": "?", | |
| 61 | + "mlx_lm": "0.31.3", | |
| 62 | + "numpy": "2.4.4", | |
| 63 | + "pydantic": "2.13.4", | |
| 64 | + "python": "3.14.4", | |
| 65 | + "safetensors": "0.7.0", | |
| 66 | + "scipy": "1.17.1", | |
| 67 | + "torch": "2.12.0", | |
| 68 | + "transformers": "5.8.1" | |
| 69 | + }, | |
| 70 | + "outputs": { | |
| 71 | + "results": "experiments/summaries/tier1_taskvector_quick_b89f92479155/results.json" | |
| 72 | + }, | |
| 73 | + "run_id": "tier1_taskvector_quick_b89f92479155", | |
| 74 | + "seeds": {}, | |
| 75 | + "status": "completed", | |
| 76 | + "warnings": [] | |
| 77 | +} | |
| \ No newline at end of file | ||
modified
experiments/registry/runs.jsonl
+19 −0
@@ -4,3 +4,22 @@ | ||
| 4 | 4 | {"config_hash": "451ef5087182", "experiment_id": "pilot_tier0_opseq", "run_id": "pilot_tier0_opseq_451ef5087182", "status": "planned", "utc": "2026-11-09T06:49:37+00:00"} |
| 5 | 5 | {"experiment_id": "pilot_tier0_opseq", "run_id": "pilot_tier0_opseq_451ef5087182", "status": "running", "utc": "2026-11-09T06:49:38+00:00"} |
| 6 | 6 | {"experiment_id": "pilot_tier0_opseq", "results": "experiments/summaries/pilot_tier0_opseq_451ef5087182/results.json", "run_id": "pilot_tier0_opseq_451ef5087182", "status": "completed", "utc": "2026-11-09T06:54:13+00:00"} |
| 7 | +{"config_hash": "7d4278be3e5a", "experiment_id": "graft_tier0_quick", "run_id": "graft_tier0_quick_7d4278be3e5a", "status": "planned", "utc": "2026-11-09T07:25:15+00:00"} | |
| 8 | +{"experiment_id": "graft_tier0_quick", "run_id": "graft_tier0_quick_7d4278be3e5a", "status": "running", "utc": "2026-11-09T07:25:15+00:00"} | |
| 9 | +{"experiment_id": "graft_tier0_quick", "results": "experiments/summaries/graft_tier0_quick_7d4278be3e5a/results.json", "run_id": "graft_tier0_quick_7d4278be3e5a", "status": "completed", "utc": "2026-11-09T07:26:11+00:00"} | |
| 10 | +{"config_hash": "b89f92479155", "experiment_id": "tier1_taskvector_quick", "run_id": "tier1_taskvector_quick_b89f92479155", "status": "planned", "utc": "2026-11-09T07:29:44+00:00"} | |
| 11 | +{"config_hash": "f50a28ca1bf7", "experiment_id": "graft_tier0", "run_id": "graft_tier0_f50a28ca1bf7", "status": "planned", "utc": "2026-11-09T07:31:02+00:00"} | |
| 12 | +{"experiment_id": "graft_tier0", "run_id": "graft_tier0_f50a28ca1bf7", "status": "running", "utc": "2026-11-09T07:31:02+00:00"} | |
| 13 | +{"experiment_id": "tier1_taskvector_quick", "run_id": "tier1_taskvector_quick_b89f92479155", "status": "completed", "utc": "2026-11-09T07:32:14+00:00"} | |
| 14 | +{"experiment_id": "graft_tier0", "results": "experiments/summaries/graft_tier0_f50a28ca1bf7/results.json", "run_id": "graft_tier0_f50a28ca1bf7", "status": "completed", "utc": "2026-11-09T07:33:33+00:00"} | |
| 15 | +{"config_hash": "e105e3d91386", "experiment_id": "tier1_taskvector", "run_id": "tier1_taskvector_e105e3d91386", "status": "planned", "utc": "2026-11-09T07:34:21+00:00"} | |
| 16 | +{"error": "AttributeError(\"'WrappedBlock' object has no attribute 'use_sliding'\")", "experiment_id": "tier1_taskvector", "run_id": "tier1_taskvector_e105e3d91386", "status": "failed", "utc": "2026-11-09T07:34:22+00:00"} | |
| 17 | +{"config_hash": "30e3644aa801", "experiment_id": "graft_tier0", "run_id": "graft_tier0_30e3644aa801", "status": "planned", "utc": "2026-11-09T07:36:11+00:00"} | |
| 18 | +{"experiment_id": "graft_tier0", "run_id": "graft_tier0_30e3644aa801", "status": "running", "utc": "2026-11-09T07:36:11+00:00"} | |
| 19 | +{"config_hash": "e105e3d91386", "experiment_id": "tier1_taskvector", "run_id": "tier1_taskvector_e105e3d91386", "status": "planned", "utc": "2026-11-09T07:36:38+00:00"} | |
| 20 | +{"experiment_id": "graft_tier0", "results": "experiments/summaries/graft_tier0_30e3644aa801/results.json", "run_id": "graft_tier0_30e3644aa801", "status": "completed", "utc": "2026-11-09T07:39:17+00:00"} | |
| 21 | +{"config_hash": "0c2257f6803e", "experiment_id": "graft_tier0_confirmatory", "run_id": "graft_tier0_confirmatory_0c2257f6803e", "status": "planned", "utc": "2026-11-09T07:41:05+00:00"} | |
| 22 | +{"experiment_id": "graft_tier0_confirmatory", "run_id": "graft_tier0_confirmatory_0c2257f6803e", "status": "running", "utc": "2026-11-09T07:41:05+00:00"} | |
| 23 | +{"experiment_id": "graft_tier0_confirmatory", "results": "experiments/summaries/graft_tier0_confirmatory_0c2257f6803e/results.json", "run_id": "graft_tier0_confirmatory_0c2257f6803e", "status": "completed", "utc": "2026-11-09T07:44:03+00:00"} | |
| 24 | +{"error": "ValueError(\"invalid literal for int() with base 10: 'rocrustes'\")", "experiment_id": "tier1_taskvector", "run_id": "tier1_taskvector_e105e3d91386", "status": "failed", "utc": "2026-11-09T07:45:09+00:00"} | |
| 25 | +{"config_hash": "e105e3d91386", "experiment_id": "tier1_taskvector", "run_id": "tier1_taskvector_e105e3d91386", "status": "planned", "utc": "2026-11-09T07:46:33+00:00"} | |
added
experiments/summaries/graft_tier0_30e3644aa801/persistent/adapter_graft.npz
+0 −0
Binary file not shown.
added
experiments/summaries/graft_tier0_30e3644aa801/persistent/fresh_process_eval.json
+41 −0
@@ -0,0 +1,41 @@ | ||
| 1 | +{ | |
| 2 | + "utc": "2026-11-09T07:40:13+00:00", | |
| 3 | + "run": "graft_tier0_30e3644aa801", | |
| 4 | + "recipient": "recipient_s0", | |
| 5 | + "hook": "resid_post.0", | |
| 6 | + "fresh_process": true, | |
| 7 | + "splits": { | |
| 8 | + "target_iid": "e1cb4467208e4c8c", | |
| 9 | + "control_iid": "ddb8b86e4022dbbb" | |
| 10 | + }, | |
| 11 | + "target_iid": { | |
| 12 | + "base": 0.14, | |
| 13 | + "with_saved_adapter": 0.414, | |
| 14 | + "ci95_with_saved_adapter": { | |
| 15 | + "estimate": 0.414, | |
| 16 | + "low": 0.38347969488028666, | |
| 17 | + "high": 0.4449116790506519, | |
| 18 | + "level": 0.95, | |
| 19 | + "n_items": 1000, | |
| 20 | + "n_clusters": 762, | |
| 21 | + "n_boot": 2000 | |
| 22 | + }, | |
| 23 | + "omega_step_base": 0.118, | |
| 24 | + "omega_step_with_saved_adapter": 0.455 | |
| 25 | + }, | |
| 26 | + "control_iid": { | |
| 27 | + "base": 1.0, | |
| 28 | + "with_saved_adapter": 0.981, | |
| 29 | + "ci95_with_saved_adapter": { | |
| 30 | + "estimate": 0.981, | |
| 31 | + "low": 0.972, | |
| 32 | + "high": 0.9890219560878244, | |
| 33 | + "level": 0.95, | |
| 34 | + "n_items": 1000, | |
| 35 | + "n_clusters": 965, | |
| 36 | + "n_boot": 2000 | |
| 37 | + }, | |
| 38 | + "omega_step_base": null, | |
| 39 | + "omega_step_with_saved_adapter": null | |
| 40 | + } | |
| 41 | +} | |
| \ No newline at end of file | ||
added
experiments/summaries/graft_tier0_30e3644aa801/results.json
+19330 −0
Large diff (19,330 lines) is not loaded by default to keep the page fast.Load diff
Diff truncated — file too large.