# EXP-15: Matched peer-prediction baseline vs transfer, same ring adversary (M4)

- Date: 2026-10-08 | Cadence version: 0.78.0 / `750c8ef` (with the #164 per-probe reset) | Program iter: iter9
- Script: `exp/EXP-15_matched_pp_vs_transfer.py` | Evidence: `exp/EXP-15.out`; also cited in `M5-EXOGENOUS-ANCHOR.md`

## Summary
- Question: when one coordinated ring adversary is scored by BOTH a peer-prediction (Correlated-Agreement) scorer and by twin-brain transfer on an exogenous task T, where does each mechanism stop ranking the genuine contributor above the ring?
- Setup: K=8 contexts, 2 actions, brain modules (16, 8), 1600 witness steps, 12 seeds. Ring teaches a rule R that agrees with T on a_R = 0.5 / 0.625 / 0.75 of contexts. PP reference pool P=10, a fraction c in {0, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0} is ring, the rest are honest reporters at 0.9 accuracy. PP scores the rules T and R directly as reports (no brains). Transfer = twin ablation on T (snapshot, ingest the witness rule, greedy accuracy on T minus base).
- Prediction: no numeric prediction written before running. The docstring (written before the run) anticipated: "Transfer's invariance to c is therefore partly by construction."
- Result: transfer (does not depend on c): genuine +0.448 (SEM 0.040); ring -0.052 / +0.073 / +0.198 (SEM 0.040 each) at a_R 0.5 / 0.625 / 0.75, so the gap is +0.500 / +0.375 / +0.250. PP crossover (ring scores >= genuine): c* = 0.5 at a_R 0.5 and 0.625, c* = 0.6 at a_R 0.75. At c = 1.0 PP gives genuine +0.009 / +0.119 / +0.247 vs ring +0.491 / +0.533 / +0.467. 12 seeds per cell; PP cells have no SEM printed.
- Verdict: SUPPORTIVE as logged ("M4 CROSSED on the matched comparison", iter9), not retracted. The comparison is fair only given an exogenous T. Where T comes from was moved to M5 and measured in EXP-17 (q* = 0.5). The earlier EXP-09 comparison against gamma* = 0.70 is superseded by this one because it used a different axis.

## Reflection
- What it means: on one matched adversary, peer prediction flips once about half its reference pool is ring, and transfer keeps ranking the genuine contributor first, giving the ring credit roughly in line with how right its rule is. It also found that the old "beat PP gamma* = 0.70" target compared two different axes and was never like-for-like.
- Process: transfer's immunity to c is fully by construction in this harness, not just partly. The transfer arm never reads c (it is computed once per seed, outside the c loop), so the only measured new content is the PP curve plus transfer crediting the ring by a_R. Transfer is also at ceiling: the ring SEM equals the genuine SEM (0.040) and the gap is exactly 1 - a_R. That means learning saturates and the gap is set by the design. PP was run on noiseless rule vectors, not on brain behaviour, and c* is read from a coarse grid (0.4, 0.5, 0.6). It also depends on P and honest accuracy, which are design parameters, so c* ~ 0.5 is not a universal constant (the log says this too). No PP SEM was reported, and the a_R 0.75 crossover rests on a razor-thin margin: at c = 0.5 the PP gap is +0.004 (genuine), so c* = 0.5 versus 0.6 there is not distinguishable without SEMs.
- Lesson: before comparing against a published crossover number, check that it lives on the same axis. A robustness advantage that comes from consuming an extra input (exogenous T) is a moved assumption, not a free win.
- Next: moved the remaining cost to M5. EXP-17 measured task-pool capture (q* = 0.500) and `M5-EXOGENOUS-ANCHOR.md` states the boundary: PP needs an honest majority of references, transfer needs an honest majority of tasks.
