# Paper B — Where Retrofitted Recurrence Attaches: Injection Cliffs, Read-Invariance, and a KV-Sharing Hazard **One-sentence claim.** For loops retrofitted onto a frozen transformer, the write location is everything and the read location is nothing: performance falls off a one-layer cliff at the sensor→workspace boundary, is invariant to where the fed-back state is tapped, and — on KV-sharing architectures — becomes *structurally impossible* above the sharing boundary, a hazard that silently invalidates hook-based interventions far beyond this project. **Audience/venue.** Interpretability/analysis venue (e.g. BlackboxNLP-class workshop, or an interp track); alternatively TMLR. Cites Paper A for training recipe, Paper D for the lens. ## Claims and evidence manifest | # | claim | evidence | status | |---|---|---|---| | B1 | Anchor cliff: inject L14→52%, L13→34%, L12→29%, L11→25% (monotone, one-layer onset at lens boundary) | `results-band-{13_30,12_30,11_30}/eval*.json` + reference | ✅ | | B2 | Tap invariance: taps 23/27/30/32/34 statistically flat (incl. motor/final layer); 40%-shorter loop body matches | `results-tap*/eval*.json` (note: 27/32/34 on H200, 23 on Spark, k0 anchors align) | ✅ | | B3 | KV-sharing hazard: E2B layers 15–34 reuse K/V from ≤14; band re-runs entered ≥15 are bit-exact nulls in training (zero grad) and behavioral nulls in eval (Δlogit up to ~11 with 0 argmax flips) | arm 17–27/24–34 logs; forensic probes (transcribe from session); `results-node-final/results-kvtest/train.log` | ✅ | | B4 | Causal demonstration: moving entrance one layer (14→15) reproduces the null on demand | `results-kvtest/train.log` (flat val@ all k) | ✅ (eval tail missing — rerun 5-min eval for completeness) | | B5 | 12B (no KV sharing) clean location test: wrong band 0.4–2.3% vs 32.8% | `results-node-final/results-12b/eval_12b_gsm_band10*.json` | ✅ | | B6 | Fixed-point dynamics: big first step, cos→1.000 by k≈4; explains accuracy/sharpening plateau and k-extrapolation flatness | dynamics data + `eval_code_code_kgen.json` | ✅ | | B7 | Discriminator: cliff = lens boundary vs last-full-attention-KV layer | **MISSING — the (9,30) arm** | ❌ queued idea | | B8 | Residual-only perturbation impotence: large logit shifts w/o attention pathway don't flip decisions | probe from session (rerun scripted for reproducibility) | ◐ script it | ## The hazard section (the paper's service to the field) Write as a standalone, checkable warning: (1) detection recipe — check `num_kv_shared_layers`/equivalents before any layer-局部 intervention; (2) symptom catalogue — exact-baseline results, zero gradients, big-Δlogit/no-flip; (3) how our 3 pre-registered arms became silent nulls and how forensics found it (file diff → shared_kv_states kwarg → config). Affected model classes: KV-sharing efficiency variants (survey which public families have it). ## Missing experiments (all cheap, Spark) 1. **B7 (decisive): anchor (9,30)** — L9 is full-attention+KV-computing but deep in sensor region. Pre-registration drafted in `results-loop/PROTOCOL_UNIFIED.md` §(to add). Prediction on record: lens boundary wins (arm 1 contained L9 and was catastrophic). ~70 min. 2. B4 completeness eval (5 min). 3. B8 as reproducible script + N=16 items (30 min). 4. Optional: channel-count sweep (anchor 12 with tap 28 length-match) if B7 surprises. Decide after B7. ## Outline (workshop-length) 1. Setup: retrofit loop machinery (1 fig), what "write" and "read" are. 2. Read-invariance (tap curve fig). 3. Write-cliff (anchor curve fig + 12B clean replication). 4. The KV-sharing hazard (anatomy fig: which layers recompute K/V; symptom table; detection recipe). 5. Fixed-point account tying 2–4 together. 6. Implications for activation-intervention methodology. ## Work plan - [ ] Run B7 + B4-eval + B8-script (one Spark session, ~2h GPU total). - [ ] Transcribe session forensics into `paper-B/hazard_notes.md` while fresh. - [ ] Figures: anchor curve, tap curve, KV anatomy diagram. - [ ] Draft after Paper A ships (it cites A's training recipe).