project: modelmap document: Research log (append-only) author: Simon-Pierre Boucher contact: contact@spboucher.ai website: https://modelmap.io created: 2026-08-12 status: draft
modelmap — Research log
Append-only. Every entry records: date/time with timezone, question, experiment, result, interpretation, decision. The entire reasoning process must be auditable.
2026-08-12 00:30 EDT — Project bootstrap
Question. None yet — administrative bootstrap.
Action. Repository initialized from the research charter (CLAUDE.md):
full skeleton per charter §3, mandatory author headers on every source file,
tools/check_headers.py written first (charter §0.1 rule 3), experiment
directories A–H scaffolded with empty seven-field scientific blocks
(hypotheses will be registered before any run), and the public platform
(site/) built and deployed to https://www.modelmap.io on MacLustr node
M3U96b (PM2 + ngrok), mirroring the architecture of the sister project
localvm-research (www.localvm.dev) so both research platforms stay coherent.
Decision. Next step is Phase 1: ultra-deep literature research across the ten areas of charter §4 (observational probing, causal methods, feature decomposition, circuits, weight-space cartography, knowledge editing, cross-model comparison, statistics/epistemology, systems, atlas design). No mapping code is written before the state-of-the-art map (Phase 2) exists.
2026-08-12 02:00 EDT — Phase 1 sweep #1: ten-area literature survey
Question. What does the field already know, per charter §4.1–4.10, and which of modelmap's core bets survive first contact with the literature?
Method. Five parallel web-verified survey passes (two charter areas each);
every source logged with URL + access date in research/bibliography.md
(~200 entries); per-area reading notes written to research/notes/4.X_*.md.
This is sweep #1 of Phase 1 — deeper follow-ups (reading full papers behind
the highest-stakes claims, backward/forward citation chasing) remain.
Key results (detail in the notes):
- The quantization gap is real (Q4/expF bet confirmed). ~5 shallow papers exist on quantization × interpretability; none does probe-drift, circuit survival, Q2/Q3 internals, or GGUF-runtime introspection. Open territory.
- The weight-only pre-screen gap is real but partially anticipated (expE). WeightWatcher (behavioral quality from spectra), Super Weight (weight-visible outliers → massive activations), Watch-the-Weights (2025) are adjacent; no systematic weight-only-statistics → activation-level-properties study exists.
- Published noise floors to build on: only ~30% of SAE latents replicate across seeds (Paulo & Belrose 2025); only 1–5% of neurons are universal across seeds (Gurnee 2024); global platonic-convergence metrics deflate under calibration (2026). These calibrate expA/expD and our replication-rate metric.
- Central methodological caution: localization ≠ editability (Hase 2023); faithfulness scores are not robust to ablation-scheme choice (Miller 2024); subspace patching can hit dormant pathways (Makelov vs Wu, unresolved); random-init baselines + FDR control are mandatory (Dead Salmons 2025).
- Apple Silicon tooling is a desert (Q4 confirmed): TransformerLens MPS is opt-in/unstable; editing repos are CUDA-first; only mlxterp (tiny, 2025) targets MLX; llama.cpp eval-callback enables quantized-runtime capture but nothing wraps it; no macOS activation-store or hook-overhead benchmarks exist anywhere.
- Atlas prior-art check: no existing artifact host combines versioned entries + regeneration recipes + confidence levels + negative results (verified across Neuronpedia, Neuroscope, Transluce, circuit-tracer, Gemma Scope). "Model atlas" name collision with Horwitz 2025 (inter-model graph, not internals) noted for novelty_check.md.
Interpretation (confidence: this is a literature map, not a result). The charter's bets (quantization maps, weight-only pre-screens, Mac-local tooling, provenance-first atlas) all survive; several have adjacent 2025–2026 work converging on them, so speed matters. The field's own rigor wave (MIB, Tracr/InterpBench validation, statistical-inference framing) supplies ready-made harnesses for our confidence taxonomy.
Decision. Proceed to Phase 2 (research/state_of_the_art.md): organize
these techniques into the charter §5 table with epistemic status per
technique, then Phase 3 gap generation (≥20 candidates). Validation-first
rule adopted: every future pipeline is validated on Tracr/InterpBench-style
ground truth before touching a real model.
2026-08-12 02:45 EDT — Phase 2: state-of-the-art map written
Question. Organize Phase 1 into the charter §5 taxonomy: what does each technique actually measure, at what cost on a Mac, with what failure modes and epistemic status — and where are the overlaps and novelty traps?
Action. Wrote research/state_of_the_art.md: ~40 techniques across six
families + cross-cutting instruments, each with the eleven-field block
(condensed), epistemic flags (established / contested / debunked-in-part),
an overlap analysis (6 "secretly the same thing" identities), a list of
already-tried combinations, a novelty-trap list, and an estimated Mac cost
frontier table (16/32/64 GB) that Experiment H must convert to measured.
Key synthesis judgments (recorded, not yet evidence):
- Screening/verification split adopted: attribution patching (EAP-IG) screens, real patching verifies; auto-interp labels never exceed Level 1 without intervention scoring.
- One-estimator-family insight: SAE/transcoder/crosscoder/CLT share the seed-replication pathology — replication findings transfer across them.
- CKA-class metrics are never standalone evidence: ≥2 metrics + nulls + outlier-stripped variants required.
- The atlas map-card schema fields fall out of Phase 2: pinned patching protocol, ablation-scheme curves, featurizer class, seed replication rate, per-dataset agreement.
Decision. Proceed to Phase 3 (research/research_gaps.md): ≥20
substantially different candidate directions, each with the six-field gap
block and a smallest falsifying experiment runnable on a Mac. Seeds from
Phase 2: quantization × internals; weight-only pre-screens vs activation
ground truth; replication-rate-first artifacts; quantized-runtime capture;
provenance-first atlas schema; cross-model coordinate systems anchored on
induction heads.
2026-08-12 03:20 EDT — Phase 3: 24 research gaps registered
Question. Which substantially different directions are (a) genuinely open per the Phase 1/2 evidence, (b) falsifiable with a Mac-scale experiment, (c) worth ranking in Phase 4?
Action. Wrote research/research_gaps.md: 24 gaps (G01–G24) in seven
clusters — quantization×internals (G01–G05), weight-only pre-screens
(G06–G09), replication/method-agreement science (G10–G13), cross-model
coordinates (G14–G16), localization science (G17–G19), systems/tooling
(G20–G22), atlas methodology & localvm bridge (G23–G24). Every gap carries
the six-field block including its smallest falsifying Mac experiment.
All charter §6 example categories are covered; four gaps (G05, G08, G10,
G19) fall outside them. Noted that the 24 gaps share ~5 falsification
kernels, so harnesses amortize across gaps.
Interpretation. The falsifiers are deliberately harsh (e.g. G06 dies at cross-validated R²<0.2; G11 dies at κ≤0; G17 must separate Tracr from random-init before touching real models). Several gaps are informative in both outcomes (G05's runtime-vs-simulated discrepancy, G24's working-set negative), which is the profile the charter asks for.
Decision. Proceed to Phase 4 (research/candidate_ranking.md): score
all 24 gaps on the ten charter axes with written reasoning, select 3–5
prototype candidates. Prior expectation (to be tested by the scoring, not
assumed): the quantization cluster and the weight-only pre-screen cluster
combine high novelty with low cost; G10/G23 are infrastructure that every
other candidate needs regardless of ranking.
2026-08-12 03:50 EDT — Phase 4: candidates ranked and selected
Question. Which of the 24 gaps become prototype candidates, and in what order does everything else get built?
Action. Wrote research/candidate_ranking.md: full 24×10 score table
(convention: 10 always favorable, including complexity and risk), grouped
written reasoning, and selection. Updated experiments/candidate_01–04
READMEs with assignments.
Selection:
- candidate_01 — Weight-only pre-screen (G06 + G08 anchor, G03/G09): kill at cross-validated R² < 0.2 on Pythia-410M.
- candidate_02 — Quantization deformation atlas (G01 + G02, later G04/G05): Qwen3-0.6B FP16-vs-Q4 probe drift vs noise floor.
- candidate_03 — Localization index (G17 + G11/G12 as measurement layers): must separate Tracr (≈1) from random-init (≈0) first.
- candidate_04 — localvm working-set bridge (G24 + G09), reduced scope: run the domain-conditioned ablation falsifier before committing.
- Mandatory substrate first, outside the ranking: G20 (expH cost frontier), G10 (expA/expD noise floors), G23 (map cards v0), G13 (ablation-curves rule, adopted at zero cost).
Interpretation. The infrastructure quartet (G23 87, G20 86, G10 82, G13 75) tops the table by construction — every candidate presupposes it. The three main candidates fail on independent kernels (weights-regression / drift-vs-floor / index-validation), satisfying the charter's demand for genuinely distinct bets; each yields versioned artifacts even when negative. Cross-model coordinate work (G14–G16) is deliberately blocked on noise floors — alignment claims without floors are the field's known failure mode.
Decision. Phases 1–4 complete. Next: Phase 5 (experimental framework) — implement the substrate in order: (1) expH harness (hook overhead MLX vs MPS, storage formats on APFS, streaming throughput) reusing localvm patterns; (2) expA probe-reliability harness with the full controls doctrine; (3) map-cards v0 schema in src/modelmap/atlas enforced by tools/publish.py. Register hypotheses in experiments/micro/expH and expA before their first runs.
2026-08-12 05:30 EDT — Phase 5 substrate + expH run #1 (FIRST MEASURED RESULT)
Question. Build the substrate; then: which activation-store format wins on APFS, and what does capture actually cost on MLX vs PyTorch-MPS?
Built.
src/modelmap/atlas/mapcard.py— map-card schema v0 (G23): provenance + per-level requirements (L1: ≥3 seeds, ≥2 promptsets, replication_rate; L2: ≥2 methods; L3: interventions + featurizer class).tools/publish.pyis the gate: refuses any atlas entry without a valid card.src/modelmap/stats/replication.py— bootstrap CIs, BH-FDR, selectivity, Jaccard replication_rate (the §8.3 metric).src/modelmap/probes/linear.py— probe_with_control: every probe carries its shuffled-label control by construction. The unit test caught a real bug before any science:rng.shuffle(y[tr])shuffles a fancy-indexed COPY, so the "control" was training on true labels. Fixed; tests now verify the probe separates planted structure (selectivity>0.3) from pure noise (|selectivity|<0.15). 5/5 tests pass; ruff clean; env = Python 3.14.4, numpy 2.5.2, torch 2.13 (MPS), mlx 0.32, zarr 3.3.
expH run #1 (hypothesis registered BEFORE the run; M5 Max 48 GB, macOS 27.0; results/expH_capture_cost_frontier/20260812T052441Z/):
- (A) CONFIRMED. Random-batch reads (SAE-shuffle pattern, warm cache): raw-mmap 4.09 GB/s, safetensors(mmap) 4.26, zarr-uncompressed 1.27, zarr-zstd 0.38 → mmap beats zarr 3.2×/10.8×, past the pre-registered 2× bar. safetensors write wins at 8.10 GB/s (single large write).
- (B) CONFIRMED, asymmetrically. Capture overhead: torch-MPS retain 1.22× plain, +copy+write 1.47×; MLX retain 1.02× (capture nearly free, lazy-graph retention), +copy+write 1.11×. MLX baseline also 1.29× faster than torch-MPS on the identical synthetic 12-layer model.
- Confidence: Level 0–1 (3 repeats, tight variance, but single machine, warm cache, synthetic model — all declared in advance).
- Decisions licensed: activation stores = mmap-backed flat files (zarr eliminated for the shuffle pattern pending the cold-cache pass); MLX is the preferred capture backend; capture cost is not the bottleneck — the storage wall is.
Next. expH run #2 (cold cache) and #3 (real 0.5B checkpoint via mlx-lm); then expA first run (hypothesis registered: dataset variance > seed variance; harness validity gate = selectivity<0.05 on random-init). expA's output becomes the first real map card. Replicate expH grid on M3U96a/M2U64 to move the cost table cross-hardware.
2026-08-12 06:30 EDT — expH runs #2 & #3: first FALSIFIED hypothesis + first quantized capture
Questions. Does the warm-cache storage ordering survive a cold cache
(run #2, on M3U96a with sudo purge per repetition — also the first
cross-hardware point)? Do synthetic capture overheads transfer to a real
4-bit checkpoint (run #3, mlx-lm Qwen3-0.6B-4bit)?
Run #2 — FALSIFIED (the project's first registered-and-killed hypothesis). Cold random-batch reads on M3 Ultra: zarr-uncompressed 0.62 GB/s > safetensors-mmap 0.32 > zarr-zstd 0.19 > raw-mmap 0.14 — the warm ordering (mmap 3.2–10.8× ahead) fully INVERTS. Mechanism: cold mmap is page-fault IO (~8–16 KiB, QD1), exactly the regime localvm's SSD grid measured at ~0.07–0.14 GB/s; zarr read()s 32 MiB chunks — the ≥256 KiB regime where Apple NVMe delivers. Run #1 measured memory, not disk. The rule is IO granularity, not the container. Store design revised: chunk-aligned batched access mandatory for larger-than-RAM stores; run #4 registered (chunk-sorted ≥1 MiB mmap reads vs zarr, cold). Cross-project convergence with localvm expH is strong — the bridge works in both directions.
Run #3 — CONFIRMED, stronger than predicted. Real Qwen3-0.6B-4bit prefill (901 tokens, 28 layers): plain 28.5 ms → retain 28.6 ms (1.004× — capture is free under MLX lazy evaluation) → retain+cast+ mmap-write 36.4 ms (1.28×). First quantized-model activation capture in Python tooling (the §4.9 gap, now demonstrated). Engineering notes: d_model must be inferred from runtime activations (quantized embeddings pack weights); bf16 must be cast in MLX before NumPy.
Decisions. (1) Promote the Tap-wrapper pattern into src/modelmap/capture as the standard MLX capture layer — expA depends on it. (2) The published cost table will carry cache-regime as a first-class dimension (warm ≠ cold columns), and run #2's negative goes on the site's negative-results ledger once the atlas pipeline exists. (3) expA first run is now unblocked (capture layer + probes + stats all in place).
2026-08-12 06:45 EDT — expA run #1: validity gate FAILED → first atlas entry is a negative result
Question. Are per-layer probe maps seed-stable but dataset-sensitive (registered hypothesis), and does the harness pass its registered validity gate (random-init twin selectivity < 0.05)?
Built first. src/modelmap/capture/mlx_capture.py (Tap layer promoted from expH run #3, + random_init_twin architecture null); versioned promptsets v1 (6 files × 240 items, sha256 manifest, template-generated — limitation declared in the manifest itself).
Result (48 s on M5 Max, 2,160 captures + 1,260 probes).
- Primary hypothesis UNTESTABLE: ceiling everywhere (acc 1.000, seed SD 0.0000, dataset shift 0.0000, all 28 layers, all 3 properties, both sets).
- Validity gate FAILED, decisively: the random-init twin also reaches acc 1.00 at every layer (twin max selectivity 0.56–0.88 vs the 0.05 bar; mean real−twin selectivity within ±0.06). The probe map contains zero measurable trained-model signal — it reads the tokenizer + architecture prior. The shuffled-label control passed everywhere and would NOT have caught this; only the twin null did.
Interpretation. Level 1 for the negative claim (5 seeds × 2 sets × 3 properties). The probing-pitfalls literature reproduced in our own hands, caught by a pre-registered gate. Exactly what expA exists for: the noise floor turned out to be a ceiling.
Published. First atlas entry: atlas/qwen3-0.6b-4bit/probes/v1 with map.json (all per-layer profiles incl. twin), provenance.json, mapcard.json (negative_result=true, replication 1.00, Level 1) and confidence.md — validated by tools/publish.py and exported to the site. The atlas begins with a negative result, by design.
Decisions. (1) Probe maps are publishable only as REAL−TWIN differentials from now on — schema rule added to the map-card doctrine. (2) Promptsets v1 are re-designated as the positive-control corpus; v2 must remove lexical separability (shared vocabulary, structure-borne properties). (3) The twin null becomes a permanent fixture of every observational map. Next: expA run #2 on v2 promptsets.
2026-08-12 07:15 EDT — expA run #2: first POSITIVE maps + first real noise floor
Question. On token-balanced, structure-borne properties (v2 promptsets with overlap certificates), does the twin fall to chance, and does the trained model rise above it?
Result (88.6 s; results/expA_probe_reliability/20260812T063856Z).
- Strict twin gate (<0.05) falsified AGAIN, with an instructive gradient: word_order twin acc 0.96 (tokenization statistics of scrambles); agreement twin 0.73; arith_valid twin 0.56. Even matched word sets leave subword-level class signal. The binary gate is retired; the twin becomes a mandatory reported baseline and the DIFFERENTIAL is the map.
- agreement: first positive map — real−twin selectivity > 0.10 on 25/28 layers (max Δ +0.379; real acc 0.967 vs twin 0.729).
- arith_valid: positive — real 0.86/0.90 (mean/last) vs twin ~0.56; strongest in last-token reps (computation completes at "=").
- word_order: null-dominated (2/28 signal layers) — scrambled-vs-grammatical is NOT valid evidence of learned syntax at this granularity.
- First real noise floor: off ceiling, top-5-layer replication drops to ~0.54 with seed SD finally nonzero; dataset shift exceeds seed SD on only 3–8/28 layers (registered 1/3 threshold NOT met — seed and dataset variance are comparable in this regime).
- Positive control: v1 lang_id_A still at ceiling — harness intact.
Published. atlas/qwen3-0.6b-4bit/probes/v2 (Level 1, differential claims only, per-property verdicts incl. the word_order null-domination flag). Site charts generalized to render any probes atlas entry; home now leads with the agreement differential map next to v1's negative.
Decisions. (1) Twin gate: binary → reported baseline; differential maps are the standard probe artifact. (2) Level-2 path for agreement/ arith_valid: LEACE erasure as second method, then ablation on top layers (expC entry). (3) The ~0.54 replication number seeds expD's design (more seeds, tighter CIs). (4) The agreement differential map is candidate_02's quantization-drift target.
2026-08-12 07:45 EDT — expC run #1: the agreement map FAILS causal verification (survival ledger opens 0/1)
Question. Do the top-5 layers of the agreement differential probe map causally support agreement behavior under layer-skip ablation?
Result (5.7 s; pre-registered binary verdict). FALSIFIED. Baseline grammatical margin +4.63 (the 0.6B model robustly prefers correct agreement — sanity holds). Skip damage: top-5 differential layers (17,18,19,21,22) = +2.17, BELOW the random-5 mean (+3.14; p95 +4.85, 20 draws); bottom-5 differential (layers 0–4) = +4.99, the largest of all conditions. Where agreement information is most decodable above the architecture null is not where the computation is causally load-bearing. The Hase-class dissociation (localization ≠ causal support), measured end-to-end in our own pipeline within one day of standing it up.
Ledger. The correlational→causal survival rate — the charter §8.3 metric — is now live: 0/1. The atlas entry probes/v2 records the failed check in mapcard.interventions and confidence.md ("causal verification: attempted and failed"); the map stays Level 1 and its layer ranking is explicitly flagged as non-causal.
Caveats (registered in advance, both bit). Layer-skip is coarse: bottom-5 damage plausibly reflects GENERAL degradation (early layers break everything), not agreement-specific structure. Held-out pairs 89 < planned 200 (dedup exhausted the combo pool).
Decisions / next. expC run #2: (1) perplexity-normalized specificity per skip condition; (2) direction-level intervention — LEACE-erase the agreement direction in the forward pass at layer ℓ (a surgical test the probe map can legitimately pass); (3) larger held-out bank; then the same protocol on arith_valid. The pipeline now demonstrably runs the full charter loop: register → measure → verify causally → publish either way.
2026-08-12 08:15 EDT — expC run #2: ledger 0/2 — and the causal scan finds what the probes missed
Results (192 pairs, baseline margin +4.24; both hypotheses registered).
- P1 CONFIRMED: normalized by general (NLL) damage, run #1's bottom-5 spike was unspecific (specificity 0.51 < random mean 1.44); top-5 (2.51) sits above the random mean but below p95 — the skip family never singles out the probe map's layers.
- P2 FALSIFIED (ρ = −0.136, p = 0.76): survival ledger 0/2. The probe map's layer ranking anti-correlates with the causal profile.
- The discovery: erasing the diff-of-means agreement direction at ANY single layer 2–15 destroys most of the behavior (specific damage up to +3.97/+4.24 at L12), with random-direction controls netted out; the late layers the probes ranked highest carry little, and L18/L22 erasure slightly HELPS (suppressive components). The load-bearing object is a low-dimensional DIRECTION constructed early — not a late "place" where information is merely readable.
Doctrine consequence. Decodability-peak maps and causal-joint maps are different map types and the atlas must never conflate them (this is charter §2's distinction, now measured in-house at survival 0/2). The causal profile is NOT yet publishable by our own rules (single direction estimate, no seed replication) — expC run #3 will replicate it (direction from set B
- bootstrap seeds); if stable it becomes the atlas's first INTERVENTIONS map and probes/v2 gets a pointer to its causal counterpart.
Also noted. Early residual streams are fragile to ANY rank-1 deletion (random-direction damage +0.9…+2.5 at layers 2–9) — relevant to quantization sensitivity (candidate_02) and to localvm's working-set question (which layers tolerate compression).
2026-08-12 08:45 EDT — expC run #3: the publication gate refused the causal profile
Result (pre-registered rule). Replication FAILED: mean pairwise
Spearman ρ = 0.495 (< 0.7 required; min 0.176); the early≥3×late band
claim fails on 2 of 5 direction sources. make_interventions_mapcard.py
refused the atlas entry (exit 1) — the gate fired exactly as designed;
the atlas stays at two entries.
The decomposition the refusal exposed. Early band (layers 2–15): tightly replicated across all five sources (+2.98…+3.34 specific damage on a +4.24 baseline — erasing the estimated agreement direction anywhere early reliably destroys ~70–79% of the behavior). Late band (20–27): estimator noise (−0.44…+2.77), which retroactively explains run #2's anti-correlation — the probe ranking lives exactly where the causal profile is noise.
Decision. Run #4 will pre-register the NARROWER claim (early-band mean damage ≥ 2.5, fresh estimates + fresh behavioral bank; late band excluded as unstable). If it passes, the interventions map is published as a BAND claim, not a per-layer ranking, at Level 2. Meta-lesson for methodology.md: map artifacts must declare their stable granularity — per-layer rankings were too fine for this object; bands are the honest resolution.
2026-08-12 09:15 EDT — expC run #4: BAND claim passes — FIRST LEVEL-2 ATLAS ENTRY
Result (pre-registered; everything fresh). CONFIRMED — early-band (layers 2–15) mean specific damage per source: +3.35 / +3.23 / +3.30 / +3.26 / +3.33 / +3.27 (min +3.228 vs bar 2.5; spread 0.12 across six independent direction estimates; fresh bank baseline +4.45). Late band again unstable (+0.27…+2.83) and carries no claim, as declared.
Published. atlas/qwen3-0.6b-4bit/interventions/v1 — the project's first causal, Level-2 map: a single diff-of-means agreement direction, erased at any one layer in the early band, removes ~73–75% of the model's grammatical preference, replicated across six fresh estimators, netted against random-direction damage. The gate that refused run #3's per-layer version passed run #4's band version — granularity discipline enforced by tooling, start to finish. Site: the band map now leads the home page and the atlas entry renders mean / worst-source / random- reference curves.
The day's arc, as the atlas now shows it: probes/v1 (negative — architecture null wins), probes/v2 (Level 1 — differential signal, per-property verdicts), interventions/v1 (Level 2 — causal band claim), survival ledger 0/2 for correlational layer rankings, one publication-gate refusal on record. Every claim at its measured level.
Next. (1) Level-3 path: activation-addition steering (the direction should raise the margin where it is weak); (2) same band protocol on arith_valid; (3) candidate_02 entry: quantization drift of the band map (FP16 vs Q8 vs Q4); (4) expG entry: does the band replicate on Qwen3-1.7B?
2026-08-12 09:45 EDT — expC run #5: L3 gate refused — layer 12 is a textbook handle anyway
Result (conjunctive criterion, pre-registered). FAILED as a conjunction; make_l3_mapcard.py refused v2 (exit 1); interventions/v1 stays Level 2.
- L12: passes everything — strictly monotone dose-response (+1.95/+3.00/+4.45/+5.82/+6.79 across −2σ…+2σ), halved at −2σ, specific (random |Δ| 0.45 vs bound 1.11). A textbook causal handle.
- L08: near-monotone, not specific at 2σ (random |Δ| 2.97).
- L04: overdose regime — ±2σ collapses the margin AND random directions are equally destructive (|Δ| 4.40). Run #2's rank-1 fragility, dose-resolved: early layers tolerate no ~2σ perturbation of any kind.
Reading. Necessity everywhere in the band (Level-2 entry) coexists with controllability only where the layer tolerates perturbation. The dose scale (σ from mean-pooled stats) is a declared confound at early layers. Gate record now: refusal (run #3, per-layer) → pass (run #4, band, L2) → refusal (run #5, L3 conjunction). The atlas has never received a claim its evidence didn't carry.
Next. Run #6 candidates (to register before running): layer-local dose calibration + handle claim on the perturbation-tolerant sub-band; or the minimal L12 single-layer L3 claim with fresh direction estimates. Parallel tracks unchanged: arith_valid band, candidate_02 quantization drift, expG cross-model.
2026-08-12 10:15 EDT — expC run #6: L12 handle fails replication — Level 3 abandoned, program closed
Result (pre-registered kill rule). FALSIFIED on both prongs: only 1/4 fresh sources monotone (the POSITIVE dose arm is unstable); specificity did not replicate (random-direction |Δ| 3.36 vs bound 1.14 on fresh bank + fresh seeds — run #5's 0.45 at L12 was sampling luck of 3 draws). Halving at −2σ held 4/4: the negative (erasure-like) arm is robust, consistent with the Level-2 entry. Verdict: the agreement direction is NECESSARY but NOT a reliable additive handle. Level 3 abandoned for this object; steering program closed; interventions/v1 (Level 2) stands as the final causal claim for agreement at 0.6B.
The gate earned its keep a third time: had run #5's L12 observation been published without fresh re-registration, the atlas would now hold a false Level-3 claim. Final arc record: refuse (r3) → pass L2 (r4) → refuse (r5) → refuse (r6).
Methodology rule adopted: specificity controls need ≥10 random- direction draws with a percentile bound (3 was too few) — goes into methodology.md and the map-card doctrine.
Proceeding tracks (from the Level-2 base): arith_valid band protocol; candidate_02 quantization drift of the band map; expG cross-model replication on Qwen3-1.7B.