Written before the run (2026-09-19). A miniature of the plan's Phase 1, sized to run before morning.
Everything in Phase 0 and Phase 2 was measured on one real student whose teacher we know from its model card. The open question: does the pipeline tell a student distilled from Qwen3-32B apart from one distilled from original R1, when the two teachers' traces tie under the likelihood statistic? And does a student distilled from a third teacher (Gemini) get attributed correctly, and a 50/50 mixture student get an honest mixture estimate?
<think>...</think>\n\nanswer:r1_orig: s1K-1.1 DeepSeek-R1 traces (free)gemini: s1K-1.1 Gemini Flash Thinking traces (free)qwen3_32b: generated via OpenRouter on the same 800 prompts (reasoning included), ~$3Training: Qwen2.5-1.5B, 800 examples, 3 epochs, lr 1e-5, effective batch 16, responses truncated to 2048 tokens, bf16, H100: S_r1 4.9 min (final loss 1.05), S_gemini 4.8 min (loss 0.48). Eval burst 55 min (three 200-sample generations at 4096 tokens plus scoring), ~$3.20.
P1, likelihood attribution (reference = Qwen2.5-1.5B, exact lineage; 199 probes; 6 teachers):
| Student | Top-1 | Wins (top / runner-up) | Margin | Corrected p |
|---|---|---|---|---|
| S_r1 | r1_orig | 129 r1_orig / 70 qwen3_32b | 0.010 | 9.8e-8 |
| S_gemini | gemini | 191 gemini / 5 r1 | 0.036 | 1.0e-61 |
P1 met for both. Notable: with the exact-lineage reference, the r1_orig vs qwen3_32b near-relative tie that Phase 0 saw on the real distill (92 vs 107) resolves toward the true teacher (129 vs 70, binomial p for r1_orig alone 8.8e-52).
P2, style classifier on student generations (six teacher sets; CV all-teacher 0.997 full / 0.977 head800):
| Student | Text | Modal | Hist (r1_orig / qwen3 / gemini) | Margin p(r1_orig) - p(qwen3) |
|---|---|---|---|---|
| S_gemini | full | gemini | 1 / 0 / 195 | +0.01 (gemini 0.96) |
| S_gemini | reasoning-only 800 words | gemini | 2 / 0 / 198 | +0.01 (gemini 0.97) |
| S_r1 | full | qwen3_32b | 88 / 103 / 4 | -0.07 |
| S_r1 | reasoning-only 800 words | r1_orig | 129 / 70 / 0 | +0.27 |
P2 met for S_gemini on both variants and for S_r1 on the reasoning-only variant; not met for S_r1 on full text. Diagnosis: the training responses were truncated to 2048 tokens (the paper's recipe), so S_r1 learned traces that rarely reach </think> and an answer, while the r1_orig teacher texts carry boxed answers; full-text features reward answer presence and so pull S_r1's answer-less outputs toward qwen3_32b (whose API texts are also answer-less). The equal-length reasoning-only variant removes that artifact and is the fair comparison; it is the variant to report going forward.
P3 / P4, mixture:
| Student | Text | r1_orig | qwen3_32b | gemini |
|---|---|---|---|---|
| S_r1 | full | 0.46 [0.38, 0.53] | 0.54 [0.45, 0.61] | 0.00 |
| S_r1 | reasoning-only | 0.70 [0.61, 0.77] | 0.30 [0.23, 0.39] | 0.00 |
| S_gemini | both | 0.00 | 0.00 | 1.00 [1.00, 1.00] |
P4 met (S_gemini has zero weight on r1_orig and qwen3_32b). P3 awaits S_mix. The residual 30% Qwen3 weight on S_r1 is expected: Qwen3's traces are themselves R1-style, and S_r1 is a weaker distill (800 truncated examples) than the real one (which classified 186/200 r1_orig in H3).
S_qwen3 (800 Qwen3-32B traces, loss 0.84) and S_mix (400 R1 + 400 Qwen3, loss 0.96) trained in 4.8 min each; train+eval burst 50 min, ~$2.90. Qwen3 traces cost $0.56 via OpenRouter.
P1, likelihood attribution (reference = Qwen2.5-1.5B, exact lineage; 199 probes; 6 teachers):
| Student | True teacher(s) | Top-1 | Wins top / runner-up | Corrected p |
|---|---|---|---|---|
| S_r1 | r1_orig | r1_orig | 129 r1_orig / 70 qwen3 | 9.8e-8 |
| S_qwen3 | qwen3_32b | qwen3_32b | 177 qwen3 / 22 r1_orig | 3.1e-28 |
| S_gemini | gemini | gemini | 191 gemini / 5 r1 | 1.0e-61 |
| S_mix | r1_orig + qwen3 (50/50) | qwen3_32b | 132 qwen3 / 67 r1_orig | 6.1e-7 |
P1 met for all three pure students. The near-relative pair is separable by likelihood when the reference is the exact lineage: 129 vs 70 one way, 177 vs 22 the other.
P2, style classifier on generations (reasoning-only, first 800 words; the fair variant, see part 1):
| Student | Modal | Hist r1_orig / qwen3 / gemini | p(r1_orig) - p(qwen3) |
|---|---|---|---|
| S_r1 | r1_orig | 129 / 70 / 0 | +0.27 |
| S_qwen3 | qwen3_32b | 20 / 179 / 1 | -0.75 |
| S_gemini | gemini | 2 / 0 / 198 | +0.01 |
| S_mix | qwen3_32b | 58 / 141 / 1 | -0.40 |
P2 met for S_r1, S_qwen3 and S_gemini (full-text variant agrees for S_qwen3 at 165/25 and S_gemini at 195; it only fails for S_r1 for the truncation reason noted in part 1). H3 is a lineage detector, not a description of one model: a Qwen3-distilled student and an R1-distilled student, same base, same prompts, same recipe, land on opposite sides.
P3 / P4, mixture estimates (reasoning-only):
| Student | r1_orig | qwen3_32b | gemini | Verdict |
|---|---|---|---|---|
| S_r1 | 0.70 [0.61, 0.77] | 0.30 [0.23, 0.39] | 0.00 | true 1.0 / 0 |
| S_qwen3 | 0.08 [0.04, 0.12] | 0.92 [0.88, 0.96] | 0.00 | true 0 / 1.0 |
| S_gemini | 0.00 | 0.00 | 1.00 | P4 met |
| S_mix | 0.24 [0.18, 0.31] | 0.75 [0.69, 0.82] | 0.00 | P3 not met (true 0.5 / 0.5) |
P3 fails: the 50/50 data mixture reads as 75/25 Qwen3 in style and 132/67 in likelihood. Mechanism: Qwen3's traces are the more regular, lower-perplexity style (S_qwen3 trains to loss 0.84 vs S_r1's 1.05), so with equal data the student's generations adopt the Qwen3 register more than half the time. A style mixture is therefore a biased estimate of the data mixture, biased toward the more learnable teacher, by roughly 0.25 here. The pure students show the same lean (S_r1 keeps 0.30 Qwen3 weight, S_qwen3 keeps only 0.08 R1 weight). Fix is straightforward and is what a real Phase 1 is for: calibrate the estimator on synthetic students of known mixture (the 70/30, 50/50, 30/70 grid) and invert the learned bias; report data-mixture intervals only after that calibration.
</think> and answer.S_human trained in 2.6 min (loss 0.58, mean 576 tokens/example); S_r1_4k in 11.3 min (loss 1.06, mean 4126 tokens/example).
| Student | Likelihood top-1 (wins) | Reasoning-teacher means | Style modal, full / reasoning-only | {r1_orig, qwen3} mixture weight |
|---|---|---|---|---|
| S_human | llama33_70b 144/199 (p 4e-24) | all negative; r1_orig 11 wins, qwen3 4 | gpt_oss 81 / llama 106; r1_orig 1 / 0, qwen3 1 / 1 | 0.005 / 0.005 |
| S_r1_4k | r1_orig 128 / qwen3 71 (p 5e-8) | r1_orig +0.165, qwen3 +0.154 | r1_orig 113 vs qwen3 80 (margin +0.14) / r1_orig 144 vs 55 (+0.42) | 0.61 r1_orig full; 0.79 [0.72, 0.85] reasoning-only |
| Student (R1 data share) | Likelihood top-1 | r1_orig / qwen3 wins | Style modal (reasoning-only) | r1_orig / qwen3 hist | Style r1_orig weight |
|---|---|---|---|---|---|
| S_qwen3 (0.0) | qwen3 | 22 / 177 | qwen3 | 20 / 179 | 0.08 |
| S_mix30 (0.3) | qwen3 | 44 / 155 | qwen3 | 0.12 | |
| S_mix (0.5) | qwen3 | 67 / 132 | qwen3 | 58 / 141 | 0.24 |
| S_mix70 (0.7) | qwen3 (p 0.20) | 85 / 114 | qwen3 | 0.37 | |
| S_r1 (1.0) | r1_orig | 129 / 70 | r1_orig | 129 / 70 | 0.70 |
Strictly monotone dose-response on both signals. The likelihood win share tracks the data share nearly linearly (0.11 to 0.65 for 0 to 100%), biased toward Qwen3 by a roughly constant offset. Calibration details and the scale-dependence caveat are in h2_multi_teacher/RESULT.md.
See h2_multi_teacher/RESULT.md "Strength numbers". Short version: 9 epochs lift the R1 style weight 0.70 -> 0.78 and the absolute likelihood alignment +0.159 -> +0.190; an 8,000-example student from OpenR1-Math traces reaches loss 0.66 but attributes to its own source's sub-style (OpenR1-R1 138 vs s1K-R1 16), which sits closer to Qwen3 than the s1K register does. Same checkpoint, different prompts and sampling pipeline: separable at 0.91. Family-level attribution holds for all R1-trained students (77 to 95%).
Files: results/test__R3.json, results/h3_.json, results/h2_mixture_*.json.