outputs `ladder/eval/p3/rc_{B_D_s0,B_P_s0}_s{0,1,2}.json` + `rotation_causal_summary.json`. 2 models × 3 pair-seeds × 3,871–3,874 test pairs (seed 0 = the P3 pair list byte-for-byte, asserted); cluster-bootstrap CIs (2,000 resamples, A-sentence clusters; B-sentence as sensitivity). **R1's challenge:** "the W_B eigen-angle is a property of a ridge fit, not an operator the model uses; where's the causal test?" **Method:** INSTALL the fitted composer `ẑ = W_A z_A + W_B z_B + b` into B_D_s0's OWN greedy decoder and ablate the orthogonal (rotation) factor of W_B via polar decomposition, holding the symmetric (stretch) factor fixed: `t0` = rotation removed (Q_B→I), `t05/t2` = angle scaled ×0.5/×2 via matrix log/exp on Q_B, `randrot` = a rotation with the SAME eigen-angle spectrum but random planes (O Q_B Oᵀ). Decode-quality scored vs the model's own decode of the true z_AB (`f1_oracle`), token-F1 vs AB text, SBERT, per-slot content recall, z-cos. **Install/ablate/scale table (B_D_s0, 3-seed means; all deltas CI-excl-0, 3/3):** | arm | ẑ definition | f1_oracle | f1_ref | SBERT | rec_A | rec_B | z-cos | OD (AB/BA) | |---|---|---:|---:|---:|---:|---:|---:|---:| | oracle | decode(true z_AB) | 1.000 | 0.605 | 0.769 | 0.841 | 0.620 | 1.000 | 0.996 | | **full** | W_A z_A + W_B z_B + b | **0.551** | 0.536 | 0.693 | 0.754 | 0.549 | 0.956 | 0.994 | | t05 (0.5× ang) | Q_B^.5 S_B | 0.540 | 0.526 | 0.677 | 0.726 | 0.533 | 0.939 | 0.986 | | t0 (**rot removed**) | S_B (Q_B→I) | 0.509 | 0.489 | 0.635 | 0.695 | 0.457 | 0.896 | 0.962 | | t2 (2× ang) | Q_B² S_B | 0.463 | 0.433 | 0.590 | 0.711 | 0.316 | 0.895 | 0.996 | | randrot | O Q_B Oᵀ S_B | 0.450 | 0.416 | 0.544 | 0.675 | 0.235 | 0.844 | — | | identity | (z_A+z_B)/2 | 0.366 | 0.425 | 0.487 | 0.341 | 0.341 | 0.691 | **0.500** | | shuffled | full, B rolled | 0.364 | 0.351 | 0.450 | 0.755 | 0.014 | 0.692 | — | Key deltas (f1_oracle, point / all-seeds CI-excl-0): full−identity **+0.185**; full−randrot **+0.099**; full−t2 **+0.088**; full−t0 (rotation) **+0.041**; t05−t0 +0.030; full−t05 +0.011. **Verdict — NOT epiphenomenal, but the rotation is not the order register.** Three findings, in tension with each other and both folk readings: 1. **The composer causally mediates the model's own decode** (H1, p.85→TRUE): installing the fitted map recovers f1_oracle 0.55 vs 0.37 for the identity composer (+0.185) — the linear composition structure is something B_D_s0's decoder actually reads, not a fit artifact. 2. **The rotation specifically is real and load-bearing, with an optimum EXACTLY at the fitted angle.** Removing it costs +0.041 f1_oracle (small but CI-excl-0 in 3/3 seeds; H2's ≥0.05 bar just missed → pre-registered "weakly load-bearing" band). Crucially it is dose-shaped with a PEAK at t=1: t0 0.509 < t05 0.540 < full 0.551 > t2 0.463 (H3→TRUE). And **a random rotation of the same magnitude is worse than no rotation at all** (randrot 0.450 < t0 0.509; full−randrot +0.099 ≫ full−t0; H8→TRUE): the SPECIFIC fitted planes carry composition- relevant variance — the single sharpest refutation of "any rotation this size would fit equally". This is the causal test R1 asked for, and it comes back positive: **R1's "epiphenomenal fit" challenge FAILS.** 3. **But the rotation does NOT store order.** Removing it barely dents AB-vs-BA discrimination (OD 0.994→0.962); order collapses to exactly chance (0.500) ONLY under the identity/symmetric composer. Order lives in the A/B-slot ASYMMETRY (W_A ≠ W_B, S_A ≠ S_B), not W_B's internal rotation. Rotation removal does hurt the B-slot more than the A-slot (rec_B −0.091 vs rec_A −0.058, H7→ TRUE) — the rotation is a B-slot fidelity operator, not an order register. So §17.32's folk "rotation stores order" reading is FALSIFIED even as R1's "it's just a fit artifact" is refuted.