# 015 pooler-retrofit — RESULT (self-harvested in-session, 2026-08-01, tier T3-exploratory)

**Verdict: NEGATIVE (certified). A learned, transfer-disciplined attention pooler trained
directly on FROZEN SONAR token states recovers NO transferable role code at any surface
(L8/L16/L22/L24n) — primary cross-construction+lexical AUC 0.48–0.50, CI-lo 0.45–0.48,
indistinguishable from the mean-pool+linear baseline (0.49–0.51). Because the planted-signal
power certification PASSES (a construction-invariant role signal is recovered and transferred
at all four surfaces) and the pooler demonstrably learns in-distribution (within-ceiling
0.71–0.82), C1's negative is NOT a mean-pooling readout artifact: the abstraction failure is
in the TOKEN STATES themselves. Strengthens "lexical-lookup all the way down" (011→014).**

## Setup
Single-head attention pooler (learned query; keys/values = token states) → 256-d → linear
`_y_role` classifier. Trained per ordered family-pair on F1&train, evaluated zero-shot on
F2&test (20 pairs), pooled with the battery's prop-cluster grid_bootstrap (seeds 0,1,2).
`binding_battery.{_fit,_pred,_auc,grid_bootstrap,within_cell,prop_bootstrap_auc,_env}` reused
verbatim as a library (zero shared-file edits). States READ-ONLY from box binding_death.
Parity map {active,cleft,nominal}=agent-first, {passive,objrel}=not → 12 flipped : 8 same pairs.

## Numbers (pooled over 20 ordered pairs; 95% CI; 3 seeds)
| surface | primary [lo,hi] | flipped-parity | same-parity | power-cert [lo,hi] | within-ceiling | mean-pool base |
|---------|-----------------|----------------|-------------|--------------------|----------------|----------------|
| L8   | 0.494 [.485,.503] | 0.505 | 0.478 | **0.986 [.953,.999]** | 0.765 [.699,.826] | 0.499 [.492,.505] |
| L16  | 0.488 [.454,.521] | 0.481 | 0.499 | **0.978 [.965,.989]** | 0.711 [.639,.783] | 0.504 [.482,.526] |
| L22  | 0.481 [.458,.506] | 0.431 | 0.556 | **0.922 [.902,.942]** | 0.766 [.657,.854] | 0.488 [.468,.510] |
| L24n | 0.499 [.478,.519] | 0.442 | 0.583 | 0.682 [**.648**,.713] | 0.815 [.679,.900] | 0.508 [.489,.527] |

- **Primary NULL everywhere** (CI-lo never clears 0.51, let alone the 0.6 gate). The learned
  attention pooler buys NOTHING over mean pooling — the two baselines coincide at chance.
- **Surface-shortcut echo (not abstraction):** at L22/L24n the *same-parity* subset drifts up
  (0.556, 0.583) while *flipped-parity* drifts down (0.431, 0.442) — the pooler picks up a
  little surface-position cue that transfers on same-parity and ANTI-transfers on flipped-parity,
  the identical signature the whole arc shows. But pooled overall stays chance and even the
  same-parity CI-lo (0.461, 0.458) fails 0.6. No abstract role variable.
- **Power certified** (control a): a construction-invariant planted role direction is recovered
  and transfers at L8/L16/L22 (lo 0.90–0.95). At L24n lo=0.648 — passes the >0.6 bar but is
  MARGINAL: post-LN normalization attenuates an added constant direction (expected; honestly
  flagged). The pipeline can extract+transfer a real role code where one exists.
- **Pooler learns in-distribution** (control iii): within-family OOF ceiling 0.71–0.82 — above
  chance, so the pooler is not broken; but it does NOT reach 0.9 (see (a) below).
- **Mean-pool baseline** (control b) reproduces ~0.50 primary at every surface — anchors the null.
- Permutation (control c) not run: no surface was positive (correct gating).

## Interpretation (scoped)
The instrument is certified live (planted signal transfers; in-dist learning above chance) yet
the real cross-construction primary is chance identically to mean pooling. Therefore **C1's
negative is a property of the token states, not of the pooling architecture** — swapping a
learned attention pooler for mean pooling does not manufacture a transferable role code, because
none is linearly present to extract. This closes the "maybe mean pooling is just the wrong
readout" loophole for the linear-transfer regime and reinforces 011 (no linear role code at the
pooling input, certified) and 014 (role rides surface/lexical, no abstract variable at any stage).

## Brier (frozen preds a–d)
- (a) within-ceiling>0.9 at L16 — pred 0.55, outcome **F** (0.711): 0.3025 (the big miss —
  a non-focal-conditioned whole-sequence pooler is capped by alphabetical-focal inference; I
  over-priced in-dist saturation).
- (b) primary lo>0.6 at any L8/L16/L22 — pred 0.18, outcome **F** (max lo 0.485): 0.0324.
- (c) L24n primary lo>0.6 — pred 0.10, outcome **F** (0.478): 0.0100.
- (d) power cert passes all 4 surfaces — pred 0.85, outcome **T** (all lo>0.6, L24n marginal): 0.0225.
- **Mean Brier = 0.092.**

## Limitations
- Pooler is NOT focal-conditioned (a pure sentence readout, per spec) → within-ceiling is
  bounded by the difficulty of inferring the alphabetically-first focal identity from states
  (0.71–0.82), so a *focal-conditioned* pooler could have a higher in-dist ceiling. This does
  NOT rescue a readout-limitation reading: (i) the planted-signal power cert directly certifies
  transfer capacity, and (ii) the pooler already learns the surface shortcut in-dist yet still
  cannot transfer it. But the "any pooler" claim is scoped to the specified single-head learned-
  query family; a focal-conditioned/multi-head/deeper pooler is a (weak-prior) follow-up.
- L24n power is marginal (0.648) due to LN attenuation of the additive plant — L24n's null is
  certified but at lower power than L8/L16/L22; a scale-free plant (multiplicative/pre-LN) would
  firm it up.
- Linear-transfer regime only (the classifier head is linear on a 256-d pooled vector); a
  nonlinear classifier head is 016's territory.

## Follow-up worth funding? **Marginal (N-ish).** The core question is answered decisively for
the specified pooler family. A focal-conditioned attention pooler (inject focal token as query)
would raise the in-dist ceiling and make the strongest possible "even optimal pooling fails"
statement, and a pre-LN/scale-free plant would firm L24n — a cheap ~30-min add-on if the
mechanistic-arc writeup (011–015) wants to preempt the "you used a weak pooler" objection.
Otherwise this stands as the readout-limitation ruling-out for the arc.
