← the two attractors · all runs
attractor 2 — total refusalCheckpoint 50: it will not sign anything
Twenty-five steps later the same run has converged on the opposite degeneracy. The held-out scorable bank loses 0.746 of its deal rate; the prose cell closes 0.002 of its episodes; and the ultimatum holdout — which the base model and every earlier rung closed 1.000 of the time — closes nothing at all. Its below-threshold rate also reads a perfect 0.000, for the opposite reason: there are no agreements to be below a threshold. The transcripts sharpen what “refusal” means here: no seat walks away in any published ultimatum episode. The policy instead emits a none action where an offer belongs, so nothing is ever tabled — a failure to act rather than a decision to decline. In 14 of the 15 episodes the run ends on that single no-op turn. The fifteenth is the exception that connects the two attractors: there the proposer does table a package, and the package is {"Split": "P10"} — checkpoint 25’s 100/0 extraction, still intact — whereupon the responder no-ops instead of voting and the deal dies unanswered. The extraction policy has not been replaced by a fairer one; it has been buried under a policy that mostly stops acting. This is the endpoint the dense checkpoint tail exists to label; under the originally planned {25, 50} ladder it would have been reported as “the trained policy”.
The held-out primary bank
24 unseen parameter sets × {full, private} × 10 seeds, paired on (instance, seed, arm); intervals are 95% cluster bootstraps over parameter sets. The deal rate is the number that stays interpretable whatever else happens, so it is printed beside every conditional metric.
| metric | base | checkpoint 50 | trained − base [95% CI] | support |
|---|---|---|---|---|
| deal rate | 0.893 | 0.147 | -0.746 [-0.795, -0.694] | 960 pairs / 48 clusters |
| normalized Nash welfare (unconditional) | 0.686 | 0.099 | -0.587 [-0.626, -0.547] | 960 pairs / 48 clusters |
| below-threshold rate | 0.299 | 0.075 | -0.224 [-0.274, -0.172] | 960 pairs / 48 clusters |
| at-cap rate | 0.396 | 0.314 | -0.082 [-0.130, -0.032] | 960 pairs / 48 clusters |
| among-IR rate | 0.341 | 0.059 | -0.281 [-0.340, -0.226] | 960 pairs / 48 clusters |
| NNW among IR deals | 0.849 | 0.784 | -0.031 [-0.106, +0.032] | 21 pairs / 9 clusters |
| Gini | 0.330 | 0.049 | -0.281 [-0.300, -0.260] | 960 pairs / 48 clusters |
| worst-off share | -0.028 | -0.105 | -0.092 [-0.304, +0.019] | 130 pairs / 24 clusters |
| max share | 0.365 | 0.485 | -- | -- |
| generation failures | 0.000 | 0.000 | -- | -- |
Where the run sits on the ladder
All seven evaluated rungs of the λ=1.0 arm, held-out primary bank, trained minus base. Held-out deal rate falls monotonically and never recovers, while the below-threshold rate stays favourable throughout — the deal-suppression signature, stated as plainly as it can be.
| checkpoint | Δ deal rate | Δ NNW (unconditional) | Δ below-threshold | trained deal rate | closure-conditional |
|---|---|---|---|---|---|
| 5 | -0.052 [-0.081, -0.021] | -0.044 [-0.072, -0.013] | -0.104 [-0.138, -0.071] | 0.841 | interpretable |
| 10 | -0.143 [-0.184, -0.099] | -0.132 [-0.170, -0.092] | -0.207 [-0.243, -0.172] | 0.750 | VOID |
| 15 | -0.147 [-0.197, -0.095] | -0.156 [-0.202, -0.108] | -0.185 [-0.225, -0.144] | 0.746 | VOID |
| 25 | -0.226 [-0.278, -0.174] | -0.189 [-0.239, -0.140] | -0.218 [-0.254, -0.181] | 0.667 | VOID |
| 40 | -0.453 [-0.518, -0.385] | -0.348 [-0.404, -0.290] | -0.279 [-0.317, -0.242] | 0.440 | VOID |
| 45 | -0.641 [-0.682, -0.597] | -0.493 [-0.530, -0.453] | -0.254 [-0.292, -0.217] | 0.252 | VOID |
| 50 | -0.746 [-0.795, -0.694] | -0.587 [-0.626, -0.547] | -0.224 [-0.274, -0.172] | 0.147 | VOID |
The preregistered VOID marking, cell by cell
A cell whose deal rate falls more than 0.10 below base has its closure-conditional metrics stamped uninterpretable by construction — not because they look bad, but because a conditional average over a shrinking, self-selected set of closed deals is not a fairness measurement.
| cell | closure-conditional metrics | why |
|---|---|---|
| primary | VOID | deal rate -0.746 is more than 0.1 below base; closure-conditional metrics are not interpretable |
| prose | VOID | deal rate -0.733 is more than 0.1 below base; closure-conditional metrics are not interpretable |
| ultimatum | VOID | deal rate -1.000 is more than 0.1 below base; closure-conditional metrics are not interpretable |
Coverage
Not evaluated at this rung: divide_dollar, rationaltable, story_abstract, story_datacenter, story_festival. These cells have no data at this checkpoint and are omitted rather than carried over.
Every evaluated cell
Cells evaluated at this rung: primary, prose, ultimatum.
primary
the held-out scorable bank -- 24 unseen parameter sets x {full, private} x 10 seeds, the arm's preregistered primary — 960 baseline vs 960 trained episodes.
Closure-conditional metrics in this cell are VOID. deal rate -0.746 is more than 0.1 below base; closure-conditional metrics are not interpretable The struck-through rows below are printed for the record and must not be read as fairness results. Note that max share and worst-off share are averaged over closed deals only, so in a voided cell they too describe a self-selected subset — they are the terms that detect extraction, not unbiased estimates of it.
| metric | base | checkpoint 50 | trained − base [95% CI] | support |
|---|---|---|---|---|
| deal rate | 0.893 | 0.147 | -0.746 [-0.795, -0.694] | 960 pairs / 48 clusters |
| normalized Nash welfare (unconditional) | 0.686 | 0.099 | -0.587 [-0.626, -0.547] | 960 pairs / 48 clusters |
| below-threshold rate | 0.299 | 0.075 | -0.224 [-0.274, -0.172] | 960 pairs / 48 clusters |
| at-cap rate | 0.396 | 0.314 | -0.082 [-0.130, -0.032] | 960 pairs / 48 clusters |
| among-IR rate | 0.341 | 0.059 | -0.281 [-0.340, -0.226] | 960 pairs / 48 clusters |
| NNW among IR deals | 0.849 | 0.784 | -0.031 [-0.106, +0.032] | 21 pairs / 9 clusters |
| Gini | 0.330 | 0.049 | -0.281 [-0.300, -0.260] | 960 pairs / 48 clusters |
| worst-off share | -0.028 | -0.105 | -0.092 [-0.304, +0.019] | 130 pairs / 24 clusters |
| max share | 0.365 | 0.485 | -- | -- |
| generation failures | 0.000 | 0.000 | -- | -- |
Browse all 1920 episode transcripts for this cell →
prose
the north-star transfer cell: the same games with no machine-readable score sheet, only prose — 480 baseline vs 480 trained episodes.
Closure-conditional metrics in this cell are VOID. deal rate -0.733 is more than 0.1 below base; closure-conditional metrics are not interpretable The struck-through rows below are printed for the record and must not be read as fairness results. Note that max share and worst-off share are averaged over closed deals only, so in a voided cell they too describe a self-selected subset — they are the terms that detect extraction, not unbiased estimates of it.
| metric | base | checkpoint 50 | trained − base [95% CI] | support |
|---|---|---|---|---|
| deal rate | 0.735 | 0.002 | -0.733 [-0.777, -0.688] | 480 pairs / 48 clusters |
| normalized Nash welfare (unconditional) | 0.611 | 0.001 | -0.609 [-0.651, -0.567] | 480 pairs / 48 clusters |
| below-threshold rate | 0.246 | 0.000 | -0.246 [-0.296, -0.194] | 480 pairs / 48 clusters |
| at-cap rate | 0.510 | 0.356 | -0.154 [-0.250, -0.062] | 480 pairs / 48 clusters |
| among-IR rate | 0.256 | 0.000 | -0.256 [-0.312, -0.206] | 480 pairs / 48 clusters |
| NNW among IR deals | 0.871 | -- | -- | -- |
| Gini | 0.267 | 0.001 | -0.266 [-0.282, -0.249] | 480 pairs / 48 clusters |
| worst-off share | -0.013 | 0.000 | +0.000 [+0.000, +0.000] | 1 pairs / 1 clusters |
| max share | 0.339 | 0.366 | -- | -- |
| generation failures | 0.000 | 0.000 | -- | -- |
Browse all 960 episode transcripts for this cell →
ultimatum
canonical family holdout: a deterministic ultimatum preset, never trained on — 15 baseline vs 15 trained episodes.
Closure-conditional metrics in this cell are VOID. deal rate -1.000 is more than 0.1 below base; closure-conditional metrics are not interpretable The struck-through rows below are printed for the record and must not be read as fairness results. Note that max share and worst-off share are averaged over closed deals only, so in a voided cell they too describe a self-selected subset — they are the terms that detect extraction, not unbiased estimates of it.
| metric | base | checkpoint 50 | trained − base [95% CI] | support |
|---|---|---|---|---|
| deal rate | 1.000 | 0.000 | -1.000 [-1.000, -1.000] | 5 pairs / 3 clusters |
| normalized Nash welfare (unconditional) | 1.000 | 0.000 | -1.000 [-1.000, -1.000] | 5 pairs / 3 clusters |
| below-threshold rate | 0.000 | 0.000 | +0.000 [+0.000, +0.000] | 5 pairs / 3 clusters |
| at-cap rate | 0.000 | 0.000 | +0.000 [+0.000, +0.000] | 5 pairs / 3 clusters |
| among-IR rate | 0.533 | 0.000 | -0.600 [-1.000, -0.500] | 5 pairs / 3 clusters |
| NNW among IR deals | 1.000 | -- | -- | -- |
| Gini | 0.233 | 0.000 | -0.200 [-0.250, +0.000] | 5 pairs / 3 clusters |
| worst-off share | 0.267 | -- | -- | -- |
| max share | 0.733 | -- | -- | -- |
| generation failures | 0.000 | 0.000 | -- | -- |
Browse all 30 episode transcripts for this cell →
Provenance
- Research note (the owning record, preregistration + amendments): 0028 — Fairness-GRPO v2
- Week-notes narrative for the whole arc: fairness-grpo-v2.md
- Training run on wandb: grpo_v2_lam1 and its resume leg
grpo_v2_lam1_resume25 (group
fairness-grpo-v2) - Public dataset: 2026.RA.Fairness-GRPO
- Frozen eval summary this page is computed from:
eval_r25_ckpt50.json(trained arm keylam1_resume25_checkpoint-50, deal-rate viability floor 0.10) - Episode transcripts published under this checkpoint: 2910 across 3 cells, re-rendered from the stored episode JSONs with the current viewer.