# RESULT — 077 objective-switch (DAE↔MT/PARA mid-training). Block I closer.

**Tier: T3-exploratory.** Seed 0, single rung-A (d_z=256), matched 500M-tok budget, single
continuous cosine LR, crisp objective switch at 250M. Repair+harvest 2026-08-08.

## Provenance: data complete, only AGGREGATION failed (now fixed)
All four runs trained to `pct_budget=1.0`, all per-arm evals (knee GPU / operators / battery)
COMPLETED and wrote their JSONs. The run wrote `out/FAILED` solely because `src/aggregate_077.py`
line 173 misused `np.eye`: `np.eye(Za.shape[1], np.float32)` passes `np.float32` as the 2nd
POSITIONAL arg `M` (number of columns), not `dtype`. Fix: `np.eye(Za.shape[1], dtype=np.float32)`
(one instance; no siblings). Re-ran the CPU aggregator → `out/atlas_077.json`, `out/DONE`. NO
retraining, NO GPU. Every number below comes from the intact per-arm artifacts.

## Gates (all pass)
- **G2 completeness**: all four `final.pt` present, `pct_budget=1.0`, no non-finite abort.
- **G3 switch-crispness**: dae2mt switch@250,008,238 tok; mt2dae@250,002,609 tok — both in
  [2.45e8, 2.55e8]. `crisp=true` both. Baselines ran one continuous same-arm stream (switch=None).
- **G4 recon sanity**: DAE-final conditions val_f1 > 0.5 (dae_only 0.6554, mt2dae 0.5871) ✓;
  MT learned the paraphrase map (mt_only val_para_ce 2.171 < dae_only 4.8137) ✓. Reported, not gated.
- **G5 operator pipeline** (on dae_only): diff_align finite; tense 0.5165 > 0.3, negation 0.8227 > 0.3;
  anchor n=582, `anchor_hash_ok=true` (Procrustes anchors disjoint from offset-fit vocab). ✓
- **G6 val-CE watchdog DISABLED** (pre-registered): the switch legitimately raises the off-objective
  CE; only non-finite guards active. No false EXIT_DIVERGED.

## 4-arm anatomy table
| condition | seq (arm1→arm2) | val_f1 (DAE roundtrip) | val_para_ce (MT-approp) | val_para_f1 | knee_tok | surfX | roleXflip (anti-transfer) | ‖z‖ | op raw→ref | op aligned→ref |
|---|---|---|---|---|---|---|---|---|---|---|
| dae_only | D→D | **0.6554** | 4.8137 | 0.4190 | 20.97 | 0.7063 | 0.3021 | 9.35 | 1.000 (ref) | 1.000 (ref) |
| mt_only  | M→M | 0.4219 | **2.1710** | 0.4500 | 13.84 | 0.6086 | 0.3883 | 7.17 | — | — |
| dae2mt (D→M) | D→M | 0.4604 | 2.2457 | 0.4214 | 14.01 | 0.7204 | 0.2844 | 8.73 | — | — |
| mt2dae (M→D) | M→D | 0.5871 | 3.7288 | 0.4123 | 17.19 | 0.6049 | 0.3959 | 7.84 | — | — |

Operator cross-condition cosine (clean ops, ref=dae_only): **median RAW 0.416, median ALIGNED 0.863**
(075 cross-seed raw −0.012, aligned 0.829). Per-transform aligned: tense 0.738 / negation 0.937 /
number 0.725 / question 0.973 / voice 0.872. Switch-vs-recency raw op cosine ≈ 0.37 both directions.
Seed band (075): std val_f1 0.00296, knee 0.544, surfX 0.0194. Order band (076): cv val_f1 0.0044.

## Memory-of-first index  m = (X_switch − X_last-obj) / (X_first-obj − X_last-obj)
(m≈0 pure recency / last-objective; m≈1 full first-objective memory; m>1 = beyond first-obj / tracks first-obj)
| invariant | m(dae2mt, D→M) | m(mt2dae, M→D) | reading |
|---|---|---|---|
| **recon val_f1** | 0.165 | 0.293 | recency-dominant (last obj governs), mild first-obj residual |
| **knee_tok** | 0.024 | 0.530 | pure recency D→M; ~half first-obj memory M→D |
| **surfX (surface code)** | **1.144** | **1.038** | **tracks FIRST objective — hysteretic, ignores last obj** |
| **‖z‖** | 0.715 | 0.694 | strong first-obj imprint both directions |

**Most-hysteretic invariant = surfX** (|m|=1.14). surfX spread across all 4 = 0.1155 ≈ 6× the seed
band — and it splits CLEANLY by FIRST objective: dae-first {dae_only 0.706, dae2mt 0.720} vs mt-first
{mt_only 0.609, mt2dae 0.605}. Same total DAE exposure (dae2mt vs mt2dae both 250M DAE) yet opposite
surfX ⇒ it is the PHASE (first objective), not exposure amount, that sets the surface code.

## HYSTERESIS VERDICT — SPLIT (frozen-mechanical = HYSTERETIC; substantive = recency-recon + first-obj-imprinted structure)
The frozen aggregator verdict is **HYSTERETIC** (n_recency = 0 of 4 invariants match the last-objective
baseline within the pre-registered ±2× seed band). That mechanical call is driven by an extremely tight
075 seed band (val_f1 std 0.003), under which even a recency-dominant recon (Δ≈0.04–0.07) fails the band.
The graded mem-index gives the honest, richer picture — **the anatomy SPLITS**:
- **Reconstruction fidelity is RECENCY-DOMINANT** (last objective governs). DAE-f1: switching TO dae
  recovers 71% of the DAE advantage (mt2dae 0.587, m=0.29); switching TO paraphrase collapses ~83% to
  mt-only (dae2mt 0.460, m=0.16). Symmetrically para-CE: dae2mt 2.25 ≈ mt-only 2.17 (last=M, good),
  mt2dae 3.73 ≫ mt-only (last=D, lost the para map). **Mild asymmetry**: the M→D direction retains more
  first-objective memory (recon m 0.29 vs 0.16; knee m 0.53 vs 0.02) — "TO-dae recovers / TO-mt loses".
- **The surface/structural code is HYSTERETIC** — imprinted by the FIRST objective and frozen against the
  later switch (surfX m>1; ‖z‖ m≈0.70; knee partial in M→D). This is the invariant that **retains
  first-objective memory**. Anti-transfer (roleXflip) stays present in all 4 (0.28–0.40, all < 0.45):
  the switch neither creates nor destroys role-binding, but the surface-copy signature is set early.
- **Operators are path-robust UP TO A ROTATION**: raw cross-condition cosine 0.416 (< 0.70 → the z-basis
  rotates per condition, as it does across seeds in 075) but aligned 0.863 (> 075's 0.829 → relational
  operator geometry preserved). Absolute basis orientation is free; relational operator structure is not.

So: objective is a STATE for reconstruction (last-obj wins) but leaves a PATH imprint on the surface code.

## Brier on the frozen P1–P5 (as computed by aggregate_077.py)
| pred | p=P(true) | outcome | Brier |
|---|---|---|---|
| P1 recency on recon | 0.80 | **False** | 0.64 |
| P2 surface convergent/path-indep | 0.70 | **False** | 0.49 |
| P3 operators raw≥0.70 & aligned≥0.75 | 0.65 | **False** | 0.4225 |
| P4 knee most hysteretic, m∈[0.2,0.8] both | 0.55 | **False** | 0.3025 |
| P5 overall RECENCY-DOMINANT (≥3/4) | 0.50 | **False** | 0.25 |
| **mean** | | | **0.421** |

All five predictions scored FALSE — an honest miss. Why each: **P1** recon IS last-obj-governed but the
razor-thin ±2× seed band (0.006 on val_f1) rejects the partial-recovery arms; substantively P1's thesis
(last-objective-wins reconstruction) HOLDS. **P2** wrong in the interesting direction — the surface code is
NOT convergent; it is first-objective-imprinted (surfX spread 6× band). **P3** fails only on the raw clause
(0.416 < 0.70): operators rotate per condition; the aligned clause (0.863 ≥ 0.75) holds. **P4** knee is not
the most-hysteretic invariant (surfX is) and its m is not in [0.2,0.8] both directions (D→M m=0.02).
**P5** the strict ≥3/4 recency test scores 0/4 under the tight band, and the surface code genuinely breaks
recency. Net: reconstruction-recency was under-credited by the band; structural-code hysteresis was
mis-predicted as convergence. mean Brier 0.421 (worse than a 0.5-everywhere baseline of ~0.25 — the
confident P1/P2 bets drove the loss).

## BLOCK I SYNTHESIS (073–077)
Across block I a clean **stable-core / fragile-shell** split holds. **073** the relational/order code forms
mid-training (not at convergence), locked to reconstruction; **074** no grokking — data DIVERSITY, not extra
compute, is what builds that relational code; **075** the code is seed-stable in geometry but only UP TO A
ROTATION (init sets an arbitrary basis orientation); **076** reordering the SAME data under ONE objective
leaves the relational code order-robust while reconstruction recency-forgets; **077** switching the OBJECTIVE
itself makes reconstruction recency-dominant (last objective governs fidelity), while the surface/structural
code is imprinted by the FIRST objective and frozen thereafter (hysteretic, m>1). The unifying account: the
**structural/relational code CRYSTALLIZES EARLY and FREEZES** — its CONTENT is fixed by early conditions (init
075, data diversity 074, first objective 077) and is robust to LATER perturbation (data order 076, later
objective 077); this is what is **STABLE** — seed-, order-, and later-objective-robust once formed, modulo a
free rotation of the absolute basis. What is **FRAGILE** is **reconstruction fidelity** — governed by data
diversity (074), recency/forgetting (076), and the last objective (077). 076's "relational code is
order-robust" and 077's "surface code is first-objective-imprinted" are the same law seen from two sides:
once formed the code sticks; 076 could not see the imprint because both orders shared an objective, whereas
077 varied the first objective and exposed it. Absolute basis orientation carries no information in any row
(rotation-free), so only relational/aligned structure should ever be compared across runs.

## Limitations
- **MT/PARA is monolingual English paraphrase (ParaNMT), NOT cross-lingual bitext** — a fixed-direction
  A→B seq2seq map, honestly the strongest "second objective" on-box; no cross-lingual translation claimed.
- **Single seed (0), single rung (d_z=256), single switch point (250M/500M)** — no cross-seed CI on the 077
  switch spread itself; the seed band is imported from 075 and is very tight, which makes the ±2× recency
  gate brittle (it, not the physics, produced the mechanical HYSTERETIC label). Graded mem-index is the
  primary read; the binary gate is secondary.
- surfX/‖z‖ first-objective imprint is a strong, clean effect here but n=1 per cell; would want ≥2 seeds and
  a second switch fraction (e.g. 125M/375M) to rule out an LR-phase confound (though a single continuous
  cosine was used precisely to avoid an LR-event confound at the switch).

## Tier / follow-up
- **T3-exploratory** (single seed/rung; paraphrase-not-bitext). No promotion.
- **Follow-up worth funding? YES (narrow).** The surface-code first-objective imprint (surfX m>1, ‖z‖ m≈0.7)
  is the surprising, block-I-enriching result and deserves a 2-seed × 2-switch-fraction confirmation plus a
  layer/step trace of WHEN the surface code freezes (ties to 073's "forms mid-training"). The
  recency-of-reconstruction result is already well-supported (076+077) and does not need more runs.
