# EXP-32: the minimal teaching market (learned partner choice, pay on measured gain, pedigree share)

- Date: 2026-10-09 | Cadence version: unrecorded | Program iter: iter20
- Script: `exp/EXP-32_spawn_market.py` | Evidence: `exp/EXP-32.out`, `exp/EXP-32.json` (also the data source for `ui/spawn-sim.html`)

## Summary
- Question: in the EXP-31 peer network, does letting each brain learn WHO to teach from the pay it earns spread knowledge faster than random partners, while keeping payments budget-balanced?
- Setup: EXP-31 world (N=8 brains, K=32 bandit, one slice each, specialist rule, M=16 steps per session, 12 rounds, 6 seeds). Each round each brain picks one student. CHOOSE arm: one Cadence chooser brain per teacher (1 constant input, N actions, choosing itself = abstain), rewarded with 20 x what its brain earned that round. PEER arm: random student. Pay = the student's measured gain on the true rule, split over newly learned contexts, with share ALPHA=0.3 to each context's origin brain (pedigree) and the rest to the teacher. WHAT to teach stays random within the known set.
- Prediction: "CHOOSE spreads knowledge faster than PEER and at least as fast as EXP-31 RING; choosers learn to pick students who lack their knowledge; payout == measured gain." (script docstring, written before running)
- Result: mean accuracy by round, CHOOSE 0.57 0.65 0.70 0.75 0.76 0.77 0.80 0.80 0.81 0.82 0.84 0.85 0.84; PEER 0.57 0.64 0.69 0.74 0.77 0.81 0.82 0.82 0.81 0.81 0.80 0.79 0.79. Final, mean (SEM, 6 seeds): CHOOSE 0.842 (0.010, runs 0.797 to 0.859), PEER 0.791 (0.037, runs 0.695 to 0.906). Rounds to 0.90: one PEER run at round 9, no CHOOSE run. Sessions 87 vs 84. Fraction of picks where the student lacked something the teacher knew: 0.61 vs 0.58. Paid / measured gain: 13.031 / 13.031 (CHOOSE), 10.594 / 10.594 (PEER).
- Verdict: NULL on the main claim, and SUPERSEDED. The CHOOSE edge (0.842 vs 0.791) was not significant, CHOOSE was not faster than PEER or RING early on, and choosers barely learned to pick needy peers (0.61 vs 0.58). Partner choice was re-tested in EXP-34 (iter21, and FIX=1 on the fixed network in iter22): the learned chooser matched random, an oracle neediest-first rule was about 25% faster early, and the program adopted the design rule "teaching is neediest-first, hard-wired, not learned". Budget balance held exactly, but that is true by construction of the payout code. Note: the iter20 log entry at the time called the prediction "partly met: small, not yet significant edge"; this write-up classifies it NULL because the edge was not significant and the chooser result was later superseded.

## Reflection
- What it means: we have a working minimal market loop (pay on measured gain, pedigree split, per-event ledger) that is budget-balanced, but no evidence that pay-driven partner choice helps. The only real difference seen is that CHOOSE was more consistent across seeds (SEM 0.010 vs 0.037).
- Process: run in the same plateaued world as EXP-31 (ceiling from stale teaching, found later in EXP-33), so the window for a choice effect was mostly closed. The chooser has a single constant input, so it can only learn a fixed preference over peers, not respond to who currently lacks what; pay per round was too noisy to learn from (as EXP-34 later stated). Payment uses the true rule as an oracle, which a real market does not have; iter22 later noted that pay on measured gain does not stop sandbagging. "payout == measured gain" was listed as a prediction but is an accounting identity of the code, not an empirical result. No pilot (the run took 233 s, under the RUN GATE threshold of about 10 min), 6 seeds, Cadence version not stamped. The run was nonetheless used for the design notes and the public UI the same day.
- Lesson: do not count properties guaranteed by construction as confirmed predictions, and do not build a learned controller on a signal before checking that the signal is less noisy than the effect it should drive.
- Next: design notes (kept outside this repo) and UI `ui/spawn-sim.html` (live at https://spawn-sim.vercel.app) were built from this run; then EXP-33 (stale teaching), EXP-34 (partner choice), EXP-35 (pedigree share controller) and EXP-36 (attacks on pay).
