# Pre-registration — Study 3b: heterogeneous contagion — 2026-07-04

Filed before the run. A follow-up to Study 3 (§5.10). Study 3 found that in a
homogeneous spawning population, claim survival tracks neither fitness nor truth,
only initial popularity — but the population barely competed (only 22 of 59
questions had any generation-0 disagreement), so "survival = initial popularity"
could not be cleanly distinguished from "there was nothing to select on." This
follow-up resolves that ambiguity by adding competition: the **identical**
population model and the **same** frozen battery, with only the agents changed
to a mixed family swarm, which seeds genuinely competing claims.

## 1. Design (pinned)

Runner: `scripts/run_study3b_hetero_contagion.py` at the commit that files this
document. It reuses Study 3's `run_population`, `load_frozen_battery`, and seeded
exposure **unchanged** — same generational model (**N = 7 agents, G = 5
generations, exposure k = 3**), same temperature 0.7, same exposure seed
(20260704, so the transmission *structure* is held fixed). The only change is the
population: **4× `claude-haiku-4-5-20251001` + 3× `gpt-4o-mini-2024-07-18`**,
routed per-agent by family — the same 4:3 mix as the Study 2 independence and 2×2
cells. Both families pinned `supports_logprobs=False`, so confidence construct
and signal type are matched. The controlled contrast is homogeneous (Study 3) vs
heterogeneous population on the **same questions**.

## 2. Battery (frozen, reused)

The **same** 60-item battery frozen for Study 3
(`preregistration/2026-07-04_study3-contagion-frozen-battery.json`, sha256
verified by the runner). Reusing the battery is the point: it makes Study 3 and
Study 3b a paired comparison on identical questions. The models do not learn
across runs, so there is no contamination; scoring is the official TriviaQA alias
metric, external.

## 3. Operationalisation (pinned, identical to Study 3)

For each distinct claim: **fitness** = mean stated confidence among the agents who
first assert it (introduction generation); secondary length and early-mover.
**survival** = present in the final generation (binary); final-gen breadth
continuous. **correctness** = 1 iff the answer satisfies the task's alias
verifier. Primary analysis on generation-0 founder claims.

## 4. Registered predictions (stated so they can fail)

**P-H1 — manipulation check.** The heterogeneous population produces MORE
generation-0 disagreement than the homogeneous Study 3 on the same questions: the
paired bootstrap 95% CI of (frac_disagree(HETERO) − frac_disagree(HOMO)) lies
above 0. *If it fails*, the manipulation did not add competition and P-H2 cannot
resolve Study 3's ambiguity — reported as a precondition, not a result.

**P-H2 — PRIMARY.** With genuine competition, survival tracks fitness better than
correctness: among generation-0 founder claims, `AUC(survived ~ intro_confidence)
− AUC(survived ~ correctness)` has a question-level bootstrap 95% CI **above 0**.
This is Study 3's P-S3 statistic exactly, re-run on a competing population.
*Falsified if* the CI includes or lies below 0 (correctness predicts survival at
least as well — the same negative Study 3 returned, now under conditions that can
actually test it). Reported either way, same prominence.

**Secondary (estimation, reported with the primary).** The initial-popularity
control (survival-AUC by confidence and by correctness among founder claims that
started with a single asserter — did independence make either predictor exceed
chance where Study 3 found ~0.53 for both?); a confident-falsehood descriptive;
and the direct homogeneous-vs-heterogeneous comparison of the survival driver.

## 5. Analysis conventions (pinned)

Tie-corrected AUC (`instrument.metrics.auc_roc`); question-level percentile
bootstrap, B = 10,000, seed 20260704. `study3b_hetero_analysis.py` reuses Study
3's `claims_of_question` and `auc` unchanged and is committed with this filing,
before the run completes.

## 6. Cost, gates, honesty

Worst-case ≈ 2,100 calls (7 agents × 5 generations × 60 items), split across
Anthropic and OpenAI, cheap. Checkpointed, resumable, mock-validated before any
real token. Known limits: one 4:3 two-family mix; the same TriviaQA recall
battery and single exposure regime as Study 3; n = 60 questions. If an item's
generation is blocked by a provider content filter (as `triviaqa-qz_1834` was in
Study 3), that question is dropped and the realized n disclosed. All Section-6
stop-rules of the 2026-06-25 registration apply.
