The experiments

The results log, verbatim from the repository. It opens with the round-4 canonical results, the evidence base the book and the paper cite; the sections below that are the earlier rounds, kept as they were written. Where the two disagree, round 4 is the number. Experiment IDs are the ones cited in the book (labels that collide with the claim-test numbering are qualified in the text).

Canonical results under the 2024 rules and the null-cycle wild rule (Round 4, 2026-09-19/20)

Round 4 is the first evidence base run on both of the engine's current rules: (a) the 2024 Hasbro rulebook (G0351) defaults — a Just Say No answered on your own turn costs one of the three plays and cannot be played with all three used, orphaned buildings are discarded (commit d7fa86d); and (b) the null-cycle wild rule (commit f2fc861) — a wild may not return to a colour it left earlier in the same turn unless a real play happened in between. The second rule can only remove strictly pointless move sequences: a flip and its immediate reversal, with nothing in between, restore the identical position, so the pair can never gain anything (before the fix the evolved bot shuffled a wild back and forth until the 60-move runaway guard fired, in 67 of 400 games). The E12 rent-flip line — flip to the dearer colour, charge the rent, flip back — is untouched, because the rent is a real play. RuleOptions.wild_move_once_per_play (new, stricter, for the live game) stays False in every research run; before each batch launches, the remote engine is asserted to carry these defaults, to block the reversal, and to free the wild again after a real play (modal_run.py --mode verify).

Both changes are bundled into "new" in the old-vs-new tables below, and both were measured separately. E07c isolates the 2024 rules on identical seeds: nothing moved by more than 0.14 pp. The wild rule is isolated by a matched control that fell out of the run itself — the partial round-4 batch made a few hours earlier on the pre-f2fc861 engine, with the same plans, seeds, rules and sizes (experiments/results/round4/pre_f2fc861/; column wild_rule in canonical.json). Of the 482 cells measured on both engines, the wild rule moves 63 — 13 % — by more than the combined 95 % margin of the two runs, against the 5 % expected by chance. Worked examples, for when the book has to explain why a number changed: E44_evolved_attack_third_2p -9.14 → -6.29 pp (±0.69); E24_no_db_aggro_2p +7.57 → +5.65 pp (±0.69); E44_evolved_attack_third_3p -11.59 → -9.67 pp (±0.58). The cells that move are the ones whose variant leans on wild movement — the E11 end-of-turn dodge, E12's rent flips, the E44 attack-order mirrors on the evolved policy — not the game at large. What the rule took away is the free undo: a policy that flipped a wild speculatively must now live with where it put the card, and the position it is left in is a real position, not an artefact.

Cell sizes are not uniform, and each row states its own. The brief's standard is 40,000 games per claim cell (double rounds 1–2). Cells that ran while the cloud was available kept the larger design sizes of round 3 — 100,000 for the evolved-policy card values (E45), the headline tournaments (E01, E01b, E03, E04, E06, E09, E12, E15, E19b) and the E49 high-N reruns, 200,000 for E46 and the rarest E49 triggers, 60,000 for the E14 ablation, 20,000 for the E08 decision tables, 400 games at 2p and 1,000 at 3–5p for the E13c rollout ceiling. Cells that ran after the laptop's link degraded were cut, then topped up in a second pass: a top-up replays the same table on a later, disjoint block of seeds and the two blocks are merged into one contiguous run over seeds 0…N, so nothing measured was thrown away (experiments/round4_topup.py, experiments/round4_merge_topup.py; a merged cell lists its blocks in merged_parts). 43 cells are still below their design size: E01b (2 cells at 20,000–20,000 of 100,000), E06 (3 cells at 20,000–20,000 of 100,000), E12 (3 cells at 20,000–20,000 of 100,000), E14 (20 cells at 20,000–20,000 of 60,000), E19b (2 cells at 20,000–20,000 of 100,000), E46 (13 cells at 20,000–20,000 of 200,000). Every row of canonical.json carries its own games and ci_pp, and a cell that is still short of its design size carries design_games as well, so no number is quoted at a precision it does not have. A 40,000-game cell resolves ±0.4–0.5 pp, which is the precision the book's existing numbers were measured at.

Reading the tables: each cell shows old → new where an old measurement exists (rounds 1–2 at 20k under the old defaults — and, for E10–E33, the pre-fix Baseline without the rent-flip step and without Birthday at 2p — or the old RESULTS.md experiment), then the round-4 value with its 95 % CI, and — where the cell has a matched control on the same seeds — the paired difference from that control with the CI of the difference (McNemar on the per-seed win bitmaps; paired_delta_pp / paired_ci_pp / paired_control in canonical.json). ⚑ marks a cell that moved by more than the combined CI of old and new (old 2p values of rounds 1–2 are compared after the documented control offsets: −1.21 pp at 2p in round 1, −1.00 / +0.40 at 3p / 4p in round 2). For rounds 1–2 cells three things changed at once (Baseline fix, hashed seeds, 2024 rules); E07c bounds the rules' own effect at ≤ 0.14 pp.

Headlines

Number 2p (old → new) 3p 4p 5p
Recommended policy (evolved + two-step win search) vs folk, win rate % 66.80 → 66.89 ±0.29 51.80 → 51.92 ±0.31 41.42 → 41.30 ±0.68 34.62 → 34.38 ±0.66
Evolved weights alone (no lookahead) vs folk, win rate % 65.44 → 65.81 ±0.29 49.73 → 50.13 ±0.31 38.61 → 39.28 ±0.30 ⚑ 32.93 → 32.73 ±0.65
All-folk table: seat 1 win rate % (E01) 56.75 → 57.28 ±0.31 ⚑ 36.27 → 36.02 ±0.30 25.83 → 25.34 ±0.27 ⚑ 20.20 → 19.82 ±0.25
All-evolved table (with lookahead): seat 1 win rate % (E01b) 56.65 → 56.91 ±0.31 39.73 → 39.92 ±0.30 30.70 → 30.69 ±0.29 25.39 → 25.18 ±0.60
All-evolved table (weights only): seat 1 win rate % (E01b) 57.00 → 57.12 ±0.31 39.90 → 40.04 ±0.30 31.00 → 30.82 ±0.29 25.60 → 25.56 ±0.60
All-folk control, rotating seat: Δ vs fair (E33 baseline_stats) -1.21 → +0.14 ±0.49 -0.13 → -0.14 ±0.46 +0.30 → +0.20 ±0.43 +0.16 → +0.20 ±0.39
Aggro (fire everything) vs folk, win rate % (E04) 56.78 → 50.80 ±0.49 (paired +0.67 ±0.48) ⚑ — → 31.70 ±0.46 (paired -1.49 ±0.48) 21.10 → 21.33 ±0.40 (paired -3.88 ±0.43) — → 16.32 ±0.36 (paired -3.88 ±0.39)
Hoarder vs folk, win rate % (E04) 47.16 → 47.31 ±0.49 (paired -2.83 ±0.33) — → 30.64 ±0.45 (paired -2.55 ±0.37) 21.75 → 22.73 ±0.41 (paired -2.47 ±0.35) ⚑ — → 17.93 ±0.38 (paired -2.27 ±0.32)
Play Birthday when an opponent holds ≥ $2, win rate % (E09) 54.00 → 50.28 ±0.49 (paired +0.14 ±0.12) ⚑ — → 33.37 ±0.46 (paired +0.17 ±0.16) — → 25.30 ±0.43 (paired +0.09 ±0.17) — → 20.39 ±0.40 (paired +0.18 ±0.17)
Always bank Birthday, win rate % (E09) 49.30 → 45.23 ±0.49 (paired -4.91 ±0.26) ⚑ — → 27.69 ±0.44 (paired -5.50 ±0.30) — → 19.50 ±0.39 (paired -5.70 ±0.30) — → 14.90 ±0.35 (paired -5.30 ±0.28)
Counting-tuned weights vs pre-counting weights, win rate % (E12) 50.19 → 50.10 ±0.69 34.22 → 33.53 ±0.65 25.84 → 26.05 ±0.61
Two-step win search's own value: Δ vs the same weights without it (E19b) +1.50 → +1.50 ±0.31 +2.36 → +2.12 ±0.30 +2.06 → +2.03 ±0.62 +1.48 → +1.67 ±0.57
Rollout search over the evolved policy, win rate % (E13c; 400 / 1,000 games) 46.25 → 44.75 ±4.87 34.70 → 33.10 ±2.92 30.20 → 32.10 ±2.89 26.70 → 29.90 ±2.84

E03 — card value to the folk player (drop in pp when the card class is forbidden; old 3p/5p never run)

Number 2p (old → new) 3p 4p 5p
Rent cards 11.04 → 13.14 ±0.47 (paired -13.28 ±0.38) ⚑ — → 16.70 ±0.36 (paired -16.55 ±0.41) 17.66 → 18.29 ±0.24 (paired -18.50 ±0.41) ⚑ — → 16.53 ±0.18 (paired -16.73 ±0.38)
Pass Go 18.38 → 19.35 ±0.45 (paired -19.49 ±0.57) ⚑ — → 16.57 ±0.37 (paired -16.43 ±0.51) 12.41 → 12.49 ±0.32 (paired -12.70 ±0.46) — → 9.99 ±0.29 (paired -10.19 ±0.41)
Deal Breaker 15.15 → 14.25 ±0.47 (paired -14.39 ±0.35) ⚑ — → 12.24 ±0.40 (paired -12.09 ±0.34) 8.93 → 8.46 ±0.36 (paired -8.67 ±0.31) — → 6.34 ±0.34 (paired -6.54 ±0.28)
It's My Birthday 4.60 → 4.78 ±0.49 (paired -4.91 ±0.26) — → 5.64 ±0.44 (paired -5.50 ±0.30) 5.50 → 5.50 ±0.39 (paired -5.70 ±0.30) — → 5.10 ±0.35 (paired -5.30 ±0.28)
Sly Deal 9.24 → 8.10 ±0.48 (paired -8.23 ±0.29) ⚑ — → 7.77 ±0.43 (paired -7.63 ±0.30) 5.33 → 5.21 ±0.39 (paired -5.42 ±0.27) — → 3.24 ±0.37 (paired -3.44 ±0.23)
Just Say No 8.68 → 7.84 ±0.48 (paired -7.98 ±0.28) ⚑ — → 5.62 ±0.44 (paired -5.48 ±0.25) 3.68 → 3.23 ±0.40 (paired -3.44 ±0.22) — → 2.24 ±0.38 (paired -2.44 ±0.19)
Debt Collector 8.83 → 8.58 ±0.48 (paired -8.72 ±0.30) — → 5.77 ±0.44 (paired -5.63 ±0.30) 3.80 → 3.81 ±0.40 (paired -4.02 ±0.28) — → 2.41 ±0.37 (paired -2.61 ±0.26)
Forced Deal 2.88 → 2.14 ±0.49 (paired -2.28 ±0.22) ⚑ — → 2.90 ±0.45 (paired -2.76 ±0.24) 1.72 → 1.69 ±0.41 (paired -1.89 ±0.22) — → 0.79 ±0.39 (paired -0.99 ±0.19)
Double the Rent 1.84 → 0.98 ±0.49 (paired -1.11 ±0.16) ⚑ — → 0.94 ±0.46 (paired -0.80 ±0.16) 0.16 → -0.01 ±0.42 (paired -0.19 ±0.10) — → -0.17 ±0.39 (paired -0.03 ±0.08)
Moving wild cards 0.00 → 1.44 ±0.49 (paired -1.57 ±0.22) ⚑ — → 1.86 ±0.46 (paired -1.71 ±0.21) 0.00 → 0.73 ±0.42 (paired -0.94 ±0.18) ⚑ — → 0.69 ±0.39 (paired -0.89 ±0.16)
House / Hotel 1.66 → 0.88 ±0.49 (paired -1.01 ±0.17) ⚑ — → 1.05 ±0.46 (paired -0.91 ±0.18) 0.67 → 0.35 ±0.42 (paired -0.56 ±0.17) — → 0.01 ±0.39 (paired -0.21 ±0.15)

E45 — card value to the evolved player (drop in pp; old = round 3 at 100k under the same rules)

Number 2p (old → new) 3p 4p 5p
Rent cards 8.43 → 6.97 ±0.31 (paired -6.97 ±0.22) ⚑ 13.30 → 12.70 ±0.25 (paired -12.67 ±0.26) ⚑ 15.13 → 14.62 ±0.19 (paired -14.75 ±0.25) ⚑ 14.53 → 14.35 ±0.14 (paired -14.46 ±0.24)
Pass Go 21.99 → 12.43 ±0.30 (paired -12.43 ±0.38) ⚑ 16.91 → 11.61 ±0.26 (paired -11.58 ±0.34) ⚑ 13.78 → 10.29 ±0.22 (paired -10.43 ±0.30) ⚑ 11.71 → 9.21 ±0.19 (paired -9.32 ±0.27) ⚑
Deal Breaker 20.23 → 20.63 ±0.28 (paired -20.62 ±0.26) 15.14 → 14.00 ±0.24 (paired -13.97 ±0.23) ⚑ 11.40 → 10.92 ±0.22 (paired -11.06 ±0.21) ⚑ 8.77 → 8.59 ±0.20 (paired -8.70 ±0.19)
It's My Birthday 2.56 → 2.40 ±0.31 (paired -2.39 ±0.14) 4.40 → 4.36 ±0.28 (paired -4.33 ±0.19) 6.04 → 5.93 ±0.24 (paired -6.07 ±0.20) 6.50 → 6.47 ±0.21 (paired -6.57 ±0.20)
Sly Deal 11.08 → 9.13 ±0.30 (paired -9.13 ±0.21) ⚑ 8.00 → 7.27 ±0.27 (paired -7.24 ±0.20) ⚑ 5.93 → 5.50 ±0.25 (paired -5.64 ±0.18) ⚑ 4.48 → 4.19 ±0.23 (paired -4.30 ±0.17)
Just Say No 10.69 → 11.63 ±0.30 (paired -11.63 ±0.22) ⚑ 7.59 → 8.06 ±0.27 (paired -8.03 ±0.19) ⚑ 5.18 → 5.35 ±0.25 (paired -5.49 ±0.17) 3.66 → 3.61 ±0.23 (paired -3.72 ±0.15)
Debt Collector 6.19 → 5.80 ±0.31 (paired -5.80 ±0.19) 5.68 → 5.70 ±0.28 (paired -5.67 ±0.21) 4.54 → 4.62 ±0.25 (paired -4.76 ±0.19) 3.62 → 3.46 ±0.23 (paired -3.57 ±0.18)
Forced Deal 5.14 → 4.63 ±0.31 (paired -4.63 ±0.17) ⚑ 4.38 → 4.21 ±0.28 (paired -4.18 ±0.18) 3.42 → 3.14 ±0.26 (paired -3.28 ±0.16) 2.50 → 2.30 ±0.24 (paired -2.40 ±0.15)
Double the Rent 1.82 → 0.95 ±0.31 (paired -0.95 ±0.10) ⚑ 1.40 → 1.03 ±0.29 (paired -1.01 ±0.11) 1.16 → 0.89 ±0.27 (paired -1.02 ±0.11) 0.79 → 0.60 ±0.24 (paired -0.70 ±0.11)
Moving wild cards 0.59 → 1.84 ±0.31 (paired -1.84 ±0.15) ⚑ 0.73 → 1.78 ±0.29 (paired -1.76 ±0.14) ⚑ 0.45 → 0.94 ±0.27 (paired -1.08 ±0.11) ⚑ 0.27 → 0.47 ±0.25 (paired -0.57 ±0.10)
House / Hotel 0.17 → -0.40 ±0.31 (paired +0.40 ±0.11) ⚑ -0.38 → -0.54 ±0.29 (paired +0.57 ±0.11) -0.55 → -0.69 ±0.27 (paired +0.56 ±0.10) -0.46 → -0.65 ±0.25 (paired +0.55 ±0.09)

E15 — one card left, a play remaining (Δ vs fair, pp)

Number 2p (old → new) 3p 4p 5p
Always dump the last card +0.44 → +0.71 ±0.49 (paired +0.57 ±0.13) — → +0.64 ±0.46 (paired +0.78 ±0.14) +0.96 → +0.77 ±0.43 (paired +0.56 ±0.11) — → +0.43 ±0.40 (paired +0.23 ±0.07)
Always hold it -0.54 → -0.28 ±0.49 (paired -0.42 ±0.09) — → -0.97 ±0.46 (paired -0.83 ±0.12) -0.21 → -0.40 ±0.42 (paired -0.60 ±0.10) — → -0.13 ±0.39 (paired -0.33 ±0.07)
Dump unless it is a Just Say No +0.39 → +0.68 ±0.49 (paired +0.54 ±0.12) — → +0.55 ±0.46 (paired +0.69 ±0.12) +0.86 → +0.66 ±0.43 (paired +0.45 ±0.10) — → +0.41 ±0.40 (paired +0.21 ±0.07)
Dump unless it is a Deal Breaker +0.44 → +0.73 ±0.49 (paired +0.59 ±0.12) — → +0.65 ±0.46 (paired +0.79 ±0.14) +0.96 → +0.77 ±0.43 (paired +0.56 ±0.11) — → +0.43 ±0.40 (paired +0.23 ±0.07)
Dump unless it is a rent card +0.16 → +0.41 ±0.49 (paired +0.27 ±0.10) — → +0.34 ±0.46 (paired +0.49 ±0.12) +0.85 → +0.65 ±0.43 (paired +0.44 ±0.10) — → +0.36 ±0.40 (paired +0.17 ±0.07)
Dump unless it is $4+ money +0.41 → +0.68 ±0.49 (paired +0.54 ±0.13) — → +0.60 ±0.46 (paired +0.74 ±0.14) +0.97 → +0.74 ±0.43 (paired +0.54 ±0.11) — → +0.40 ±0.40 (paired +0.20 ±0.07)
Dump unless it is an attack card +0.42 → +0.66 ±0.49 (paired +0.52 ±0.12) — → +0.57 ±0.46 (paired +0.71 ±0.13) +0.92 → +0.73 ±0.43 (paired +0.53 ±0.10) — → +0.40 ±0.40 (paired +0.20 ±0.07)
Dump unless it is a property +0.38 → +0.69 ±0.49 (paired +0.55 ±0.13) — → +0.58 ±0.46 (paired +0.72 ±0.14) +0.88 → +0.74 ±0.43 (paired +0.53 ±0.11) — → +0.39 ±0.40 (paired +0.18 ±0.08)

E14 — weight ablation at 4 players (win rate % of the evolved policy with one weight reset to its folk value; fair 25.0)

Weight reset old → new
ofile_2t_cap2 -5.95 → 44.70 ±0.49
ofile_2t_cap2 -2.96 → 31.03 ±0.45
ofile_2t_cap2 -1.89 → 23.13 ±0.41
ofile_2t_cap2 — → 18.97 ±0.38
ofile_3t_cap2 -10.70 → 39.58 ±0.48 ⚑
ofile_3t_cap2 -7.08 → 26.97 ±0.43
ofile_3t_cap2 -4.99 → 19.45 ±0.39
ofile_3t_cap2 — → 16.12 ±0.36
irst_1 -6.17 → 43.34 ±0.49 ⚑
irst_1 -2.73 → 32.75 ±0.46 ⚑
irst_1 -0.22 → 26.04 ±0.43 ⚑
irst_1 2.41 → 22.35 ±0.41
irst_2 -13.57 → 34.27 ±0.47 ⚑
irst_2 -8.06 → 28.53 ±0.44 ⚑
irst_2 -4.36 → 21.37 ±0.40 ⚑
irst_2 — → 17.51 ±0.37
bank_action_DoubleRent 25.21 → 25.23 ±0.60
breaker_wins 25.20 → 25.23 ±0.60
jsn_breaker 25.20 → 25.23 ±0.60
keep_DoubleRent 25.20 → 25.23 ±0.60
keep_ForcedDeal 25.20 → 25.23 ±0.60
keep_JustSayNo 25.20 → 25.23 ±0.60
keep_anyrent 25.20 → 25.23 ±0.60
keep_prop 24.75 → 24.77 ±0.60
keep_rent 25.19 → 25.23 ±0.60
kind_movebldg 25.20 → 25.23 ±0.60
kind_movecard 25.20 → 25.23 ±0.60
kind_passgo 25.22 → 25.25 ±0.60
kind_prop 24.25 → 24.30 ±0.59
prop_completes 25.21 → 25.24 ±0.60
prop_progress 21.39 → 21.42 ±0.57
prop_wins 25.20 → 25.23 ±0.60
steal_my_gain 24.96 → 24.98 ±0.60
take_amount 24.35 → 24.53 ±0.60
take_from_table 24.86 → 25.06 ±0.60
take_vs_leader 25.07 → 25.30 ±0.60

E10 — Set-completion timing (delay full sets to dodge Deal Breaker) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
delay_always -13.66 → -14.12 ±0.47 (paired -14.26 ±0.46) ⚑ -12.95 → -13.69 ±0.39 (paired -13.55 ±0.42) ⚑ -8.77 → -9.69 ±0.35 (paired -9.89 ±0.38) ⚑ -6.13 → -5.73 ±0.34 (paired -5.93 ±0.34)
delay_protected -5.16 → -4.75 ±0.49 (paired -4.89 ±0.36) -2.54 → -2.97 ±0.45 (paired -2.82 ±0.34) -0.50 → -0.96 ±0.42 (paired -1.16 ±0.31) -0.11 → -0.06 ±0.39 (paired -0.26 ±0.27)
delay_counting -10.70 → -10.91 ±0.48 (paired -11.05 ±0.44) ⚑ -6.05 → -6.62 ±0.43 (paired -6.47 ±0.41) -1.99 → -2.47 ±0.41 (paired -2.67 ±0.36) -0.95 → -0.82 ±0.39 (paired -1.02 ±0.31)

E11 — Un-complete sets with wilds at end of turn (Deal Breaker dodge) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
wild_dodge -3.14 → -4.15 ±0.49 (paired -4.29 ±0.38) ⚑ -1.27 → -3.23 ±0.45 (paired -3.08 ±0.40) ⚑ -0.11 → -1.41 ±0.42 (paired -1.61 ±0.37) ⚑ -0.39 → -1.12 ±0.38 (paired -1.32 ±0.33) ⚑

E12 — Flip wilds to maximise rent, flip back before ending (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
wild_rentflip +0.17 → -0.13 ±0.49 (paired -0.27 ±0.22) ⚑ +3.05 → +0.93 ±0.47 (paired +1.07 ±0.26) ⚑ +3.23 → +2.25 ±0.44 (paired +2.05 ±0.26) ⚑ +2.81 → +2.12 ±0.41 (paired +1.92 ±0.25) ⚑

E13 — Bank floor before laying property (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
bank_floor_3 -0.70 → +0.02 ±0.49 (paired -0.12 ±0.37) -1.79 → -1.71 ±0.46 (paired -1.56 ±0.44) -3.82 → -3.44 ±0.40 (paired -3.65 ±0.43) -3.21 → -3.48 ±0.36 (paired -3.68 ±0.40)
bank_floor_5 -1.53 → -1.86 ±0.49 (paired -2.00 ±0.41) ⚑ -4.70 → -4.71 ±0.44 (paired -4.57 ±0.46) -6.28 → -6.35 ±0.38 (paired -6.55 ±0.44) -5.51 → -5.76 ±0.34 (paired -5.96 ±0.41)
bank_floor_8 -6.22 → -7.75 ±0.48 (paired -7.89 ±0.45) ⚑ -9.61 → -9.77 ±0.42 (paired -9.62 ±0.48) -9.98 → -10.24 ±0.35 (paired -10.44 ±0.44) -7.70 → -7.94 ±0.32 (paired -8.14 ±0.41)
never_bank_money — → -8.72 ±0.48 (paired -8.86 ±0.32) -6.58 → -6.76 ±0.43 (paired -6.62 ±0.31) -4.53 → -4.46 ±0.40 (paired -4.67 ±0.28) — → -2.71 ±0.37 (paired -2.91 ±0.24)

E14 — Opening tempo: pass the first turn(s), low-profile opening (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
pass_first_1 -6.17 → -6.66 ±0.49 (paired -6.80 ±0.47) ⚑ -2.73 → -0.59 ±0.46 (paired -0.45 ±0.53) ⚑ -0.22 → +1.04 ±0.43 (paired +0.83 ±0.51) ⚑ +2.41 → +2.35 ±0.41 (paired +2.15 ±0.49)
pass_first_2 -13.57 → -15.72 ±0.47 (paired -15.86 ±0.54) ⚑ -8.06 → -4.81 ±0.44 (paired -4.67 ±0.56) ⚑ -4.36 → -3.63 ±0.40 (paired -3.84 ±0.53) ⚑ — → -2.49 ±0.37 (paired -2.69 ±0.50)
low_profile_2t_cap2 -5.95 → -5.30 ±0.49 (paired -5.44 ±0.40) -2.96 → -2.31 ±0.45 (paired -2.16 ±0.47) -1.89 → -1.87 ±0.41 (paired -2.07 ±0.45) — → -1.03 ±0.38 (paired -1.23 ±0.42)
low_profile_3t_cap2 -10.70 → -10.42 ±0.48 (paired -10.55 ±0.44) ⚑ -7.08 → -6.36 ±0.43 (paired -6.22 ±0.48) -4.99 → -5.55 ±0.39 (paired -5.75 ±0.46) — → -3.88 ±0.36 (paired -4.08 ±0.42)

E15 — When to fire money charges (rent / Debt Collector / Birthday) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
charge_now +3.90 → -2.12 ±0.49 (paired -2.25 ±0.40) ⚑ -0.45 → -1.68 ±0.46 (paired -1.54 ±0.41) ⚑ -2.90 → -3.10 ±0.41 (paired -3.30 ±0.37) -1.56 → -2.31 ±0.37 (paired -2.51 ±0.34) ⚑
charge_rich_5 — → -2.07 ±0.49 (paired -2.21 ±0.30) -2.82 → -1.39 ±0.46 (paired -1.24 ±0.38) ⚑ -2.47 → -0.55 ±0.42 (paired -0.76 ±0.38) ⚑ -0.99 → -0.62 ±0.39 (paired -0.82 ±0.36)
charge_rich_8 — → -4.72 ±0.49 (paired -4.86 ±0.34) -4.93 → -3.54 ±0.45 (paired -3.40 ±0.41) ⚑ -5.58 → -4.03 ±0.40 (paired -4.24 ±0.42) ⚑ -1.47 → -0.90 ±0.39 (paired -1.10 ±0.39) ⚑
rent_chicken — → -3.24 ±0.49 (paired -3.38 ±0.28) +1.23 → +1.01 ±0.47 (paired +1.15 ±0.31) +2.45 → +2.63 ±0.44 (paired +2.43 ±0.27) +2.20 → +2.11 ±0.41 (paired +1.91 ±0.22)

E16 — Payment policy: exact change vs shed the big bill; dead properties before cash; never gift (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
pay_min_overpay — → +0.75 ±0.49 (paired +0.61 ±0.10) +0.53 → +0.50 ±0.46 (paired +0.64 ±0.14) +1.00 → +1.15 ±0.43 (paired +0.95 ±0.16) — → +0.75 ±0.40 (paired +0.55 ±0.15)
pay_dead_props — → -8.85 ±0.48 (paired -8.99 ±0.33) -8.86 → -8.46 ±0.42 (paired -8.32 ±0.35) -7.40 → -7.32 ±0.37 (paired -7.53 ±0.35) — → -5.06 ±0.35 (paired -5.26 ±0.32)
pay_never_gift — → +0.35 ±0.49 (paired +0.21 ±0.07) +0.14 → +0.13 ±0.46 (paired +0.28 ±0.10) +0.55 → +0.46 ±0.43 (paired +0.26 ±0.11) — → +0.45 ±0.40 (paired +0.25 ±0.11)

E17 — Gift-then-Deal-Breaker: Forced Deal into DB, pay with the completing card then DB (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
combo_fd_db -1.29 → +0.11 ±0.49 (paired -0.03 ±0.06) -0.20 → -0.22 ±0.46 (paired -0.08 ±0.06) +0.16 → +0.12 ±0.43 (paired -0.09 ±0.05) — → +0.14 ±0.39 (paired -0.06 ±0.05)
pay_gift_then_db -1.31 → -0.05 ±0.49 (paired -0.19 ±0.06) -0.15 → -0.21 ±0.46 (paired -0.07 ±0.05) +0.21 → +0.21 ±0.43 (paired +0.01 ±0.05) — → +0.14 ±0.39 (paired -0.06 ±0.05)

E18 — Just Say No discipline (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
jsn_only_breaker -1.63 → -0.65 ±0.49 (paired -0.79 ±0.20) -0.81 → -0.94 ±0.46 (paired -0.80 ±0.18) -0.13 → -0.22 ±0.42 (paired -0.43 ±0.15) -0.11 → -0.15 ±0.39 (paired -0.35 ±0.14)
jsn_anything -0.78 → +0.49 ±0.49 (paired +0.35 ±0.23) -0.15 → -0.55 ±0.46 (paired -0.40 ±0.25) +0.04 → -0.00 ±0.42 (paired -0.21 ±0.24) -0.37 → -0.24 ±0.39 (paired -0.43 ±0.22)
jsn_threshold_2 -1.46 → -0.14 ±0.49 (paired -0.28 ±0.14) -0.42 → -0.79 ±0.46 (paired -0.64 ±0.19) +0.12 → +0.09 ±0.42 (paired -0.11 ±0.18) — → -0.01 ±0.39 (paired -0.21 ±0.17)
jsn_threshold_8 -1.43 → -0.31 ±0.49 (paired -0.45 ±0.18) -0.49 → -0.56 ±0.46 (paired -0.41 ±0.16) +0.08 → +0.02 ±0.42 (paired -0.18 ±0.14) — → +0.04 ±0.39 (paired -0.16 ±0.12)
jsn_no_counter -2.26 → -0.76 ±0.49 (paired -0.90 ±0.10) -0.94 → -0.82 ±0.46 (paired -0.68 ±0.09) -0.40 → -0.25 ±0.42 (paired -0.46 ±0.07) — → -0.12 ±0.39 (paired -0.32 ±0.07)
bait_before_db -1.11 → +0.12 ±0.49 -0.45 → -0.51 ±0.46 -0.18 → -0.13 ±0.42 — → -0.05 ±0.39

E19 — Hand management: dump to zero, deny discards, pass when weak, Pass Go last (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
dump_to_zero -0.44 → +0.98 ±0.49 (paired +0.84 ±0.15) +0.79 → +0.97 ±0.47 (paired +1.11 ±0.16) +1.06 → +0.88 ±0.43 (paired +0.68 ±0.12) +0.45 → +0.50 ±0.40 (paired +0.30 ±0.08)
discard_deny -2.03 → -0.70 ±0.49 (paired -0.84 ±0.25) -2.02 → -2.10 ±0.45 (paired -1.96 ±0.28) -1.68 → -1.29 ±0.42 (paired -1.50 ±0.28) — → -0.94 ±0.38 (paired -1.14 ±0.27)
pass_when_weak -6.80 → -6.46 ±0.49 (paired -6.60 ±0.30) ⚑ -5.32 → -5.55 ±0.44 (paired -5.41 ±0.31) -3.63 → -3.53 ±0.40 (paired -3.74 ±0.28) — → -1.78 ±0.38 (paired -1.98 ±0.24)
passgo_last -1.93 → -1.41 ±0.49 (paired -1.55 ±0.50) -2.71 → -2.93 ±0.45 (paired -2.79 ±0.50) -2.34 → -2.80 ±0.41 (paired -3.01 ±0.47) — → -3.04 ±0.37 (paired -3.24 ±0.43)

E20 — House rule: moving a wild costs one of the three plays (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
rule_wildcost_baseline -1.21 → +0.19 ±0.49 -0.13 → -0.33 ±0.46 +0.30 → +0.28 ±0.43 — → +0.37 ±0.39
rule_wildcost_wild_dodge — → -7.92 ±0.48 (paired -8.11 ±0.40) -5.72 → -6.32 ±0.44 (paired -5.99 ±0.41) -3.85 → -3.58 ±0.40 (paired -3.86 ±0.38) — → -2.29 ±0.37 (paired -2.66 ±0.35)
rule_wildcost_wild_rentflip — → +0.26 ±0.49 (paired +0.07 ±0.24) -1.02 → -0.66 ±0.46 (paired -0.33 ±0.28) -0.43 → +0.96 ±0.43 (paired +0.68 ±0.28) ⚑ — → +1.04 ±0.40 (paired +0.67 ±0.26)

E21 — The 2008 reading: Just Say No is free on your own turn (the 2024 rule is now the engine default; this cell tests the opposite switch) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
rule_jsnfree_baseline -1.17 → +0.11 ±0.49 -0.22 → -0.16 ±0.46 +0.18 → +0.23 ±0.43 — → +0.15 ±0.39
rule_jsnfree_jsn_anything — → +0.49 ±0.49 (paired +0.38 ±0.22) -0.16 → -0.59 ±0.46 (paired -0.43 ±0.25) -0.03 → -0.01 ±0.42 (paired -0.24 ±0.24) — → -0.37 ±0.39 (paired -0.52 ±0.22)

E22 — Double the Rent: always double; x4 stacking rule; JSN cancels only the doubler (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
always_double -0.64 → +0.83 ±0.49 (paired +0.69 ±0.12) +0.67 → +0.78 ±0.46 (paired +0.93 ±0.15) +1.10 → +1.08 ±0.43 (paired +0.88 ±0.17) +0.86 → +0.96 ±0.40 (paired +0.76 ±0.15)
rule_nostack_baseline -1.24 → +0.09 ±0.49 -0.10 → -0.15 ±0.46 +0.25 → +0.20 ±0.43 — → +0.18 ±0.39
rule_nostack_always_double — → +0.88 ±0.49 (paired +0.79 ±0.12) +0.79 → +0.85 ±0.46 (paired +1.00 ±0.15) +1.15 → +1.17 ±0.43 (paired +0.97 ±0.17) — → +1.01 ±0.40 (paired +0.83 ±0.15)
rule_jsn_doubler_only_always_double — → +0.97 ±0.49 +0.84 → +1.00 ±0.47 +1.32 → +1.33 ±0.43 — → +1.10 ±0.40

E23 — Sets/bank needed to win, plays per turn (house rules), Speed Deal (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
sets4_baseline -1.16 → +0.04 ±0.49 -0.12 → -0.13 ±0.46 +0.22 → +0.04 ±0.42 — → +0.32 ±0.39
sets5_baseline -1.18 → -0.16 ±0.49 — → +0.11 ±0.46 — → -0.08 ±0.42 — → +0.15 ±0.39
sets4_plays4_baseline — → -0.10 ±0.49 -0.37 → +0.20 ±0.46 +0.60 → +0.22 ±0.43 — → +0.25 ±0.39
sets3_bank10_baseline -1.02 → +0.28 ±0.49 — → -0.10 ±0.46 +0.19 → +0.20 ±0.43 — → +0.52 ±0.40
sets4_bank15_plays4_baseline — → +0.10 ±0.49 — → +0.52 ±0.46 +0.31 → +0.21 ±0.43 — → +0.24 ±0.39
speed_deal_baseline — → +0.38 ±0.49 -0.14 → +0.13 ±0.46 +0.57 → -0.28 ±0.42 ⚑ — → +0.15 ±0.39
sets4_feature_es +17.06 → +14.43 ±0.47 (paired +14.39 ±0.50) ⚑ — → +19.88 ±0.49 (paired +20.01 ±0.55) +18.20 → +18.84 ±0.49 (paired +18.80 ±0.54) — → +18.10 ±0.48 (paired +17.78 ±0.53)
sets4_random -45.84 → -47.12 ±0.16 (paired -47.16 ±0.51) ⚑ — → -32.63 ±0.08 (paired -32.50 ±0.47) -24.82 → -24.77 ±0.05 (paired -24.81 ±0.43) — → -19.75 ±0.05 (paired -20.07 ±0.40)

E24 — Deck removals: no Deal Breaker, no $10M, no big money (2p), fewer Pass Go, no 2-colour wilds (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
no_db_baseline +0.01 → +0.20 ±0.49 ⚑ +0.04 → +0.16 ±0.46 +0.02 → +0.10 ±0.42 — → +0.08 ±0.39
no_db_feature_es +20.87 → +16.70 ±0.46 (paired +16.49 ±0.52) ⚑ — → +20.74 ±0.49 (paired +20.58 ±0.55) +16.48 → +17.65 ±0.48 (paired +17.55 ±0.53) ⚑ — → +14.27 ±0.47 (paired +14.19 ±0.49)
no_db_random -43.49 → -45.66 ±0.20 (paired -45.87 ±0.52) ⚑ — → -32.55 ±0.09 (paired -32.71 ±0.47) -24.70 → -24.76 ±0.05 (paired -24.86 ±0.43) — → -19.85 ±0.04 (paired -19.93 ±0.39)
no_db_aggro +14.38 → +5.65 ±0.49 (paired +5.45 ±0.52) ⚑ — → +1.65 ±0.47 (paired +1.49 ±0.51) — → -3.20 ±0.40 (paired -3.30 ±0.44) — → -3.24 ±0.37 (paired -3.31 ±0.39)
one_db_two_jsn_baseline +0.03 → +0.13 ±0.49 ⚑ — → +0.13 ±0.46 — → +0.13 ±0.43 — → -0.27 ±0.39
no_ten_baseline — → -0.20 ±0.49 +0.18 → +0.17 ±0.46 +0.66 → +0.33 ±0.43 — → +0.08 ±0.39
no_big_money_baseline +0.10 → -0.03 ±0.49 ⚑ — → +0.02 ±0.46 — → -0.14 ±0.42 — → +0.02 ±0.39
six_pass_go_baseline — → -0.21 ±0.49 -0.03 → +0.07 ±0.46 -0.36 → -0.05 ±0.42 — → -0.02 ±0.39
no_two_colour_wilds_baseline — → +0.29 ±0.49 -0.38 → +0.08 ±0.46 +0.25 → +0.04 ±0.42 — → -0.30 ±0.39

E25 — Skill vs luck: strong (ES FeaturePolicy) and no-skill (RandomLegal) probes by player count (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
feature_es +14.10 → +10.88 ±0.48 (paired +10.74 ±0.48) ⚑ +15.02 → +15.57 ±0.49 (paired +15.71 ±0.53) +13.87 → +14.25 ±0.48 (paired +14.04 ±0.52) — → +12.14 ±0.46 (paired +11.95 ±0.49)
random -45.45 → -46.60 ±0.18 (paired -46.74 ±0.51) ⚑ -32.25 → -32.30 ±0.10 (paired -32.15 ±0.47) -24.64 → -24.65 ±0.06 (paired -24.86 ±0.43) — → -19.73 ±0.05 (paired -19.93 ±0.40)

E26 — Value of seeing banks: blind (random) targeting (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
blind_target -4.39 → -4.58 ±0.44 (paired -4.44 ±0.36) -4.91 → -4.79 ±0.39 (paired -5.00 ±0.37) — → -4.03 ±0.36 (paired -4.23 ±0.35)

E27 — Table politics: target the leader; being ganged up on (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
target_leader -0.23 → -0.68 ±0.46 (paired -0.54 ±0.31) -0.31 → +0.09 ±0.42 (paired -0.12 ±0.33) — → +0.17 ±0.39 (paired -0.03 ±0.30)
feature_es_vs_gangup +16.24 → +16.48 ±0.49 (paired +16.20 ±0.54) +14.54 → +15.57 ±0.48 (paired +15.27 ±0.54) ⚑ — → +12.96 ±0.46 (paired +12.63 ±0.51)
aggro_vs_gangup — → -1.17 ±0.46 (paired -1.45 ±0.50) -3.43 → -3.15 ±0.40 (paired -3.45 ±0.46) — → -3.18 ±0.37 (paired -3.51 ±0.41)
baseline_vs_gangup -0.08 → +0.28 ±0.46 +0.42 → +0.30 ±0.43 — → +0.33 ±0.39

E28 — The $10M: hold it vs bank it at once (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
hold_ten -1.61 → -0.48 ±0.49 (paired -0.62 ±0.10) -0.47 → -0.61 ±0.46 (paired -0.46 ±0.10) -0.03 → -0.07 ±0.42 (paired -0.27 ±0.09) — → +0.07 ±0.39 (paired -0.13 ±0.07)
bank_ten_now -0.86 → +0.50 ±0.49 (paired +0.36 ±0.11) +0.09 → +0.16 ±0.46 (paired +0.30 ±0.13) +0.40 → +0.34 ±0.43 (paired +0.13 ±0.14) — → +0.29 ±0.39 (paired +0.09 ±0.13)

E29 — Colour priority: 2-card sets first vs high-rent colours first (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
colour_two_card -1.76 → -0.19 ±0.49 (paired -0.33 ±0.28) -0.79 → -0.30 ±0.46 (paired -0.16 ±0.33) +0.15 → +0.29 ±0.43 (paired +0.09 ±0.33) — → +0.41 ±0.39 (paired +0.21 ±0.31)
colour_high_rent -2.69 → -0.80 ±0.49 (paired -0.93 ±0.27) -2.09 → -1.36 ±0.46 (paired -1.22 ±0.32) -1.18 → -0.78 ±0.42 (paired -0.99 ±0.32) — → -0.67 ±0.39 (paired -0.86 ±0.30)

E30 — Hold-in-hand strategies: pairs & rainbow wilds, all wilds, until rent, everything (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
hold_pairs -1.36 → -0.50 ±0.49 (paired -0.64 ±0.32) -0.38 → -0.64 ±0.46 (paired -0.50 ±0.35) +0.55 → +0.29 ±0.43 (paired +0.08 ±0.33) — → +0.68 ±0.40 (paired +0.48 ±0.29)
hold_wilds -2.79 → -2.98 ±0.49 (paired -3.12 ±0.39) ⚑ -3.03 → -3.37 ±0.45 (paired -3.22 ±0.40) -1.24 → -1.92 ±0.41 (paired -2.13 ±0.37) — → -0.91 ±0.39 (paired -1.10 ±0.33)
hold_until_rent -23.89 → -22.98 ±0.44 (paired -23.12 ±0.47) -17.63 → -17.12 ±0.36 (paired -16.97 ±0.44) -9.90 → -9.48 ±0.35 (paired -9.69 ±0.41) — → -4.27 ±0.36 (paired -4.47 ±0.37)
hold_all -44.95 → -44.76 ±0.22 (paired -44.90 ±0.50) ⚑ -26.92 → -27.06 ±0.24 (paired -26.91 ±0.46) -18.03 → -18.39 ±0.24 (paired -18.59 ±0.43) — → -12.54 ±0.26 (paired -12.74 ±0.40)

E31 — Rent-card and building retention (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
never_bank_rent -1.14 → +0.14 ±0.49 (paired +0.00 ±0.12) — → +0.00 ±0.46 (paired +0.14 ±0.12) +0.74 → +0.84 ±0.43 (paired +0.63 ±0.12) +0.76 → +0.81 ±0.40 (paired +0.61 ±0.11)
bank_dead_rent — → -0.42 ±0.49 (paired -0.56 ±0.18) — → -1.48 ±0.46 (paired -1.34 ±0.21) -1.76 → -1.96 ±0.41 (paired -2.16 ±0.21) — → -2.26 ±0.37 (paired -2.46 ±0.19)
rule_nobankrent_all — → +0.01 ±0.49 — → -0.22 ±0.46 +0.25 → +0.35 ±0.43 — → +0.28 ±0.39
build_only_safe -1.65 → -0.39 ±0.49 (paired -0.53 ±0.14) — → -0.42 ±0.46 (paired -0.28 ±0.14) +0.29 → +0.13 ±0.43 (paired -0.07 ±0.13) — → +0.23 ±0.39 (paired +0.03 ±0.11)

E32 — The winning turn: rent first then win; farm rent instead of winning (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
rent_then_win -1.20 → +0.06 ±0.49 (paired -0.08 ±0.04) -0.09 → -0.17 ±0.46 (paired -0.03 ±0.03) +0.27 → +0.16 ±0.43 (paired -0.04 ±0.02) — → +0.20 ±0.39 (paired +0.00 ±0.02)
farm_rent_1 — → +0.04 ±0.49 (paired -0.10 ±0.04) -0.22 → -0.23 ±0.46 (paired -0.09 ±0.04) — → +0.08 ±0.42 (paired -0.12 ±0.04) — → +0.10 ±0.39 (paired -0.10 ±0.05)
farm_rent_2 — → -0.42 ±0.49 (paired -0.56 ±0.08) -0.77 → -0.68 ±0.46 (paired -0.54 ±0.08) — → -0.39 ±0.42 (paired -0.60 ±0.08) — → -0.26 ±0.39 (paired -0.46 ±0.07)

E33 — Descriptive statistics of folk-Baseline play (all seats Baseline, instrumented) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
baseline_stats -1.21 → +0.14 ±0.49 -0.13 → -0.14 ±0.46 +0.30 → +0.20 ±0.43 +0.16 → +0.20 ±0.39

E34 — Pass Go as money: bank it to empty the hand, bank it when last, Pass-Go-only turns (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
passgo_bank_to_empty -0.55 → -0.45 ±0.49 (paired -0.59 ±0.13) -1.43 → -0.74 ±0.46 (paired -0.60 ±0.13) -0.09 → -0.34 ±0.42 (paired -0.55 ±0.11) — → -0.07 ±0.39 (paired -0.27 ±0.09)
passgo_bank_if_last -0.09 → +0.08 ±0.49 (paired -0.02 ±0.05) — → -0.20 ±0.46 (paired +0.01 ±0.06) +0.45 → +0.14 ±0.43 (paired +0.04 ±0.05) — → +0.15 ±0.39 (paired +0.03 ±0.04)
passgo_only_turn — → -4.02 ±0.49 (paired -4.16 ±0.32) -1.90 → -1.74 ±0.46 (paired -1.60 ±0.35) ⚑ -1.39 → -1.43 ±0.42 (paired -1.63 ±0.34) — → -0.69 ±0.39 (paired -0.89 ±0.32)

E35 — Actions as money: bank House/Hotel/rent early, bank the wild rent under $3, never bank actions, $10 floor, $10M after a buffer (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
bank_actions_early -0.89 → -0.77 ±0.49 (paired -0.91 ±0.28) -2.05 → -1.64 ±0.46 (paired -1.50 ±0.28) -1.71 → -2.17 ±0.41 (paired -2.38 ±0.25) — → -2.15 ±0.38 (paired -2.35 ±0.22)
bank_wild_rent_lt3 -0.84 → -0.71 ±0.49 (paired -0.85 ±0.13) — → -0.61 ±0.46 (paired -0.47 ±0.13) +0.06 → -0.34 ±0.42 (paired -0.55 ±0.12) — → -0.05 ±0.39 (paired -0.25 ±0.11)
never_bank_actions +0.03 → +0.21 ±0.49 (paired +0.07 ±0.07) — → -0.10 ±0.46 (paired +0.04 ±0.05) +0.62 → +0.35 ±0.43 (paired +0.15 ±0.05) — → +0.30 ±0.39 (paired +0.10 ±0.04)
bank_floor_10 -10.03 → -11.55 ±0.48 (paired -11.69 ±0.46) ⚑ -12.58 → -12.94 ±0.39 (paired -12.80 ±0.48) ⚑ -11.51 → -11.89 ±0.33 (paired -12.10 ±0.44) — → -8.89 ±0.31 (paired -9.09 ±0.41)
bank_ten_after_buffer_6 -0.32 → -0.20 ±0.49 (paired -0.34 ±0.08) -1.23 → -0.35 ±0.46 (paired -0.21 ±0.08) +0.34 → +0.07 ±0.42 (paired -0.13 ±0.08) — → +0.13 ±0.39 (paired -0.07 ±0.06)

E36 — Opening at 3-4 players: big bills only, small bills under the five, pass unless holding an attack (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
open_big_only — → -9.35 ±0.48 (paired -9.48 ±0.53) -3.39 → -3.46 ±0.45 (paired -3.32 ±0.56) ⚑ -3.37 → -3.45 ±0.40 (paired -3.66 ±0.53) — → -2.40 ±0.37 (paired -2.60 ±0.50)
open_small_under_five -3.80 → -4.37 ±0.49 (paired -4.50 ±0.42) — → -2.89 ±0.45 (paired -2.75 ±0.47) -3.59 → -4.06 ±0.40 (paired -4.27 ±0.46) — → -4.06 ±0.36 (paired -4.26 ±0.42)
pass_first_unless_attack — → -1.45 ±0.49 (paired -1.59 ±0.23) -0.91 → -0.24 ±0.46 (paired -0.10 ±0.25) +0.54 → +0.22 ±0.43 (paired +0.02 ±0.23) — → +0.26 ±0.39 (paired +0.06 ±0.21)

E37 — Deal Breaker timing: only to win, after the other DB, with a JSN, on empty hands, after their JSN, bank it to refill, bait the set (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
db_only_to_win -7.88 → -7.83 ±0.48 (paired -7.97 ±0.28) -6.46 → -6.12 ±0.44 (paired -5.97 ±0.30) -3.55 → -3.59 ±0.40 (paired -3.79 ±0.28) -2.74 → -2.74 ±0.37 (paired -2.94 ±0.26)
db_after_other_db — → -4.59 ±0.49 (paired -4.72 ±0.23) -2.91 → -2.32 ±0.45 (paired -2.18 ±0.25) +0.20 → -0.06 ±0.42 (paired -0.27 ±0.24) +0.05 → +0.03 ±0.39 (paired -0.17 ±0.22)
db_with_jsn_backup -4.13 → -4.12 ±0.49 (paired -4.25 ±0.23) -3.69 → -3.18 ±0.45 (paired -3.03 ±0.25) -1.38 → -1.48 ±0.42 (paired -1.69 ±0.24) -1.15 → -1.18 ±0.38 (paired -1.38 ±0.22)
db_prefer_empty_hand -7.36 → -7.24 ±0.48 (paired -7.38 ±0.28) -5.60 → -5.21 ±0.44 (paired -5.07 ±0.29) -2.50 → -2.64 ±0.41 (paired -2.85 ±0.28) -2.06 → -2.04 ±0.38 (paired -2.23 ±0.26)
db_wait_jsn_spent — → -5.95 ±0.49 (paired -6.09 ±0.26) -4.56 → -4.22 ±0.45 (paired -4.08 ±0.28) -1.46 → -1.79 ±0.41 (paired -1.99 ±0.27) -1.35 → -1.27 ±0.38 (paired -1.47 ±0.25)
bank_db_to_refill — → +0.10 ±0.49 (paired -0.04 ±0.04) -1.00 → -0.16 ±0.46 (paired -0.01 ±0.02) +0.40 → +0.18 ±0.43 (paired -0.03 ±0.02) +0.14 → +0.19 ±0.39 (paired -0.01 ±0.01)
bait_lay_for_db +0.00 → +0.15 ±0.49 (paired +0.01 ±0.03) -0.98 → -0.13 ±0.46 (paired +0.01 ±0.04) +0.40 → +0.18 ±0.43 (paired -0.03 ±0.05) +0.14 → +0.20 ±0.39 (paired -0.00 ±0.04)

E38 — Steal targeting: 2-card colours first, take the wild, steal whenever legal (2p offence), steal for rent (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
steal_two_card_first +0.00 → +0.17 ±0.49 (paired +0.03 ±0.28) -1.44 → -1.02 ±0.46 (paired -0.87 ±0.32) -0.30 → -0.62 ±0.42 (paired -0.82 ±0.31) — → -0.25 ±0.39 (paired -0.45 ±0.28)
steal_prefer_wild — → +0.15 ±0.49 (paired +0.01 ±0.04) -0.95 → -0.13 ±0.46 (paired +0.01 ±0.03) +0.43 → +0.22 ±0.43 (paired +0.01 ±0.03) — → +0.21 ±0.39 (paired +0.01 ±0.02)
steal_always -1.24 → -1.21 ±0.49 (paired -1.35 ±0.34) — → -2.57 ±0.45 (paired -2.43 ±0.35) — → -1.66 ±0.41 (paired -1.86 ±0.33) — → -0.90 ±0.39 (paired -1.09 ±0.30)
steal_always_charge_now -1.81 → -3.43 ±0.49 (paired -3.56 ±0.44) ⚑ — → -4.62 ±0.44 (paired -4.47 ±0.46) -4.21 → -5.12 ±0.39 (paired -5.32 ±0.42) — → -3.93 ±0.36 (paired -4.12 ±0.38)
steal_for_rent +0.53 → +0.63 ±0.49 (paired +0.49 ±0.14) -0.52 → +0.08 ±0.46 (paired +0.23 ±0.21) +1.11 → +0.75 ±0.43 (paired +0.55 ±0.27) +0.92 → +0.94 ±0.40 (paired +0.74 ±0.26)

E39 — Charge targeting and payment: overpay, bank-poor, most cards, JSN spent, next seat; pay fewest cards (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
target_overpay -1.55 → -0.69 ±0.46 (paired -0.55 ±0.18) -0.29 → -0.51 ±0.42 (paired -0.71 ±0.21) — → -0.43 ±0.39 (paired -0.63 ±0.21)
target_bank_poor +1.03 → +2.14 ±0.47 (paired +2.29 ±0.26) +3.20 → +2.76 ±0.44 (paired +2.56 ±0.28) — → +2.50 ±0.41 (paired +2.30 ±0.27)
debt_target_most_cards -1.53 → -0.62 ±0.46 (paired -0.47 ±0.11) -0.13 → -0.28 ±0.42 (paired -0.48 ±0.12) — → -0.23 ±0.39 (paired -0.43 ±0.12)
target_jsn_spent -2.20 → -1.51 ±0.46 (paired -1.36 ±0.19) -0.96 → -1.26 ±0.42 (paired -1.47 ±0.21) — → -1.06 ±0.38 (paired -1.26 ±0.21)
target_next_seat -3.32 → -2.41 ±0.45 (paired -2.27 ±0.32) -1.44 → -1.69 ±0.41 (paired -1.89 ±0.32) — → -1.03 ±0.38 (paired -1.23 ±0.28)
pay_fewest_cards — → +0.68 ±0.49 (paired +0.55 ±0.09) -0.26 → +0.44 ±0.46 (paired +0.59 ±0.13) +1.17 → +1.20 ±0.43 (paired +0.99 ±0.16) +0.75 → +0.78 ±0.40 (paired +0.58 ±0.15)

E40 — What to lay and hold: railroads, cheap cushion first, wilds until the steals are gone, dead colours (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
hold_railroads — → +0.09 ±0.49 (paired -0.05 ±0.08) -0.97 → -0.25 ±0.46 (paired -0.10 ±0.09) +0.41 → +0.06 ±0.42 (paired -0.14 ±0.09) — → +0.11 ±0.39 (paired -0.09 ±0.08)
lay_cheap_first — → -1.10 ±0.49 (paired -1.23 ±0.36) -0.90 → -0.73 ±0.46 (paired -0.58 ±0.43) ⚑ -0.12 → -0.31 ±0.42 (paired -0.52 ±0.42) — → -0.38 ±0.39 (paired -0.57 ±0.39)
hold_wilds_until_steals_gone — → -2.91 ±0.49 (paired -3.04 ±0.39) -3.03 → -3.03 ±0.45 (paired -2.89 ±0.40) ⚑ -1.21 → -1.54 ±0.42 (paired -1.75 ±0.37) — → -0.68 ±0.39 (paired -0.88 ±0.33)
discard_dead_colours — → +0.14 ±0.49 (paired +0.00 ±0.00) -0.99 → -0.14 ±0.46 (paired +0.00 ±0.01) +0.45 → +0.21 ±0.43 (paired +0.01 ±0.01) — → +0.21 ±0.39 (paired +0.01 ±0.01)

E41 — The winning turn: steal first vs opponents who JSN the winning play (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
win_steal_first — → +0.32 ±0.49 (paired +0.19 ±0.04) -0.78 → +0.11 ±0.46 (paired +0.26 ±0.05) +0.69 → +0.40 ±0.43 (paired +0.20 ±0.04) — → +0.36 ±0.39 (paired +0.17 ±0.04)
win_steal_first_vs_jsn_block_win — → -0.52 ±0.49 (paired +0.31 ±0.05) -1.11 → -0.34 ±0.46 (paired +0.36 ±0.06) +0.55 → +0.24 ±0.43 (paired +0.30 ±0.06) — → +0.22 ±0.39 (paired +0.21 ±0.05)
baseline_vs_jsn_block_win — → -0.83 ±0.49 -1.43 → -0.70 ±0.46 +0.19 → -0.07 ±0.42 — → +0.01 ±0.39

E42 — Rent-card class value by player count: forbid the any-colour rents, forbid the two-colour rents (one seat) (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
no_wild_rent -5.47 → -6.31 ±0.49 (paired -6.45 ±0.28) — → -5.49 ±0.44 (paired -5.34 ±0.29) -3.42 → -4.09 ±0.40 (paired -4.29 ±0.28) — → -2.50 ±0.37 (paired -2.70 ±0.25)
no_two_colour_rent -6.29 → -7.03 ±0.49 (paired -7.17 ±0.30) — → -12.84 ±0.40 (paired -12.70 ±0.37) -15.23 → -15.77 ±0.28 (paired -15.97 ±0.39) — → -15.20 ±0.21 (paired -15.39 ±0.37)

E43 — myforwik's simulation-derived bundle (Δ vs fair, pp; old = rounds 1–2 at 20k / E48 at 5p)

Number 2p (old → new) 3p 4p 5p
myforwik_bundle +2.57 → +2.58 ±0.49 (paired +2.44 ±0.40) +0.10 → +0.71 ±0.46 (paired +0.85 ±0.44) +0.66 → +0.80 ±0.43 (paired +0.59 ±0.42) +0.37 → +0.49 ±0.40 (paired +0.29 ±0.38)

E44 — 2024 rule: fire the attack first, keep a play to answer a Just Say No (and the mirror: attack last) (Δ vs fair, pp; old = rounds 1–2 at 20k / round 3)

Number 2p (old → new) 3p 4p 5p
attack_first_db +0.22 → +0.15 ±0.49 (paired +0.01 ±0.02) +0.10 → -0.13 ±0.46 (paired +0.01 ±0.02) +0.10 → +0.22 ±0.43 (paired +0.02 ±0.03) +0.08 → +0.20 ±0.39 (paired -0.00 ±0.03)
attack_first_any -0.20 → -0.25 ±0.49 (paired -0.39 ±0.12) -0.30 → -0.50 ±0.46 (paired -0.35 ±0.13) -0.25 → -0.14 ±0.42 (paired -0.34 ±0.12) -0.14 → +0.03 ±0.39 (paired -0.17 ±0.11)
attack_third -3.86 → -3.20 ±0.49 (paired -3.34 ±0.31) ⚑ -4.24 → -3.87 ±0.45 (paired -3.73 ±0.38) -4.73 → -4.07 ±0.40 (paired -4.28 ±0.40) ⚑ -5.00 → -4.23 ±0.36 (paired -4.42 ±0.38) ⚑
evolved_attack_first -0.24 → -0.40 ±0.49 (paired -0.26 ±0.10) -0.00 → -0.45 ±0.46 (paired -0.13 ±0.14) -0.03 → -0.15 ±0.42 (paired -0.12 ±0.14) -0.17 → -0.14 ±0.39 (paired -0.07 ±0.13)
evolved_attack_third -9.13 → -6.29 ±0.49 (paired -6.14 ±0.36) ⚑ -11.34 → -9.67 ±0.42 (paired -9.35 ±0.41) ⚑ -11.48 → -10.18 ±0.35 (paired -10.16 ±0.41) ⚑ -11.69 → -10.84 ±0.28 (paired -10.77 ±0.39) ⚑
evolved_table -0.08 → -0.14 ±0.49 +0.18 → -0.32 ±0.46 +0.17 → -0.02 ±0.42 -0.01 → -0.06 ±0.39

E46 — Just Say No fishing: Sly Deal first to draw the JSN, then the Deal Breaker (matched no-bait control; evolved actor) (Δ vs fair, pp; old = rounds 1–2 at 20k / round 3)

Number 2p (old → new) 3p 4p 5p
bait_before_db +0.06 → +0.08 ±0.22 (paired -0.05 ±0.04) -0.40 → -0.45 ±0.21 (paired -0.34 ±0.05) -0.25 → -0.22 ±0.19 (paired -0.37 ±0.05) — → -0.25 ±0.17 (paired -0.29 ±0.05)
db_first_no_bait +0.11 → +0.13 ±0.22 -0.09 → -0.12 ±0.21 +0.12 → +0.15 ±0.19 — → +0.04 ±0.18
bait_before_db_vs_evolved -16.78 → -16.85 ±0.21 (paired -0.04 ±0.17) -16.34 → -16.42 ±0.16 (paired -0.33 ±0.16) -13.20 → -13.19 ±0.14 (paired -0.41 ±0.15) — → -10.66 ±0.40 (paired -0.33 ±0.13)
db_first_no_bait_vs_evolved -16.85 → -17.07 ±0.65 -15.94 → -16.62 ±0.52 ⚑ -12.83 → -12.57 ±0.46 — → -10.33 ±0.41
evolved_bait -0.01 → -0.21 ±0.69 (paired +0.04 ±0.09) -0.10 → -1.05 ±0.65 (paired -0.20 ±0.12) ⚑ -0.11 → -0.08 ±0.60 (paired -0.18 ±0.12) — → -0.05 ±0.55 (paired -0.24 ±0.12)
evolved_no_bait -0.05 → -0.25 ±0.69 +0.07 → -0.84 ±0.65 ⚑ +0.13 → +0.10 ±0.60 — → +0.19 ±0.56

E47 — myforwik bundle, 2^4 factorial: dump_to_zero (D) x jsn_anything (J) x steal_two_card_first (S) x hold_pairs (H) (Δ vs fair, pp; old = rounds 1–2 at 20k / round 3)

Number 2p (old → new) 3p 4p 5p
fact_---- +0.04 → +0.14 ±0.49 (paired +0.00 ±0.00) -0.23 → -0.14 ±0.46 (paired +0.00 ±0.00) — → +0.20 ±0.43 (paired +0.00 ±0.00) — → +0.20 ±0.39 (paired +0.00 ±0.00)
fact_---H -0.38 → -0.50 ±0.49 (paired -0.64 ±0.32) -0.42 → -0.64 ±0.46 (paired -0.50 ±0.35) — → +0.29 ±0.43 (paired +0.08 ±0.33) — → +0.68 ±0.40 (paired +0.48 ±0.29)
fact_--S- +0.14 → +0.17 ±0.49 (paired +0.03 ±0.28) -0.95 → -1.02 ±0.46 (paired -0.87 ±0.32) — → -0.62 ±0.42 (paired -0.82 ±0.31) — → -0.25 ±0.39 (paired -0.45 ±0.28)
fact_--SH +1.44 → +1.31 ±0.49 (paired +1.17 ±0.37) +0.05 → +0.02 ±0.46 (paired +0.17 ±0.41) — → +0.20 ±0.43 (paired -0.00 ±0.39) — → +0.70 ±0.40 (paired +0.50 ±0.36)
fact_-J-- +0.27 → +0.49 ±0.49 (paired +0.35 ±0.23) -0.57 → -0.55 ±0.46 (paired -0.40 ±0.25) — → -0.00 ±0.42 (paired -0.21 ±0.24) — → -0.24 ±0.39 (paired -0.43 ±0.22)
fact_-J-H -0.38 → -0.45 ±0.49 (paired -0.59 ±0.36) -1.08 → -1.18 ±0.46 (paired -1.03 ±0.39) — → -0.23 ±0.42 (paired -0.43 ±0.37) — → +0.05 ±0.39 (paired -0.15 ±0.33)
fact_-JS- +0.64 → +0.72 ±0.49 (paired +0.58 ±0.33) -1.16 → -1.25 ±0.46 (paired -1.10 ±0.37) — → -0.86 ±0.42 (paired -1.06 ±0.36) — → -0.89 ±0.39 (paired -1.08 ±0.33)
fact_-JSH +1.48 → +1.39 ±0.49 (paired +1.25 ±0.39) -0.77 → -0.77 ±0.46 (paired -0.63 ±0.43) — → -0.34 ±0.42 (paired -0.55 ±0.41) — → -0.03 ±0.39 (paired -0.23 ±0.38)
fact_D--- +0.85 → +0.98 ±0.49 (paired +0.84 ±0.15) +0.86 → +0.97 ±0.47 (paired +1.11 ±0.16) — → +0.88 ±0.43 (paired +0.68 ±0.12) — → +0.50 ±0.40 (paired +0.30 ±0.08)
fact_D--H +0.12 → +0.07 ±0.49 (paired -0.07 ±0.33) +0.33 → +0.19 ±0.46 (paired +0.33 ±0.36) — → +0.94 ±0.43 (paired +0.73 ±0.33) — → +0.98 ±0.40 (paired +0.78 ±0.30)
fact_D-S- +1.25 → +1.36 ±0.49 (paired +1.22 ±0.32) +0.42 → +0.36 ±0.46 (paired +0.50 ±0.35) — → +0.22 ±0.43 (paired +0.01 ±0.32) — → +0.09 ±0.39 (paired -0.10 ±0.29)
fact_D-SH +2.24 → +2.21 ±0.49 (paired +2.07 ±0.38) +1.18 → +1.21 ±0.47 (paired +1.35 ±0.42) — → +1.10 ±0.43 (paired +0.90 ±0.40) — → +1.03 ±0.40 (paired +0.83 ±0.36)
fact_DJ-- +1.29 → +1.64 ±0.49 (paired +1.50 ±0.27) +0.60 → +0.72 ±0.46 (paired +0.86 ±0.29) — → +0.71 ±0.43 (paired +0.51 ±0.26) — → +0.23 ±0.39 (paired +0.03 ±0.23)
fact_DJ-H +0.33 → +0.34 ±0.49 (paired +0.21 ±0.37) -0.11 → -0.07 ±0.46 (paired +0.07 ±0.40) — → +0.62 ±0.43 (paired +0.42 ±0.38) — → +0.52 ±0.40 (paired +0.32 ±0.34)
fact_DJS- +2.04 → +2.29 ±0.49 (paired +2.15 ±0.36) +0.32 → +0.32 ±0.46 (paired +0.46 ±0.40) — → +0.09 ±0.42 (paired -0.12 ±0.37) — → -0.42 ±0.39 (paired -0.62 ±0.33)
fact_DJSH +2.55 → +2.58 ±0.49 (paired +2.44 ±0.40) +0.57 → +0.71 ±0.46 (paired +0.85 ±0.44) — → +0.80 ±0.43 (paired +0.59 ±0.42) — → +0.49 ±0.40 (paired +0.29 ±0.38)

E49 — Audit of the INCONCLUSIVE / NOT TESTED verdicts: high-N reruns, opponent-model cells, exposure counters (Δ vs fair, pp; old = rounds 1–2 at 20k / round 3)

Number 2p (old → new) 3p 4p 5p
baseline_stats +0.04 → +0.14 ±0.49 -0.23 → -0.14 ±0.46 +0.21 → +0.20 ±0.43 +0.16 → +0.20 ±0.39
delay_always -14.34 → -14.12 ±0.47 (paired -14.26 ±0.46) -13.98 → -13.69 ±0.39 (paired -13.55 ±0.42) -9.89 → -9.69 ±0.35 (paired -9.89 ±0.38) — → -5.73 ±0.34 (paired -5.93 ±0.34)
delay_always_table -0.35 → -0.43 ±0.49 (paired -0.57 ±0.58) -0.40 → -0.20 ±0.46 (paired -0.06 ±0.56) -0.23 → -0.27 ±0.42 (paired -0.47 ±0.51) — → +0.07 ±0.39 (paired -0.13 ±0.46)
wild_rentflip +1.38 → -0.19 ±0.22 (paired -0.27 ±0.22) ⚑
bank_floor_5 -1.42 → -2.16 ±0.22 (paired -2.00 ±0.41) ⚑
pay_min_overpay +0.58 → +0.59 ±0.21 (paired +0.64 ±0.14)
pay_never_gift +0.33 → +0.38 ±0.19 (paired +0.26 ±0.11)
combo_fd_db_vs_nojsn +7.83 → +7.96 ±0.48 (paired -0.05 ±0.05) +5.29 → +5.44 ±0.48 (paired -0.07 ±0.06) +3.56 → +3.59 ±0.44 (paired -0.10 ±0.05) — → +2.55 ±0.41 (paired -0.10 ±0.05)
baseline_vs_nojsn +7.90 → +8.02 ±0.48 +5.36 → +5.51 ±0.48 +3.63 → +3.69 ±0.44 — → +2.65 ±0.41
pay_gift_then_db_vs_nojsn +7.78 → +7.88 ±0.48 (paired -0.14 ±0.05) +5.27 → +5.43 ±0.48 (paired -0.08 ±0.05) +3.63 → +3.67 ±0.44 (paired -0.03 ±0.05) — → +2.63 ±0.41 (paired -0.02 ±0.04)
jsn_anything +0.43 → +0.62 ±0.31 (paired +0.35 ±0.23) -0.24 → -0.24 ±0.29 (paired -0.40 ±0.25) -0.31 → -0.24 ±0.27 (paired -0.21 ±0.24) — → -0.29 ±0.25 (paired -0.43 ±0.22)
jsn_only_breaker -0.42 → -0.62 ±0.31 (paired -0.79 ±0.20) -0.60 → -0.65 ±0.29 (paired -0.80 ±0.18) -0.34 → -0.37 ±0.27 (paired -0.43 ±0.15) — → -0.27 ±0.25 (paired -0.35 ±0.14)
jsn_no_counter -0.35 → -0.35 ±0.27 (paired -0.46 ±0.07)
rule_wildcost_baseline +0.01 → +0.19 ±0.49 -0.31 → -0.33 ±0.46 +0.34 → +0.28 ±0.43 — → +0.37 ±0.39
wild_dodge_table_free -0.09 → -0.07 ±0.46 (paired +0.07 ±0.48) +0.32 → +0.30 ±0.43 (paired +0.10 ±0.47) — → +0.01 ±0.39 (paired -0.18 ±0.44)
wild_dodge_table_costs +0.28 → +0.30 ±0.46 (paired +0.37 ±0.44) +0.31 → +0.35 ±0.43 (paired +0.04 ±0.43) — → +0.17 ±0.39 (paired +0.16 ±0.41)
always_double +0.95 → +1.01 ±0.27 (paired +0.88 ±0.17)
rule_jsn_doubler_only_always_double +1.14 → +1.21 ±0.27
sets3_bank10_random -46.37 → -47.01 ±0.17 ⚑ — → -32.45 ±0.09 -24.63 → -24.70 ±0.05 — → -19.72 ±0.05
target_leader -0.02 → +0.02 ±0.27 (paired -0.12 ±0.33) -0.07 → -0.00 ±0.25 (paired -0.03 ±0.30)
hold_ten -0.34 → -0.33 ±0.31 (paired -0.62 ±0.10) — → -0.39 ±0.29 (paired -0.46 ±0.10) -0.16 → -0.16 ±0.27 (paired -0.27 ±0.09) — → -0.04 ±0.25 (paired -0.13 ±0.07)
bank_ten_now +0.55 → +0.62 ±0.31 (paired +0.36 ±0.11) — → +0.37 ±0.29 (paired +0.30 ±0.13) +0.24 → +0.26 ±0.27 (paired +0.13 ±0.14) — → +0.24 ±0.25 (paired +0.09 ±0.13)
colour_two_card -0.18 → -0.17 ±0.31 (paired -0.33 ±0.28)
build_only_safe -0.29 → -0.32 ±0.31 (paired -0.53 ±0.14) — → -0.17 ±0.29 (paired -0.28 ±0.14) +0.04 → +0.05 ±0.27 (paired -0.07 ±0.13) — → +0.15 ±0.25 (paired +0.03 ±0.11)
passgo_bank_if_last +0.20 → +0.24 ±0.31 (paired +0.02 ±0.03) — → +0.04 ±0.29 (paired +0.00 ±0.04) +0.05 → +0.04 ±0.27 (paired +0.04 ±0.03) — → +0.04 ±0.25 (paired +0.03 ±0.03)
passgo_play_if_last +0.17 → +0.21 ±0.31 — → +0.04 ±0.29 +0.02 → +0.01 ±0.27 — → +0.01 ±0.25
bank_wild_rent_lt3 -0.26 → -0.35 ±0.27 (paired -0.55 ±0.12)
pass_first_unless_attack +0.02 → +0.02 ±0.27 (paired +0.02 ±0.23)
win_steal_first +0.31 → +0.28 ±0.27 (paired +0.20 ±0.04)
win_steal_first_vs_jsn_block_win +0.06 → +0.02 ±0.27 (paired +0.29 ±0.03)
baseline_vs_jsn_block_win -0.25 → -0.26 ±0.27
steal_prefer_wild +0.09 → +0.12 ±0.29 (paired +0.01 ±0.03) +0.08 → +0.10 ±0.27 (paired +0.01 ±0.03) — → +0.11 ±0.25 (paired +0.01 ±0.02)

What moved by more than its CI (104 of 590 comparable cells)

Of the 104 movers, 23 are round-1 cells at 2 players, where the old Baseline never played It's My Birthday (its ≥ $4 threshold could not be met by one opponent) — every variant that plays Birthday at 2p (Aggro, charge_now, the E09 cells, the Birthday ablation) lost the free edge it had over that Baseline, and every all-Baseline house-rule cell moved with the seed set. By experiment: E45 20, E03 11, E15 8, E14 7, E24 7, E44 7, E10 4, E11 4, E12 4, E23 3, E46 3, E49 3, E01 2, E04 2, E09 2, E13 2, E25 2, E30 2, E35 2, E40 2, E06 1, E19 1, E20 1, E27 1, E34 1, E36 1, E38 1. No mover changes the sign of a verdict that was outside its CI before; the labels are re-scored in VERDICTS-2024.

Cell Old (adj.) New Change Combined CI Of which the wild rule Old source
E24_no_db_aggro_2p +15.59 (raw +14.38) +5.65 -9.94 ±0.82 -1.92 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_pass_go_2p +21.99 +12.43 -9.56 ±0.41 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E15_charge_now_2p +5.11 (raw +3.90) -2.12 -7.23 ±0.85 -1.56 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E04_aggro_2p +56.78 +50.80 -5.98 ±0.69 -1.42 ±0.69 ⚑ E04 (40,000 games, old defaults, pre-fix Baseline)
E24_no_db_feature_es_2p +22.08 (raw +20.87) +16.70 -5.38 ±0.78 +0.17 ±0.65 round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_pass_go_3p +16.91 +11.61 -5.30 ±0.34 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E25_feature_es_2p +15.31 (raw +14.10) +10.88 -4.43 ±0.82 -0.39 ±0.68 round 1 (20,000 games, old defaults, pre-fix Baseline)
E09_bday_bank_2p +49.30 +45.23 -4.08 ±0.75 -0.14 ±0.69 E09 (30,000 games, old defaults)
E23_sets4_feature_es_2p +18.27 (raw +17.06) +14.43 -3.84 ±0.80 +0.93 ±0.67 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E09_bday_play_2p +54.00 +50.28 -3.72 ±0.75 +0.05 ±0.69 E09 (30,000 games, old defaults)
E45_pass_go_4p +13.78 +10.29 -3.49 ±0.29 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E24_no_db_random_2p -42.28 (raw -43.49) -45.66 -3.38 ±0.39 -0.76 ±0.30 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E14_pass_first_2_2p -12.36 (raw -13.57) -15.72 -3.36 ±0.82 -1.78 ±0.67 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E14_pass_first_2_3p -8.06 -4.81 +3.25 ±0.74 -0.56 ±0.63 round 1 (20,000 games, old defaults, pre-fix Baseline)
E44_evolved_attack_third_2p -9.13 -6.29 +2.84 ±0.57 +2.85 ±0.69 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E13_bank_floor_8_2p -5.01 (raw -6.22) -7.75 -2.74 ±0.84 -1.16 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_pass_go_5p +11.71 +9.21 -2.50 ±0.26 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E23_sets4_random_2p -44.63 (raw -45.84) -47.12 -2.49 ±0.32 -0.43 ±0.24 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E25_random_2p -44.24 (raw -45.45) -46.60 -2.36 ±0.34 not isolated round 1 (20,000 games, old defaults, pre-fix Baseline)
E11_wild_dodge_2p -1.93 (raw -3.14) -4.15 -2.22 ±0.85 -1.58 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E14_pass_first_1_3p -2.73 -0.59 +2.14 ±0.79 -0.19 ±0.65 round 1 (20,000 games, old defaults, pre-fix Baseline)
E12_wild_rentflip_3p +3.05 +0.93 -2.12 ±0.82 -1.19 ±0.67 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E03_rent_2p +11.04 +13.14 +2.10 ±0.68 +1.44 ±0.67 ⚑ E03 (40,000 games, old defaults, pre-fix Baseline)
E11_wild_dodge_3p -1.27 -3.23 -1.96 ±0.79 -1.11 ±0.64 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_sly_deal_2p +11.08 +9.13 -1.95 ±0.43 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E15_charge_rich_5_4p -2.47 -0.55 +1.92 ±0.72 +0.37 ±0.59 round 1 (20,000 games, old defaults, pre-fix Baseline)
E14_pass_first_1_2p -4.96 (raw -6.17) -6.66 -1.70 ±0.85 -0.81 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E10_delay_always_2p -12.45 (raw -13.66) -14.12 -1.67 ±0.82 +0.22 ±0.67 round 1 (20,000 games, old defaults, pre-fix Baseline)
E44_evolved_attack_third_3p -11.34 -9.67 +1.67 ±0.49 +1.92 ±0.58 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E38_steal_always_charge_now_2p -1.81 -3.43 -1.62 ±0.85 not isolated round 2 (20,000 games, old defaults)
E49_wild_rentflip_2p +1.38 -0.19 -1.57 ±0.31 not isolated round 3 E49 (200,000 games, 2024 defaults)
E15_charge_rich_8_4p -5.58 -4.03 +1.55 ±0.68 +0.50 ±0.57 round 1 (20,000 games, old defaults, pre-fix Baseline)
E13_bank_floor_5_2p -0.32 (raw -1.53) -1.86 -1.54 ±0.85 -0.59 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E35_bank_floor_10_2p -10.03 -11.55 -1.52 ±0.83 -1.46 ±0.68 ⚑ round 2 (20,000 games, old defaults)
E12_wild_rentflip_2p +1.38 (raw +0.17) -0.13 -1.51 ±0.85 -1.60 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_rent_2p +8.43 +6.97 -1.46 ±0.43 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E03_wild_moves_2p +0.00 +1.44 +1.44 ±0.69 +1.45 ±0.69 ⚑ E03b (40,000 games, old defaults, fixed Baseline)
E15_charge_rich_5_3p -2.82 -1.39 +1.43 ±0.79 +0.47 ±0.65 round 1 (20,000 games, old defaults, pre-fix Baseline)
E10_delay_counting_2p -9.49 (raw -10.70) -10.91 -1.42 ±0.83 +0.23 ±0.68 round 1 (20,000 games, old defaults, pre-fix Baseline)
E30_hold_wilds_2p -1.58 (raw -2.79) -2.98 -1.40 ±0.85 -0.91 ±0.69 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E15_charge_rich_8_3p -4.93 -3.54 +1.39 ±0.77 +0.39 ±0.64 round 1 (20,000 games, old defaults, pre-fix Baseline)
E20_rule_wildcost_wild_rentflip_4p -0.43 +0.96 +1.39 ±0.74 +0.60 ±0.61 round 1 (20,000 games, old defaults, pre-fix Baseline)
E35_bank_floor_10_3p -11.58 (raw -12.58) -12.94 -1.36 ±0.68 -0.61 ±0.56 ⚑ round 2 (20,000 games, old defaults)
E24_no_big_money_baseline_2p +1.31 (raw +0.10) -0.03 -1.34 ±0.85 -0.11 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E11_wild_dodge_4p -0.11 -1.41 -1.30 ±0.73 -0.79 ±0.59 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E44_evolved_attack_third_4p -11.48 -10.18 +1.30 ±0.41 +1.28 ±0.49 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E14_pass_first_1_4p -0.22 +1.04 +1.26 ±0.74 +0.14 ±0.61 round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_wild_moves_2p +0.59 +1.84 +1.25 ±0.44 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E15_charge_now_3p -0.45 -1.68 -1.23 ±0.80 -0.93 ±0.65 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E24_no_db_feature_es_4p +16.48 +17.65 +1.17 ±0.83 -0.49 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E03_sly_deal_2p +9.24 +8.10 -1.14 ±0.69 +0.21 ±0.68 E03 (40,000 games, old defaults, pre-fix Baseline)
E45_deal_breaker_3p +15.14 +14.00 -1.14 ±0.34 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E24_one_db_two_jsn_baseline_2p +1.24 (raw +0.03) +0.13 -1.11 ±0.85 +0.04 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E36_open_big_only_3p -2.39 (raw -3.39) -3.46 -1.07 ±0.77 -0.37 ±0.64 round 2 (20,000 games, old defaults)
E45_wild_moves_3p +0.73 +1.78 +1.05 ±0.41 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E27_feature_es_vs_gangup_4p +14.54 +15.57 +1.03 ±0.83 not isolated round 1 (20,000 games, old defaults, pre-fix Baseline)
E24_no_db_baseline_2p +1.22 (raw +0.01) +0.20 -1.02 ±0.85 +0.20 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E30_hold_all_2p -43.74 (raw -44.95) -44.76 -1.02 ±0.37 -0.13 ±0.31 round 1 (20,000 games, old defaults, pre-fix Baseline)
E40_hold_wilds_until_steals_gone_3p -2.03 (raw -3.03) -3.03 -1.00 ±0.78 not isolated round 2 (20,000 games, old defaults)
E04_hoarder_4p +21.75 +22.73 +0.98 ±0.64 +0.34 ±0.58 E04 (40,000 games, old defaults, pre-fix Baseline)
E12_wild_rentflip_4p +3.23 +2.25 -0.98 ±0.76 -0.67 ±0.62 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E03_pass_go_2p +18.38 +19.35 +0.97 ±0.67 +0.56 ±0.64 E03 (40,000 games, old defaults, pre-fix Baseline)
E46_evolved_bait_3p -0.10 -1.05 -0.95 ±0.68 not isolated round 3 E46 (200,000 games, 2024 defaults)
E45_just_say_no_2p +10.69 +11.63 +0.94 ±0.43 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E14_low_profile_3t_cap2_2p -9.49 (raw -10.70) -10.42 -0.93 ±0.83 -1.75 ±0.68 ⚑ round 1 (20,000 games, old defaults, pre-fix Baseline)
E10_delay_always_4p -8.77 -9.69 -0.92 ±0.62 +0.20 ±0.49 round 1 (20,000 games, old defaults, pre-fix Baseline)
E46_evolved_no_bait_3p +0.07 -0.84 -0.91 ±0.68 not isolated round 3 E46 (200,000 games, 2024 defaults)
E03_deal_breaker_2p +15.15 +14.25 -0.90 ±0.68 -0.06 ±0.67 E03 (40,000 games, old defaults, pre-fix Baseline)
E19_pass_when_weak_2p -5.59 (raw -6.80) -6.46 -0.87 ±0.85 -0.54 ±0.69 round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_double_rent_2p +1.82 +0.95 -0.87 ±0.44 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E03_double_rent_2p +1.84 +0.98 -0.86 ±0.69 -0.09 ±0.69 E03 (40,000 games, old defaults, pre-fix Baseline)
E23_speed_deal_baseline_4p +0.57 -0.28 -0.85 ±0.73 -0.01 ±0.59 round 1 (20,000 games, old defaults, pre-fix Baseline)
E44_evolved_attack_third_5p -11.69 -10.84 +0.85 ±0.33 +0.89 ±0.39 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E03_just_say_no_2p +8.68 +7.84 -0.84 ±0.69 +0.07 ±0.68 E03 (40,000 games, old defaults, pre-fix Baseline)
E34_passgo_only_turn_3p -0.90 (raw -1.90) -1.74 -0.84 ±0.79 -0.15 ±0.65 round 2 (20,000 games, old defaults)
E40_lay_cheap_first_3p +0.10 (raw -0.90) -0.73 -0.83 ±0.80 not isolated round 2 (20,000 games, old defaults)
E03_house_hotel_2p +1.66 +0.88 -0.78 ±0.69 -0.04 ±0.69 E03 (40,000 games, old defaults, pre-fix Baseline)
E44_attack_third_5p -5.00 -4.23 +0.77 ±0.42 +0.73 ±0.50 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E15_charge_now_5p -1.56 -2.31 -0.75 ±0.53 -0.75 ±0.53 ⚑ E48 (round 3, 40,000 games, 2024 defaults)
E03_forced_deal_2p +2.88 +2.14 -0.74 ±0.69 +0.03 ±0.69 E03 (40,000 games, old defaults, pre-fix Baseline)
E10_delay_always_3p -12.95 -13.69 -0.74 ±0.68 +0.29 ±0.55 round 1 (20,000 games, old defaults, pre-fix Baseline)
E49_bank_floor_5_2p -1.42 -2.16 -0.74 ±0.31 not isolated round 3 E49 (200,000 games, 2024 defaults)
E03_wild_moves_4p +0.00 +0.73 +0.73 ±0.61 +0.71 ±0.60 ⚑ E03b (40,000 games, old defaults, fixed Baseline)
E11_wild_dodge_5p -0.39 -1.12 -0.73 ±0.55 -0.73 ±0.55 ⚑ E48 (round 3, 40,000 games, 2024 defaults)
E14_pass_first_2_4p -4.36 -3.63 +0.73 ±0.69 -0.28 ±0.57 round 1 (20,000 games, old defaults, pre-fix Baseline)
E45_sly_deal_3p +8.00 +7.27 -0.73 ±0.38 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E12_wild_rentflip_5p +2.81 +2.12 -0.69 ±0.58 -0.69 ±0.58 ⚑ E48 (round 3, 40,000 games, 2024 defaults)
E46_db_first_no_bait_vs_evolved_3p -15.94 -16.62 -0.68 ±0.55 not isolated round 3 E46 (200,000 games, 2024 defaults)
E06_theta_vs_folk_4p +38.61 +39.28 +0.67 ±0.43 -0.28 ±0.43 E06b/d (100,000 games, old defaults)
E44_attack_third_2p -3.86 -3.20 +0.66 ±0.58 +0.74 ±0.69 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E44_attack_third_4p -4.73 -4.07 +0.66 ±0.47 +0.66 ±0.56 ⚑ round 3 E44 (100,000 games, 2024 defaults)
E49_sets3_bank10_random_2p -46.37 -47.01 -0.64 ±0.25 not isolated round 3 E49 (40,000 games, 2024 defaults)
E03_rent_4p +17.66 +18.29 +0.63 ±0.50 +0.33 ±0.35 E03 (40,000 games, old defaults, pre-fix Baseline)
E45_rent_3p +13.30 +12.70 -0.60 ±0.35 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E45_house_hotel_2p +0.17 -0.40 -0.57 ±0.44 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E15_charge_rich_8_5p -1.47 -0.90 +0.57 ±0.55 +0.57 ±0.55 ⚑ E48 (round 3, 40,000 games, 2024 defaults)
E01_folk_seats_2p +56.75 +57.28 +0.54 ±0.44 +0.48 ±0.43 ⚑ E01 (100,000 games, old defaults, old seeding)
E45_rent_4p +15.13 +14.62 -0.52 ±0.26 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E45_forced_deal_2p +5.14 +4.63 -0.51 ±0.44 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E45_wild_moves_4p +0.45 +0.94 +0.49 ±0.38 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E01_folk_seats_4p +25.83 +25.34 -0.49 ±0.41 -0.11 ±0.38 E01 (100,000 games, old defaults, old seeding)
E45_deal_breaker_4p +11.40 +10.92 -0.48 ±0.30 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E45_just_say_no_3p +7.59 +8.06 +0.47 ±0.38 not isolated E45 (round 3, 100,000 games, 2024 defaults)
E45_sly_deal_4p +5.93 +5.50 -0.43 ±0.35 not isolated E45 (round 3, 100,000 games, 2024 defaults)

Isolating the null-cycle wild rule (482 cells re-run on both engines: same plan, same seeds, same 2024 rules, same sizes)

The engine gained the rule (commit f2fc861) part-way through this round, so the cells already finished became a matched control. 63 of 482 cells move by more than the combined 95 % CI of the two runs — about 13 %, against the 5 % expected by chance alone.

Cell Before the wild rule After Change ±95 %
E44_evolved_attack_third_2p -9.14 -6.29 +2.85 ±0.69
E24_no_db_aggro_2p +7.57 +5.65 -1.92 ±0.69
E44_evolved_attack_third_3p -11.59 -9.67 +1.92 ±0.58
E14_pass_first_2_2p -13.94 -15.72 -1.78 ±0.67
E14_low_profile_3t_cap2_2p -8.67 -10.42 -1.75 ±0.68
E12_wild_rentflip_2p +1.47 -0.13 -1.60 ±0.69
E11_wild_dodge_2p -2.57 -4.15 -1.58 ±0.69
E15_charge_now_2p -0.56 -2.12 -1.56 ±0.69
E35_bank_floor_10_2p -10.09 -11.55 -1.46 ±0.68
E03_wild_moves_2p -0.01 +1.44 +1.45 ±0.69
E03_rent_2p +11.70 +13.14 +1.44 ±0.67
E04_aggro_2p +52.23 +50.80 -1.42 ±0.69
E44_evolved_attack_third_4p -11.46 -10.18 +1.28 ±0.49
E24_no_db_aggro_3p +2.92 +1.65 -1.27 ±0.67
E23_sets4_feature_es_5p +19.36 +18.10 -1.26 ±0.68
E15_rent_chicken_2p -2.00 -3.24 -1.24 ±0.69
E36_open_big_only_2p -8.13 -9.35 -1.22 ±0.68
E12_wild_rentflip_3p +2.12 +0.93 -1.19 ±0.67
E13_bank_floor_8_2p -6.59 -7.75 -1.16 ±0.69
E11_wild_dodge_3p -2.12 -3.23 -1.11 ±0.64
E24_no_db_aggro_4p -2.12 -3.20 -1.08 ±0.57
E04_aggro_3p +32.77 +31.70 -1.07 ±0.65
E24_no_db_feature_es_5p +15.33 +14.27 -1.06 ±0.67
E24_no_db_aggro_5p -2.24 -3.24 -1.00 ±0.52
E03_wild_moves_3p +0.86 +1.86 +0.99 ±0.65
E14_low_profile_2t_cap2_2p -4.37 -5.30 -0.93 ±0.69
E15_charge_now_3p -0.75 -1.68 -0.93 ±0.65
E20_rule_wildcost_wild_dodge_2p -6.99 -7.92 -0.93 ±0.69
E23_sets4_feature_es_2p +13.50 +14.43 +0.93 ±0.67
E23_sets4_feature_es_3p +18.95 +19.88 +0.93 ±0.69
E30_hold_wilds_2p -2.07 -2.98 -0.91 ±0.69
E44_evolved_attack_third_5p -11.73 -10.84 +0.89 ±0.39
E44_attack_third_3p -4.75 -3.87 +0.88 ±0.63
E36_open_small_under_five_2p -3.51 -4.37 -0.86 ±0.69
E03_wild_moves_5p -0.15 +0.69 +0.84 ±0.55
E13_never_bank_money_2p -7.88 -8.72 -0.84 ±0.68
E14_pass_first_1_2p -5.85 -6.66 -0.81 ±0.69
E11_wild_dodge_4p -0.62 -1.41 -0.79 ±0.59
E03_rent_3p +15.92 +16.70 +0.78 ±0.52
E24_no_db_random_2p -44.90 -45.66 -0.76 ±0.30
… and 23 more

E08 — decision tables (20,000 games per policy and count; the observed policy rotates its seat among folk players; 'la' = evolved weights + two-step win search)

Evolved (+lookahead) among folk: share of attacks answered with a Just Say No when holding one

Attack 2p behind / level / leading 3p 4p 5p
Deal Breaker 100% (n=416) / 100% (n=756) / 100% (n=1497) 100% (n=356) / 100% (n=787) / 100% (n=1232) 100% (n=291) / 100% (n=729) / 100% (n=887) 100% (n=268) / 100% (n=651) / 100% (n=695)
Rent ≥ $8 99% (n=444) / 100% (n=269) / 100% (n=181) 96% (n=576) / 100% (n=232) / 100% (n=105) 93% (n=681) / 98% (n=218) / 98% (n=90) 88% (n=690) / 98% (n=229) / 100% (n=77)
Debt Collector ($5) 100% (n=468) / 89% (n=2109) / 55% (n=930) 99% (n=754) / 94% (n=1787) / 52% (n=475) 98% (n=743) / 95% (n=1503) / 98% (n=334) 96% (n=677) / 98% (n=1304) / 98% (n=318)
Rent $5–7 100% (n=413) / 75% (n=269) / 29% (n=158) 98% (n=526) / 87% (n=253) / 74% (n=97) 95% (n=565) / 82% (n=261) / 53% (n=88) 91% (n=642) / 83% (n=212) / 62% (n=63)
Sly Deal 84% (n=506) / 74% (n=1038) / 24% (n=878) 39% (n=794) / 24% (n=812) / 15% (n=384) 32% (n=726) / 23% (n=577) / 13% (n=199) 28% (n=746) / 25% (n=456) / 10% (n=130)
Rent $3–4 45% (n=713) / 34% (n=2544) / 6% (n=2067) 31% (n=1079) / 22% (n=1945) / 6% (n=762) 30% (n=1455) / 18% (n=1674) / 3% (n=492) 26% (n=1774) / 14% (n=1532) / 4% (n=374)
Forced Deal 32% (n=359) / 25% (n=662) / 6% (n=606) 30% (n=667) / 17% (n=606) / 4% (n=303) 27% (n=665) / 15% (n=414) / 5% (n=170) 22% (n=628) / 14% (n=385) / 6% (n=88)
Rent ≤ $2 — / — / — 4% (n=2503) / 4% (n=2547) / 0% (n=1115) 2% (n=5116) / 2% (n=4399) / 0% (n=1356) 2% (n=6667) / 1% (n=4709) / 0% (n=1260)
It's My Birthday 0% (n=444) / 0% (n=1656) / 0% (n=685) 0% (n=1269) / 0% (n=2716) / 0% (n=576) 0% (n=2005) / 0% (n=3329) / 0% (n=454) 0% (n=2797) / 0% (n=3694) / 0% (n=471)

Folk Baseline among folk: share of attacks answered with a Just Say No when holding one

Attack 2p behind / level / leading 3p 4p 5p
Deal Breaker 100% (n=610) / 100% (n=1029) / 100% (n=1540) 100% (n=497) / 100% (n=892) / 100% (n=1227) 100% (n=375) / 100% (n=789) / 100% (n=968) 100% (n=345) / 100% (n=726) / 100% (n=844)
Rent ≥ $8 72% (n=576) / 15% (n=441) / 11% (n=231) 65% (n=740) / 10% (n=353) / 11% (n=146) 58% (n=879) / 7% (n=377) / 5% (n=111) 54% (n=905) / 9% (n=322) / 5% (n=95)
Debt Collector ($5) 72% (n=610) / 71% (n=2108) / 10% (n=1080) 69% (n=637) / 65% (n=1706) / 9% (n=623) 64% (n=571) / 64% (n=1464) / 9% (n=423) 65% (n=539) / 63% (n=1271) / 8% (n=379)
Rent $5–7 74% (n=531) / 8% (n=399) / 11% (n=247) 64% (n=654) / 9% (n=423) / 7% (n=147) 59% (n=730) / 9% (n=410) / 11% (n=121) 53% (n=862) / 7% (n=330) / 7% (n=89)
Sly Deal 19% (n=571) / 16% (n=1135) / 3% (n=1099) 20% (n=919) / 13% (n=1000) / 2% (n=492) 20% (n=815) / 12% (n=698) / 1% (n=259) 21% (n=835) / 12% (n=552) / 2% (n=165)
Rent $3–4 37% (n=1112) / 26% (n=2878) / 5% (n=2730) 24% (n=1488) / 16% (n=2070) / 3% (n=975) 22% (n=1747) / 12% (n=1835) / 3% (n=644) 20% (n=2094) / 9% (n=1668) / 2% (n=459)
Forced Deal 17% (n=431) / 14% (n=799) / 2% (n=763) 18% (n=715) / 11% (n=768) / 2% (n=364) 18% (n=767) / 9% (n=579) / 2% (n=220) 20% (n=682) / 10% (n=405) / 1% (n=129)
Rent ≤ $2 — / — / — 0% (n=3012) / 0% (n=2862) / 0% (n=1456) 0% (n=6151) / 0% (n=4745) / 0% (n=1727) 0% (n=7742) / 0% (n=4811) / 0% (n=1450)
It's My Birthday 0% (n=654) / 0% (n=1687) / 0% (n=883) 0% (n=1563) / 0% (n=2735) / 0% (n=818) 0% (n=2438) / 0% (n=3390) / 0% (n=689) 0% (n=3183) / 0% (n=3658) / 0% (n=649)

Evolved among evolved: share of attacks answered with a Just Say No when holding one

Attack 2p behind / level / leading 3p 4p 5p
Deal Breaker 100% (n=415) / 100% (n=909) / 100% (n=1134) 100% (n=310) / 100% (n=935) / 100% (n=753) 100% (n=263) / 100% (n=816) / 100% (n=672) 100% (n=237) / 100% (n=878) / 100% (n=546)
Rent ≥ $8 99% (n=580) / 99% (n=363) / 99% (n=218) 99% (n=561) / 100% (n=355) / 100% (n=136) 97% (n=693) / 98% (n=352) / 100% (n=122) 92% (n=673) / 97% (n=300) / 100% (n=80)
Debt Collector ($5) 98% (n=564) / 90% (n=2340) / 61% (n=782) 95% (n=419) / 95% (n=1887) / 54% (n=505) 93% (n=444) / 95% (n=1512) / 99% (n=428) 93% (n=615) / 97% (n=1256) / 99% (n=359)
Rent $5–7 100% (n=325) / 84% (n=294) / 37% (n=187) 99% (n=582) / 91% (n=330) / 80% (n=174) 96% (n=560) / 91% (n=336) / 80% (n=105) 92% (n=646) / 87% (n=262) / 84% (n=75)
Sly Deal 86% (n=788) / 78% (n=1442) / 23% (n=1154) 45% (n=994) / 38% (n=1124) / 19% (n=484) 43% (n=848) / 35% (n=863) / 20% (n=329) 43% (n=840) / 36% (n=823) / 14% (n=272)
Rent $3–4 46% (n=356) / 36% (n=892) / 5% (n=622) 49% (n=816) / 35% (n=956) / 6% (n=491) 45% (n=1161) / 29% (n=1272) / 5% (n=379) 42% (n=1514) / 24% (n=1155) / 4% (n=304)
Forced Deal 33% (n=677) / 27% (n=985) / 6% (n=836) 32% (n=892) / 21% (n=750) / 5% (n=391) 32% (n=762) / 21% (n=572) / 5% (n=242) 31% (n=701) / 21% (n=524) / 8% (n=190)
Rent ≤ $2 4% (n=917) / 4% (n=2489) / 0% (n=1942) 4% (n=3140) / 3% (n=3670) / 0% (n=1674) 3% (n=4463) / 3% (n=4562) / 0% (n=1466) 3% (n=6407) / 2% (n=5306) / 0% (n=1398)
It's My Birthday 0% (n=480) / 0% (n=1529) / 0% (n=722) 0% (n=1623) / 0% (n=2445) / 0% (n=812) 0% (n=2192) / 0% (n=3910) / 0% (n=676) 0% (n=3101) / 0% (n=5135) / 0% (n=697)

Deal Breaker timing: share of decisions where a Deal Breaker was available and was fired, by own full sets and standing

Policy Sets 2p behind / level / leading 3p 4p 5p
Evolved 0 48% (n=6759) / — / — 22% (n=13510) / — / — 21% (n=15333) / — / — 17% (n=16197) / — / —
Evolved 1 80% (n=787) / 86% (n=3450) / — 75% (n=1114) / 81% (n=3277) / — 78% (n=1326) / 80% (n=2790) / — 76% (n=1391) / 80% (n=2394) / —
Evolved 2 100% (n=1) / 96% (n=513) / 96% (n=1573) 33% (n=3) / 96% (n=599) / 94% (n=1005) 100% (n=2) / 97% (n=634) / 93% (n=682) 100% (n=4) / 98% (n=648) / 91% (n=532)
Folk 0 76% (n=5567) / — / — 77% (n=6127) / — / — 78% (n=6346) / — / — 76% (n=6349) / — / —
Folk 1 80% (n=785) / 77% (n=2732) / — 83% (n=802) / 81% (n=1910) / — 78% (n=860) / 82% (n=1363) / — 70% (n=1000) / 81% (n=942) / —
Folk 2 — / 97% (n=552) / 98% (n=1510) 100% (n=2) / 96% (n=479) / 98% (n=751) 100% (n=1) / 98% (n=489) / 99% (n=372) 100% (n=3) / 99% (n=436) / 96% (n=247)

First-round play mix (share of the observed policy's plays in the first round) and banking by card type

E05 / E16 — folk and evolved play vs the paired-rollout solver (round-4 labels, 2024 defaults)

Players States Folk = solver Folk loss (pp) Folk loss ≥ 5 pp Evolved = solver Evolved loss (pp) Evolved disagrees > 2 pp Evolved disagreement behind / leading / level Commonest folk → solver swaps
2 2317 28% 3.5 26% 39% 3.4 61% 56% / 53% / 66% lay property → lay property (326); lay property → bank (297); Pass Go → lay property (122); Pass Go → bank (110)
3 2235 25% 5.2 37% 35% 5.0 65% 62% / 56% / 69% lay property → bank (271); lay property → lay property (225); Pass Go → lay property (128); Pass Go → bank (109)
4 2240 25% 5.2 34% 36% 5.0 64% 59% / 47% / 70% lay property → bank (258); lay property → lay property (212); Pass Go → lay property (130); Pass Go → bank (122)
5 2181 22% 6.0 37% 34% 5.8 66% 61% / 52% / 75% lay property → bank (264); lay property → lay property (212); Pass Go → bank (126); Pass Go → lay property (126)

Full tables: experiments/results/round4/e05_regret_{n}p.md.

2026-09-19 — engine defaults changed to the 2024 rulebook (commit d7fa86d). Every result numbered E44 or higher, plus E07c and E19b, was run with RuleOptions.jsn_costs_play=True, jsn_needs_play_left=True (a Just Say No answered on your own turn costs one of your three plays, and with all three used you cannot answer) and orphan_building="discard". Everything before that (E01–E43, E03b, E01b, E19) used the old defaults. E07c below measured the switch: no number moves by more than 0.14 pp (the strict rule bites in 2–9 % of games, and only matters when the attacker would have countered), so the earlier tables stand. Round-3 raw cells: experiments/results/round3/*.json; plans in round3/plans/; report generator experiments/round3_report.py.

E01 — seat position and game length (folk Baseline vs itself, 100,000 games per player count, fixed seats)

Players Win rate by seat (1st … last) Fair Mean turns Median turns JSN played/game
2 56.7% 43.3% 50.0% 16.63 17
3 36.3% 32.3% 31.5% 33.3% 19.98
4 25.8% 25.5% 24.2% 24.5% 25.0%
5 20.2% 20.8% 19.6% 19.2% 20.2%

Standard error per seat ≈ 0.13–0.16 percentage points, so differences above ~0.5 pp are real. Findings: (1) the first player's edge is large in 2-player (+6.7 pp), moderate in 3-player (+3 pp), small in 4-player (+0.8 pp) and gone in 5-player, where the second seat does best and the fourth seat worst. (2) A "turn" here is one player's turn; a 4-player game lasts ~5.6 rounds, a 2-player game ~8.3 rounds each. (3) Just Say No is played about once per game regardless of player count (it is 3 cards in 106). Caveat: this is Baseline-vs-Baseline; the seat effect must be re-measured with the optimised policy.

E03 — what each card is worth to the folk Baseline (40,000 games per cell, rotating seat)

One seat plays a Baseline that is forbidden from using the card as an action (it can still bank it); the other seats are normal Baselines. "Drop" = fair share minus the handicapped player's win rate, in percentage points (SE ≈ 0.22 pp at 4p, 0.25 pp at 2p).

Card class 4-player drop 2-player drop Ratio 2p/4p
Rent cards 17.7 11.0 0.6
Pass Go 12.4 18.4 1.5
Deal Breaker 8.9 15.2 1.7
It's My Birthday 6.5 0.7 0.1
Sly Deal 5.3 9.2 1.7
Debt Collector 3.8 8.8 2.3
Just Say No 3.7 8.7 2.4
Forced Deal 1.7 2.9 1.7
House / Hotel 0.7 1.7 2.5
Double the Rent 0.2 1.8 nan
Moving wild cards -0.0 0.7 nan

Findings: (1) Rent and Pass Go dominate at every player count. (2) Cards whose effect scales with the number of opponents (rent, Birthday) matter far more in 4-player; single-target cards (Deal Breaker, Sly Deal, Debt Collector, Just Say No) matter far more head-to-head. Birthday is worth 6.5 pp at 4p and 0.7 pp at 2p. (3) To the folk policy, Double the Rent, buildings and wild-card moves are nearly worthless; this is a statement about the folk policy, not the cards — the optimised policy may use them better.

E04 — "play everything now" vs the folk Baseline (40,000 games per cell, rotating seat)

Variant 2-player win rate 4-player win rate
Aggro (fire every attack immediately, never hold, never end early) 56.8% (fair 50) 21.1% (fair 25)
Hoarder (attack only for ≥$5 or a winning/denying Deal Breaker; JSN only vs Deal Breaker) 47.2% 21.8%

Finding: maximal aggression is a +6.8 pp edge head-to-head and a −3.9 pp handicap at a 4-player table. Hoarding loses at both counts. Consistent with E03: single-target cards dominate 2p, so spending them fast wins the tempo race; at 4p attacks are diluted across three opponents and early aggression paints a target.

E05 — where the folk Baseline loses equity (preliminary; 246 sampled 4-player mid-game decisions, 100 rollouts per play)

Each sampled decision point was solved by determinized rollouts (Baseline in every seat). The folk Baseline's own play was the solver's best play in 29% of states; mean equity gap 4.3 pp. Top recurring mistake types: (1) wrong Sly/Forced Deal target (card or victim), (2) Pass Go ahead of a stronger tempo play when behind, (3) developing a property when a rent or steal was available, (4) Deal Breaker on the wrong set. Per-state gaps at 100 samples carry a winner's-curse bias; E05b re-solves the top 40 with 500 samples (see below when complete).

E05b — confirmation of the top-40 gaps (500 rollouts per candidate play; SE ≈ 2.2 pp)

33/40 confirmed (> 2 SE). Mean confirmed gap 13.8 pp. Confirmed mistake families, with examples: 1. Forced Deal: what you give matters as much as what you take. Folk gives the DarkBlue/Green wild ($4) for a rainbow wild; giving the Railroad/Utility wild instead scores 79% vs 42% (+37 pp). 2. Sly Deal target choice. Steal the card that breaks the leader (Green from P0: 41%) rather than the wild that marginally helps you (11%). Several confirmed cases, +10 to +30 pp. 3. Deal Breaker with zero sets and behind: hold it. Ending the turn beat taking a set in two confirmed states (38% vs 16%, 38% vs 22%); taking one set from behind just paints the target while giving up the card's endgame value. 4. Deal Breaker: which set. Same opponent, different set: 92% vs 79%; 16% vs 5%. 5. Pass Go is not always the tempo play. Confirmed losses of 10–20 pp when a set-completing property, a rent on a rich opponent, or banking a $10 was available instead. 6. Bank the Hotel when you hold one set and $11: 81% vs 62% for developing a second colour. Full list: experiments/results/e05b_confirmed_4p.json.

E09 — Birthday in 2-player: play it or bank it? (30,000 games per cell, rotating seat, vs folk Baseline)

Anthony's argument: banking = +$2; playing = +$2 for me and −$2 (or more, since no change is given) for the opponent, a $4+ relative swing. Result: play whenever the opponent holds ≥ $2 → 54.0%; always bank → 49.3% (SE 0.3). Correction to E03: the folk Baseline's Birthday rule required ≥ $4 across opponents, which can never hold at 2p, so the 2p "Birthday" ablation cell (0.7 pp) measured nothing. Fix the Baseline threshold (scale per opponent) and re-run.

E06 — round-robin tournament (6,000 games per pairing, rotating seat; one policy seated among copies of another)

Win rate of the row policy vs a table of the folk Baseline, by player count (fair share in column 2). Last column: the 2p-evolved policy seated among 4p-evolved copies. Weights here are the LOCAL evolution runs (≈130–140 generations); cloud runs are in progress. Full 8×8 matrices per player count: experiments/results/e06_tournament.json.

Players Fair Evolved-4p Evolved-2p Solver-taught All-in Hoarder Evolved-2p vs Evolved-4p
2 50.0 64.3 66.5 58.1 56.2 46.0 52.1
3 33.3 47.9 46.3 37.5 32.9 29.5 32.2
4 25.0 37.8 34.6 30.7 20.5 21.9 21.6
5 20.0 31.7 26.7 24.9 15.9 16.3 17.0

Findings: (1) the evolved policy beats the folk Baseline by +14 pp at 2p, +14.6 at 3p, +12.8 at 4p, +11.7 at 5p, and beats every hand-written variant at every count. (2) Specialisation is real: the 2p-evolved weights beat the 4p-evolved weights head-to-head (52.1%) but lose to them at 3–5 players. (3) The solver-taught weights are weaker than evolution (+8 pp vs Baseline at 2p, +5.7 at 4p): 900 solved decisions are too few and the teacher's rollouts use the folk policy. (4) Random play wins 0.3% of 4-player games against the folk policy: skill dominates luck at this level.

E10 — the 2-player control bias, explained and fixed

All-Baseline 2p cells with a rotating seat (seat = seed % 2) scored 48.79% instead of 50%. Reproduced with the plain engine: first-player win rate was 55.99% on even seeds and 58.40% on odd seeds — Python's Mersenne Twister, seeded with consecutive small integers, produces a first shuffle that correlates with seed parity. Since seat parity was tied to seed parity, the "variant" seat inherited a −1.2 pp bias in every 2p cell (draws were zero). Fix (engine, 2026-09-18): the seed is hashed (BLAKE2b) before seeding the RNG. Consequence: seeds no longer replay to the same games as before this commit; all results above were produced with the old seeding. Verdicts in results/claims/VERDICTS.md already account for the bias by comparing against the 48.79% control at 2p.

E06b — cloud-evolved weights vs folk Baseline (Modal, 100,000 games, rotating seat, hashed seeds)

Players Fair Cloud-evolved (50 gens × 256k games) Local-evolved (E06, 6k games)
3 33.3 49.7% 47.9%
4 25.0 38.6% 37.8%

SE ≈ 0.15 pp. Ten times more games per candidate bought only +0.8 to +1.8 pp over the local run: the linear feature policy is close to its ceiling at roughly +13 to +16 pp over folk play. Raising the ceiling now needs a richer policy class (search-based agent, then a learned non-linear policy), not more evolution.

E06c — cloud-evolved vs local-evolved weights head-to-head (100,000 games each)

Table Cloud-evolved seated among local-4p copies Fair
4p (cloud-4p vs local-4p) 25.4% 25.0
3p (cloud-3p vs local-4p) 35.2% 33.3

Ten times the games per candidate produced weights that are statistically indistinguishable from the local run at 4 players (+0.4 pp, SE 0.14). Conclusion: the linear feature policy has converged; further gains require a richer policy class (search-based reference agent mdeal/ismcts.py; later a learned non-linear policy).

E06d — cloud-evolved weights vs folk Baseline, 2 and 5 players (100,000 games each)

Players Fair Cloud-evolved
2 50.0 65.4%
5 20.0 32.9%

E12 — the value of card counting (Modal, 100,000 games each, counting-tuned weights seated among the pre-counting cloud weights)

Counting features added 2026-09-18: unseen Just Say No / Deal Breaker counts, per-opponent hypergeometric odds of holding one (by hand size), and a behavioural flag ("let an attack through since last draw → probably no JSN"). Weights fine-tuned for 25 cloud generations from the converged cloud weights.

Players Fair Counting-tuned vs pre-counting Gain
2 50.0 50.2% +0.2 pp (noise)
3 33.3 34.2% +0.9 pp
4 25.0 25.8% +0.8 pp

SE ≈ 0.15 pp. Explicit counting, in the linear forms tested, is worth under one point against an opponent that already plays well; folklore rates it far higher. Caveat: the position solver counts exactly and the linear policy's "supply per colour" feature was already a form of counting; a search agent may extract more.

E13 — search-based agents vs the converged linear policy (Modal, 400 games each)

Agent 2p (fair 50) 4p (fair 25)
Determinized UCT (6 determinizations × 40 iterations, 16-turn horizon, set-lead partial credit) 14.0% 13.8%

Negative result, and diagnosable: ~10 noisy samples per candidate play → winner's-curse selection of lucky rollouts; and horizon scoring by set lead rewards early set completion, which the claim tests (E10) show is exactly what loses. Replaced by paired common-random-number rollouts to game end (mdeal/rollout_crn.py), reported below when run.

Control check after the seeding fix (Modal, 100,000 games): 3-player all-Baseline, rotating seat = 33.4% (fair 33.3).

The ~−1 pp offset the round-2 reviewer saw at 3p across near-inert variants is a property of that run's fixed seed range (all cells share seeds, so they agree with each other), not a residual engine bias.

E13b — paired common-random-number rollouts (top-8 plays, 12 determinizations × 4 rollouts, to game end) vs the converged linear policy

Table Rollout agent win rate Fair Δ 95% CI
4p (400 games) 31.8% 25.0 +6.8 pp ±4.6
2p (400 games) 46.3% 50.0 −3.8 pp ±4.9

Reading: at 4 players one step of policy improvement over the linear policy is worth about +7 pp, so the linear policy is NOT a fixed point there — the 4-player ceiling is higher and the gap is probably in table dynamics (whom to hit, when to hide). At 2 players the rollout step does not beat the linear policy (slightly worse, within CI): the 2-player linear policy is close to locally optimal under its own continuation. Larger runs (1,000 games; 3p and 5p) queued.

E15 — down to one card with a play left: dump it (draw 5) or hold it (draw 2)? (20,000 games per cell, rotating seat vs folk Baselines)

Rule 2p Δ vs fair 4p Δ vs fair
Always dump the last card +0.44 +0.96
Always hold it −0.54 −0.21
Dump unless it is a Just Say No +0.39 +0.86
Dump unless it is a Deal Breaker +0.44 +0.96
Dump unless it is a rent card +0.16 +0.85
Dump unless it is $4+ money +0.41 +0.97
Dump unless it is an attack card +0.42 +0.92
Dump unless it is a property +0.38 +0.88

SE ≈ 0.35 pp (2p), 0.31 pp (4p). The situation arises in only ~10% of games (0.10 per game), so the per-occurrence effect is large: dumping beats holding by ~1.0 pp (2p) and ~1.2 pp (4p) of overall win rate, i.e. roughly +10 pp of win probability in the games where it comes up. No exception improves on "always dump": three extra cards beat keeping any single card, including a Just Say No; the worst exception is hoarding a rent card at 2p. Book rule: with one card left and a play remaining, get rid of it. No exceptions.

E13c — paired rollout improvement, 1,000 games per table

Table Rollout agent Fair Δ 95% CI
3p 34.7% 33.3 +1.4 ±2.9 (n.s.)
4p 30.2% 25.0 +5.2 ±2.8
5p 26.7% 20.0 +6.7 ±2.7
2p (E13b, 400 games) 46.3% 50.0 −3.8 ±4.9 (n.s.)

The improvement step over the converged linear policy grows with the number of opponents: nothing head-to-head, marginal at 3, +5 at 4, +7 at 5. The unexploited strategy lives in multiplayer table dynamics.

E16 — where the rollout teacher disagrees with the evolved policy (2,625 labelled 4p states, top-8 plays scored by paired rollouts)

Teacher's best play differs from the linear policy's by > 2 pp in 67% of states; mean gap 5.4 pp (8.1 pp when they disagree; both inflated by winner's-curse over 9 candidates, so read as upper bounds). Disagreement by standing: level 73%, behind 62%, leading 55%. Most common swaps (linear → teacher): a different property to lay (185), a different card to bank (156), lay property → bank instead (140), Pass Go → lay/bank first (135 + 109), bank → end the turn holding the card (54), rent → lay property (52), Birthday → lay property (44). Reading: the remaining edge is in ordering and selection within a turn (which colour, which card to bank, when Pass Go goes) more than in card classes — exactly what a linear scorer over per-play features struggles to express.

E14 — what the evolved 4p policy actually learned: reset one weight to its folk default, measure vs the full evolved policy (60,000 games per cell, Modal)

Weight reset to folk value Win rate (fair 25.0) Cost of unlearning
prop_progress (4.0 → learned 2.3): stop chasing incremental set progress 21.4% −3.6 pp
kind_prop (base appetite for laying property) 24.3% −0.75
take_amount (appetite for charging rent/debt) 24.4% −0.65
keep_prop (hold property in hand less) 24.8% −0.25
take_from_table (prefer rents that force property payment) 24.9% −0.14
15 other "moved" weights (prop_wins, breaker_wins, keep_*, jsn_breaker, …) 25.2% each 0 (identical games: never decisive)

SE ≈ 0.18 pp; the +0.2 shared by the null resets is the seed-set offset. Reading: evolution's gain over folk play is one big idea and three small ones. Big: lay property less greedily — do not spend plays advancing a set just because you can; the folk policy over-develops and under-attacks. Small: charge rent more readily, prefer rents that strip property, hold fewer properties in hand. Everything else evolution "changed" never changes a decision.

E07 — do the unsettled rulings change anything? (12,000 games per cell; all-Baseline seat edge and game length; evolved policy vs Baseline)

Rule setting 2p seat-1 edge 2p evolved vs folk 4p seat-1 edge 4p evolved vs folk
Official defaults 57.4% 64.2% 25.7% 38.5%
Two doublers on one rent forbidden 57.3 64.2 25.8 38.4
JSN counts as one of the 3 plays 57.4 64.3 25.6 38.5
Win only on your own turn 57.1 64.1 25.5 38.6
Orphaned buildings discarded 57.4 64.3 25.8 38.7
Same-colour cards may be split 57.4 64.2 25.7 38.5
JSN cancels only the doubler 57.4 64.2 25.7 38.6
House rule: wild flip costs a play 57.4 63.3 25.7 37.4
House rule: hand limit 10 57.2 63.5 26.0 37.3
House rule: four plays per turn 56.7 71.0 27.5 42.3

Mean game length is unchanged (16.7 turns at 2p, 22.4 at 4p) under every unsettled ruling. Finding: the rulings the forums argue about most do not move any number we measure by more than noise, so the advice holds at every table that plays the printed rules. Only true house rules move things: charging a play for wild flips costs the evolved policy ~1 pp (it uses the flip), and a fourth play per turn widens the skill gap sharply (+7 pp at 2p, +4 at 4p): more decisions, more skill.

E17 — policy iteration: fit the linear weights to the rollout teacher's labels, then evaluate (Modal, 100,000 games)

Table Labelled states Credited teacher value: start → fitted Fitted vs original weights Fair
2p 2,923 0.528 → 0.529 49.1% 50.0
4p 2,625 0.265 → 0.268 23.2% 25.0

Reading: at 2p the fit finds nothing (fixed point confirmed a third way). At 4p the fit raises agreement with the teacher on the labelled states yet the fitted weights LOSE to the originals by 1.8 pp in play: the teacher's improvements are not expressible as a re-weighting of the per-play linear features without damaging other decisions. Together with E16 (disagreements are about in-turn ordering and selection), this locates the remaining 4–5p edge in non-linear, sequence-level decisions. Next rung: a non-linear policy (small network over the same features plus turn-context) trained by imitation of the rollout teacher on far more labelled states, evaluated the same way.

E18 — public bots: every open-source Monopoly Deal bot we could find, ported into our engine under the printed rules (4,000 games per cell, rotating seat; cheat bot 200 / 150)

Ports and fidelity notes: experiments/bots/PORTS.md; runner experiments/e18_public_bots.py; raw cells experiments/results/e18_public_bots.json. Four repos ship a bot: sr-jarvis/monopoly-deal (TypeScript, the only 2–5-player engine with a heuristic suite: a planner lane with an action-card lane, a "handicapped" live lane with difficulty levels, and a strategy-profile ladder used by its tournament runner), lucaspellegrinelli/monopoly-deal-ai (one RandomAI), shuckc/monodeal (its built-in Player: play the first generated action, JSN only vs Deal Breaker, banded-powerset payment) and johnsears/monopoly-deal (MCTSAgent, which by its author's own word cheats: it searches the full state with every hand and the deck order visible). Each port was checked against the ORIGINAL bot running on its OWN engine with behavioural counters (plays per turn, card-kind mix, tactic mix, game length): 2p/3p agree within ~5 %, 4p games run 10–30 % longer on the originals for documented engine reasons (doubled complete-set rent, 108-card decks). Two findings about the sources themselves: (1) sr-jarvis's shipped bot deadlocks — its ladder returns a "discard" decision whenever the hand exceeds 7 cards even in the action phase, so a bot that ends a turn on 7 cards draws to 9 and never plays again (verified on its engine: 91 % of 2-player turns have zero plays); we report the faithful port and a one-line-fixed variant. (2) Its four strategy profiles differ only in a bank floor, and the profile lane never plays an attack card at all. All 12 policies pass a 100-game invariant check at 2p and 5p.

Table 1 — bot vs bot round-robin. Row policy seated (rotating seat) among copies of the column policy; entries are the row's mean win rate over the 7 other core policies (±1.5 pp per cell at 4,000 games); the cheat bot is one-way (seated among copies of 5 opponents, 150 games each, ±8 pp). Full ordered-pair matrices in the JSON.

Bot 2p (fair 50.0) 3p (33.3) 4p (25.0) 5p (20.0) 2p vs shuckc 2p vs folk Baseline
our folk Baseline 90.5 81.6 74.3 66.7 75.0 ·
shuckc/monodeal Player 75.2 61.7 54.5 45.7 · 27.3
sr-jarvis planner (quirk fixed) 57.3 47.5 43.4 39.8 24.3 12.2
sr-jarvis GRANDMASTER lane 54.8 45.1 41.2 37.8 20.3 9.3
lucaspellegrinelli RandomAI 51.4 34.5 23.2 15.8 29.4 9.7
our RandomLegal 36.7 23.9 14.6 9.1 13.8 4.1
sr-jarvis planner (faithful, deadlocks at 7 cards) 23.0 20.0 18.2 18.4 9.7 4.6
sr-jarvis tournament profile BALANCED (no attacks) 10.6 3.5 0.7 0.0 0.4 0.1
johnsears MCTS — CHEAT, perfect information (5 opponents) 71.5 48.3 36.8 31.2 68.0 34.0

Table 2 — each bot vs our evolved policy (FeaturePolicy, theta_cloud_{n}p_latest.json). "bot→" = the bot seated among evolved copies; "evolved→" = the evolved policy seated among copies of the bot. 4,000 games per cell (±0.2–1.5 pp); cheat bot 200 games (±2–5 pp).

Bot 2p bot→ / evolved→ (fair 50) 3p (fair 33.3) 4p (fair 25) 5p (fair 20)
our folk Baseline (reference) 35.1 / 66.0 19.0 / 48.2 13.9 / 39.1 9.5 / 33.8
shuckc/monodeal Player 13.2 / 87.0 6.0 / 76.0 4.5 / 66.8 3.8 / 53.2
sr-jarvis planner (quirk fixed) 5.9 / 93.6 2.5 / 84.3 1.8 / 70.8 1.2 / 58.1
sr-jarvis live MEDIUM (15 % injected mistakes) 5.0 / 94.9 2.0 / 85.8 1.4 / 73.3 1.1 / 59.6
sr-jarvis GRANDMASTER 4.8 / 95.2 2.4 / 87.0 1.6 / 75.8 1.0 / 65.4
lucaspellegrinelli RandomAI 4.9 / 94.8 1.0 / 90.4 0.4 / 91.9 0.3 / 93.6
sr-jarvis planner (faithful, deadlocks) 2.4 / 97.6 0.8 / 93.1 0.7 / 85.7 0.5 / 76.4
our RandomLegal 1.6 / 98.6 0.2 / 96.8 0.1 / 96.8 0.1 / 97.9
sr-jarvis profiles BALANCED / DEFENSIVE / HOARDER 0.0 / ≥99.9 0.0 / 100 0.0 / 99.9 0.0 / ≥97.6
johnsears MCTS — CHEAT (reads all hands + deck; 40 UCT iterations per play, 6/4/4 rollouts per JSN/payment/discard option, 60-turn horizon; 0.3–1.6 s wall per game on 8 workers ≈ 3–12 CPU-s) 19.0 / 81.0 12.0 / 74.0 3.5 / 79.0 1.5 / 81.0

Reading. (1) No public bot is a serious opponent: the strongest one under the printed rules is the least sophisticated — shuckc/monodeal's "play the first legal thing" Player — and it wins 13 % of 2-player games and 4 % of 4-player games against our evolved policy; the sr-jarvis "AI Bot Decision Engine", with its tactic planner, threat inference and combo lanes, wins 6 % and 2 % even after we repair its deadlock, and 0.0 % in the configuration its own tournament runner uses. Our un-tuned folk Baseline already beats every one of them at every table size (75–100 % of 2p games). (2) Against the ported bots the evolved policy's margin is largest where the game is most tactical: its edge over the sr-jarvis planner grows from 44 pp at 2p to 57 pp of a 20 % fair share at 5p. (3) The cheating MCTS — full knowledge of every hand and of the draw order — beats random and lucas but LOSES to the folk Baseline (34 % at 2p) and to the evolved policy (19 % at 2p, 1.5 % at 5p): at ~40 random rollouts per decision, perfect information is worth less than a decent static evaluation, and its value collapses with more players because the "every opponent minimises me" backup and uniformly random rollouts are wrong models of a 5-seat table. Its 71.5 % average in Table 1 comes from feasting on the weak bots. (4) Method note: the per-cell CIs are ≤ ±1.5 pp except the cheat rows; every ordered pair is in the JSON, so the reader can check transitivity (e.g. shuckc beats sr-jarvis 75.7 %, sr-jarvis beats lucas 59.8 %, lucas beats shuckc 29.4 %).

Engine default change (2026-09-19, after E18 finished at 11:34): win_on_others_turn now defaults to False

The 2008 printed sheet says a player declares the win on their own turn. Earlier runs used True (a common table practice); E07 measured no difference beyond noise in seat edge, skill gap or game length. All runs from this date use the printed rule.

Provenance note — which folk Baseline ran which cells

Claim round 1 (E10–E33, run 2026-09-18 09:54) used the Baseline WITHOUT the rent-flip step and with the old Birthday rule (never fires at 2p). Round 2 (E34–E43, run 2026-09-18 ~12:00), E15 and everything later used the fixed Baseline (rent-flip step 4b; Birthday when any opponent holds ≥$2). The E12 "free wild flips" gain (+3 pp) was measured as a variant against the flip-less round-1 Baseline, which is the correct comparison for that claim.

E03b — corrected card cells with the fixed folk Baseline (40,000 games per cell, rotating seat)

Card class 2p drop 4p drop
It's My Birthday 4.6 5.5
Moving wild cards 0.0 -0.0

Now that the folk Baseline plays Birthday at 2p, that cell measures something: Birthday is worth about the same head-to-head as at a full table (compare E03's void 2p cell of 0.7 pp). The wild-move cell stays null even with the flip step in the Baseline: its rent-flip rule fires too rarely to register; the +3 pp value of flips comes from the dedicated claim variant (E12 wild flip, VERDICTS), not from the folk policy's own behaviour.

E01b — seat position with the EVOLVED policy in every seat (100,000 games per count, fixed seats)

Players Seat 1 win rate Fair
2 57.0% 50.0%
3 39.9% 33.3%
4 31.0% 25.0%
5 25.6% 20.0%

(Seat 1 = the player who takes the first turn; win_rate is seat 1's share.) Compare E01 (folk vs folk).

E16b — confirmation relabel, 4p: top-60 folk-mistake states re-solved at 4× the rollouts (192 per candidate)

Mean gap 40.9 pp at first labelling → 36.2 pp on re-solve; 60/60 keep a gap ≥ 5 pp. The shrinkage is the winner's-curse correction; the survivors are the book's mistake catalogue. Top confirmed (gap on re-solve): play Red as Red → play Railroad as Railroad (94 pp); play Green as Green → play Brown as Brown (88 pp); bank $4 → play Wild:DarkBlue/Green as DarkBlue (87 pp); play Wild:Any as Brown → play Wild:Railroad/Utility as Utility (83 pp); Deal Breaker P3 set #0 → Deal Breaker P0 set #3 (82 pp)

E16b — confirmation relabel, 2p: top-60 folk-mistake states re-solved at 4× the rollouts (192 per candidate)

Mean gap 24.2 pp at first labelling → 18.4 pp on re-solve; 57/60 keep a gap ≥ 5 pp. The shrinkage is the winner's-curse correction; the survivors are the book's mistake catalogue. Top confirmed (gap on re-solve): play Yellow as Yellow → play Pink as Pink (51 pp); bank $4 → play Brown as Brown (51 pp); play DarkBlue as DarkBlue → end turn (47 pp); play Pink as Pink → play Brown as Brown (46 pp); play Orange as Orange → play Wild:Any as DarkBlue (43 pp)

E19 — the two-step win: an in-turn lookahead added to the evolved policy (Modal, 100,000 games per count, rotating seat)

With two full sets down, the linear policy scores one play at a time and misses combinations that complete a third colour within the turn (lay + steal, steal + lay, lay + lay; E16b's largest "mistakes" were all of this shape). A search that fires only when a win is within the turn's remaining plays, otherwise leaving every decision to the linear scorer:

Players Lookahead policy vs the same weights without it Fair Gain
2 51.5% 50.0 +1.5 pp
3 35.6% 33.3 +2.3 pp
4 27.1% 25.0 +2.1 pp
5 21.5% 20.0 +1.5 pp

SE ≈ 0.15 pp. One deterministic rule recovers about 40% of the 4-player rollout gap (E13c +5.2) and a fifth of the 5-player gap. It costs nothing to teach: "with two sets down, before any other play, look for two cards that finish a third colour this turn." The book's recommended strategy is the evolved policy plus this rule.

E07c — the 2024 defaults vs the old defaults (Modal, 100,000 games per cell, identical seeds)

"la" = the cloud-evolved weights for the table size plus the E19 in-turn win search (the book's recommended policy). Seat cells are fixed-seat (seat 1 = first to move); the la-vs-folk cells rotate the seat. "Denials" = a turn player who held a Just Say No and wanted to answer one, but had no play left (the strict 2024 reading).

Cell Old defaults 2024 defaults Δ (pp) JSN denials per game (2024)
la vs folk, 2p (fair 50) 66.74% 66.80% +0.06 0.024
la vs folk, 3p (fair 33.3) 51.66% 51.80% +0.14 0.031
la vs folk, 4p (fair 25) 41.36% 41.42% +0.06 0.037
la vs folk, 5p (fair 20) 34.62% 34.62% 0.00 0.045
all-folk seat-1 edge, 2p 56.80% 56.80% 0.00 0.020
all-folk seat-1 edge, 4p 25.45% 25.45% 0.00 0.030
all-evolved (la) seat-1 edge, 2p 56.65% 56.65% 0.00 0.030
all-evolved (la) seat-1 edge, 3p 39.70% 39.73% +0.03 0.050
all-evolved (la) seat-1 edge, 4p 30.70% 30.70% 0.00 0.067
all-evolved (la) seat-1 edge, 5p 25.39% 25.39% 0.00 0.089

SE ≈ 0.15 pp. Finding: nothing moves outside ±0.5 pp; the largest shift is +0.14 pp. The strict rule refuses a counter-JSN in 2 % of folk 2-player games and 9 % of evolved 5-player games, but a refused counter only changes the game when the attacker would in fact have countered, and the games it changes re-roll to the same win rate. Mean game length is unchanged (16.45 → 16.47 turns at 2p, 22.46 → 22.49 at 4p). Note the new headline for the book's recommended policy against folk play: 66.8 / 51.8 / 41.4 / 34.6 % at 2–5 players (+16.8 / +18.5 / +16.4 / +14.6 pp over fair), versus 65.4 / 49.7 / 38.6 / 32.9 % for the same weights without the lookahead (E06b/d).

E19b — the lookahead's own value, re-measured under the 2024 defaults (la vs the same weights without it, 100,000 games)

Players Old defaults (E19) 2024 defaults
2 +1.5 pp +1.50 ±0.31
3 +2.3 +2.36 ±0.30
4 +2.1 +2.06 ±0.28
5 +1.5 +1.48 ±0.26

E44 — the 2024 tactic: fire the attack you care about first, keep a play to answer a Just Say No (Modal, 100,000 games per cell, rotating seat)

Under the 2024 sheet a Just Say No played on your own turn — the only kind is the answer to an opponent's Just Say No against your action — costs a play, so an attack fired as the third play cannot be defended. Variants: attack_first_db (folk Baseline; holding a JSN with ≥ 2 plays left, if the planned turn contains a Deal Breaker, play it now), attack_first_any (same for any attack: rent, Debt Collector, Birthday, Sly/Forced Deal, Deal Breaker), attack_third (the mirror: play everything else first, attacks last), and the same two rules on the evolved policy among evolved opponents (evolved_attack_first, evolved_attack_third); evolved_table is the all-evolved reference. Win rate (Δ vs fair, ±95 %):

Variant 2p 3p 4p 5p
Folk: Deal Breaker first 50.22 (+0.22 ±0.31) 33.44 (+0.10) 25.10 (+0.10) 20.08 (+0.08)
Folk: any attack first 49.80 (−0.20) 33.03 (−0.30) 24.75 (−0.25) 19.86 (−0.14)
Folk: attacks last (mirror) 46.14 (−3.86) 29.09 (−4.24) 20.27 (−4.73) 15.00 (−5.00)
Evolved: any attack first 49.76 (−0.24) 33.33 (0.00) 24.97 (−0.03) 19.83 (−0.17)
Evolved: attacks last (mirror) 40.87 (−9.13) 21.99 (−11.34) 13.52 (−11.48) 8.31 (−11.69)
Evolved table (reference) 49.92 33.51 25.17 19.99

Conditional block rates for the variant seat's Deal Breakers (folk attack_first_db cells; the other folk cells agree within 1 pp): the target answers with a JSN 18–24 % of the time when the attacker holds a JSN and has a play left (case a), 20–24 % when the attacker holds a JSN but has no play left (b), 25–31 % when the attacker holds none (c). Success: (a) 98–99 %, (b) 76–80 %, (c) 70–75 %. So a JSN in hand is worth ~25 pp of Deal-Breaker success — but only with a play left to spend it; as the third play the card in hand buys ~5 pp.

The simplest numbers for the book (all-evolved table, evolved_table):

Players Deal Breakers per game (table) Fired as the 3rd play With a JSN in hand, fired 3rd Target JSNs it: (a) JSN + play left / (b) JSN, no play / (c) no JSN Succeeds: (a) / (b) / (c) Counter refused per game
2 0.95 9.3 % 8.2 % 17.7 / 15.4 / 23.9 % 99.1 / 84.6 / 76.1 % 0.030
3 1.26 17.9 % 17.5 % 17.4 / 16.8 / 23.4 % 99.3 / 83.2 / 76.6 % 0.050
4 1.55 19.6 % 20.0 % 16.0 / 15.6 / 21.3 % 99.4 / 84.4 / 78.7 % 0.067
5 1.82 23.3 % 23.8 % 16.1 / 15.4 / 21.1 % 99.5 / 84.6 / 78.9 % 0.089

Findings. (1) The rule is right and cheap: a Deal Breaker backed by a Just Say No AND a spare play succeeds 99 % of the time; the same card fired as the third play succeeds 84 % (evolved) or 77 % (folk), barely better than having no Just Say No at all. (2) But the folk and evolved policies already fire 80–92 % of their JSN-backed Deal Breakers early (Pass Go and a completing property are the only things Baseline plays ahead of one), so the explicit rule adds nothing measurable: +0.1 to +0.2 pp for "Deal Breaker first" (inside CI), and −0.1 to −0.3 pp for "any attack first", because pulling a rent ahead of a property lay lowers the rent. (3) The mirror is expensive: deliberately firing attacks last costs the folk player 3.9–5.0 pp and the evolved player 9–12 pp (that number also bundles in the worse non-attack plays the mirror is forced to make first, so read it as an upper bound; the clean cost is the (a)-vs-(b) gap above times the share of Deal Breakers it moves). (4) Table-wide, the evolved policy plays its Double the Rents 84–86 % of the time and banks a Deal Breaker in under 1 % of cases (claims #315 and #470, previously untestable with the folk policy).

E45 — what each card is worth to the EVOLVED policy (Modal, 100,000 games per cell, rotating seat; one forbidden evolved seat among evolved seats)

E03's ablation with the strong player in every seat: the forbidden seat plays the cloud-evolved weights for the count plus the lookahead, may not play one card class as an action (it can still bank the cards), and sits among unrestricted copies. Drop = fair share minus the handicapped seat's win rate (control cells, no handicap: −0.08 / +0.18 / +0.17 / −0.01 pp). ±95 % ≈ 0.2–0.3 pp.

Card class 2p drop 3p drop 4p drop 5p drop Folk 2p (E03/E03b) Folk 4p (E03/E03b)
Rent cards 8.4 13.3 15.1 14.5 11.0 17.7
Pass Go 22.0 16.9 13.8 11.7 18.4 12.4
Deal Breaker 20.2 15.1 11.4 8.8 15.2 8.9
It's My Birthday 2.6 4.4 6.0 6.5 4.6 5.5
Sly Deal 11.1 8.0 5.9 4.5 9.2 5.3
Just Say No 10.7 7.6 5.2 3.7 8.7 3.7
Debt Collector 6.2 5.7 4.5 3.6 8.8 3.8
Forced Deal 5.1 4.4 3.4 2.5 2.9 1.7
Double the Rent 1.8 1.4 1.2 0.8 1.8 0.2
Moving wild cards 0.6 0.7 0.5 0.3 0.0 0.0
House / Hotel 0.2 −0.4 −0.5 −0.5 1.7 0.7

Figure: fig-card-values-evolved. Compared with the folk values: the strong player gets MORE out of Pass Go (+3.6 pp at 2p, +1.4 at 4p), the Deal Breaker (+5.0 at 2p, +2.5 at 4p), Sly Deal, Just Say No, Forced Deal (about double at every count), Double the Rent at 4p (1.2 vs 0.2) and wild-card moves (0.5 vs 0.0) — the single-target and tempo cards, which it aims and times better. It gets LESS out of rent cards (8.4 vs 11.0 at 2p, 15.1 vs 17.7 at 4p; it has other ways to make money and rents less), Debt Collector and Birthday head-to-head, and nothing at all out of Houses and Hotels: forbidding it to build is a small GAIN at 3–5 players (it banks them for $3–4 instead), which says the evolved weights over-build, and that under the 2024 rule (orphaned buildings are discarded) a building on a set that can be broken is a liability. The ordering at 4–5 players is rent > Pass Go > Deal Breaker > Birthday > Sly > JSN > Debt > Forced > DtR > wilds > buildings.

E46 — Just Say No fishing, tested properly (Modal, 200,000 games per cell, rotating seat)

Claims #167/#277: before the Deal Breaker, play a Sly Deal at the same player to draw out their Just Say No. Round 1 could not score it: BaitBeforeBreaker stored (turn_no, logpos) and unpacked it as (t, logpos), so the JSN's target seat was compared with the turn number and bait_drew_jsn never fired. Fixed; and a matched control db_first_no_bait counts the identical trigger (about to Deal Breaker with ≥ 2 plays left, not a winning play, a Sly Deal at the same target in hand) and plays the Deal Breaker first, as Baseline does. Both actors (folk Baseline; the evolved policy with lookahead) against both tables (folk; evolved). Trigger = share of games with the situation; "won | trigger" = the actor's win rate in the games where it arose.

Actor → table n Bait cell win rate No-bait cell Δ bait−no bait Trigger Target held a JSN Bait drew it DB success: bait / no bait DB fired as 3rd play (bait) Won|trigger: bait / no bait
Folk → folk 2 50.06 50.11 −0.05 ±0.31 8.8 % 30 % 1.1 % 74.6 / 75.7 % 21 % 66.9 / 67.4 %
Folk → folk 3 32.93 33.24 −0.31 7.1 % 27 % 0.6 % 77.0 / 78.1 % 21 % 50.7 / 55.2 %
Folk → folk 4 24.75 25.12 −0.37 6.2 % 25 % 0.6 % 78.2 / 79.3 % 22 % 37.0 / 43.1 %
Folk → evolved 2 33.22 33.15 +0.07 10.3 % 28 % 8.3 % 81.3 / 78.3 % 21 % 56.2 / 55.5 %
Folk → evolved 3 16.99 17.39 −0.40 8.6 % 24 % 5.4 % 82.4 / 80.2 % 21 % 31.3 / 36.0 %
Folk → evolved 4 11.80 12.17 −0.37 7.3 % 22 % 4.4 % 83.7 / 81.8 % 21 % 21.3 / 26.5 %
Evolved → evolved 2 49.99 49.95 +0.04 4.6 % 24 % 8.4 % 83.9 / 79.3 % 24 % 73.9 / 72.9 %
Evolved → evolved 3 33.23 33.40 −0.17 4.5 % 24 % 7.0 % 83.1 / 79.7 % 38 % 52.4 / 56.0 %
Evolved → evolved 4 24.89 25.13 −0.24 4.2 % 21 % 5.6 % 85.1 / 82.4 % 42 % 37.3 / 43.0 %

95 % CI of each difference ≈ ±0.3 pp. Findings. (1) The bait rarely fishes: a folk target spends a Just Say No on the Sly Deal in 1 % of baits (it defends only sets with two or more cards), a strong target in 5–8 %. (2) Against a strong table the bait does raise the Deal Breaker's own success by 2–5 pp — the fished-out JSNs are real — but the play it costs is worth more: the Deal Breaker now goes as the third play a fifth (folk) to two-fifths (evolved) of the time, where the 2024 rule forbids answering a Just Say No, and the Sly Deal is spent on a target chosen for the bait rather than for the steal. (3) Net: −0.3 to −0.4 pp of whole-game win rate at 3–4 players in every pairing, 4–6 pp of win rate in the games where the situation arises; head-to-head the two orders are indistinguishable (±0.3). Verdict for

167/#277: refuted at 3–4 players, neutral at 2.

E47 — myforwik's bundle taken apart: 2⁴ factorial (Modal, 40,000 games per cell, 16 cells at 2p and at 3p)

Factors: D = dump_to_zero, J = jsn_anything, S = steal_two_card_first, H = hold_pairs (Pass Go first is Baseline's own step 2 and is constant). Yates contrasts in pp (mean of the 8 cells with the factor on minus the 8 with it off; ±95 % ≈ 0.24 pp). Figure: fig-bundle-factorial; cell table in experiments/results/round3/e47_factorial.json.

Term 2 players 3 players
D dump to zero +0.93 +1.16
J JSN anything +0.32 −0.43
S steal 2-card colours first +1.20 +0.03
H hold pairs +0.11 +0.06
S × H +0.80 +0.54
D × S +0.17 +0.17
D × H −0.16 −0.11
J × H −0.18 −0.20
D × J, J × S +0.12, +0.09 +0.08, 0.00
Control / full bundle (vs fair) +0.04 / +2.55 −0.22 / +0.57

Reading. At 2 players the bundle's +2.55 is three things: stealing the two-card colours (+1.2), emptying the hand (+0.9) and the guessed interaction — holding your own pairs is worthless alone (the H cell is −0.38) but adds +0.8 when combined with stealing theirs, because together they corner Brown/Dark Blue/Utility head-to-head. JSN-anything adds +0.3. The best cell is the full bundle. At 3 players the steal main effect vanishes (+0.03), the S×H interaction halves (+0.54), JSN-anything turns negative (−0.43), and the best cell is D+S+H without J (+1.18): what survives at three is "empty your hand" plus the pairs corner. The book's guess ("hold-your-pairs plus steal-their-pairs") is confirmed as an interaction of the stated size, but it is the second-largest carrier of the 2p gain, not the first.

E48 — five players (Modal, 40,000 games per cell at 5p; fair 20.0 %; 2024 defaults)

The cells the book quotes for "three to five players", now measured at five (±95 % ≈ 0.4 pp; all-Baseline control +0.16):

Exp Cell 5p Δ (pp) 4p Δ (round 1/2, old defaults)
E10 delay_always / delay_protected / delay_counting −6.13 / −0.11 / −0.95 −8.8 / — / —
E11 wild_dodge −0.39 (inside CI)
E12 wild_rentflip +2.81 +3.23
E13 bank_floor_3 / 5 / 8 −3.21 / −5.51 / −7.70 — / −6.28 / —
E14 pass_first_1 +2.41 −0.22
E15 charge_now / charge_rich_5 / charge_rich_8 / rent_chicken −1.56 / −0.99 / −1.47 / +2.20 −2.90 / — / — / —
E19 dump_to_zero +0.45 +1.06
E22 always_double +0.86 +0.95 (E49, 100k)
E31 never_bank_rent +0.76
E39 pay_fewest_cards +0.75 +1.17
E43 myforwik_bundle +0.37 +0.66
E18 jsn_anything / jsn_only_breaker −0.37 / −0.11 +0.04 / −0.13
E37 db_only_to_win / after_other_db / with_jsn_backup / prefer_empty_hand / wait_jsn_spent / bank_db_to_refill / bait_lay_for_db −2.74 / +0.05 / −1.15 / −2.06 / −1.35 / +0.14 / +0.14 −3.55 / —
E38 steal_for_rent +0.92 +1.11

Five-player descriptive statistics (all-Baseline, 40,000 games): 23.7 turns (4.7 rounds); 1.29 JSNs, 0.085 JSN wars and 0.037 refused counters per game; 1.79 Deal Breakers per game, 81 % succeed; 4.7 steals and 7.6 rents per game; 89 % of wins include a two-card set; comeback rate (won after being two sets behind) 6.7 %; the early-money leader wins 37 % (1.9× fair); a starting hand with two or more Deal Breakers/Just Say Nos wins 32.7 % (1.6× fair), a money-heavy start 12.7 %.

E48b — folk vs solver at five players (2,441 solver-labelled states, experiments/results/round3/e48_regret_5p.md; 200 puzzles in puzzles_5p.jsonl)

The folk Baseline's play is the solver's best play in 24 % of states (E05 at 4p: 29 %), mean loss 5.6 pp (8 % of folk plays fall outside the teacher's candidate list); the evolved linear policy agrees 34 %, mean loss 5.5 pp. By standing (folk agreement / loss): behind 26 % / 5.1, level 19 % / 6.2, leading 43 % / 5.9. With two full sets down folk agrees 50 %. Worst folk classes: Deal Breaker (17 % agreement, 9.5 pp lost), charges (17 %, 7.2), rent (25 %, 6.7). Most common swaps: lay property → bank (274), lay property → a different property (245), Pass Go → lay property (176), Pass Go → bank (118), charge → lay property (85). The solver's best play is "end the turn" in 179 states (7 %), which the folk policy never chooses.

What is different at five (ten points). (1) No seat edge for folk players (E01: 20.2 %), but the evolved player in seat 1 wins 25.4 % (+5.4 pp; E07c) — skill converts the first move at any count. (2) Passing the first turn is a GAIN at five (+2.4) after being free at four (−0.2) and a disaster at two (−6.2): with four opponents, a deeper hand beats tempo. (3) Patience with charges pays: rent-chicken +2.2, fire-everything −1.6. (4) The wild rent-flip is the largest single edge (+2.8), as at 3–4. (5) Bank floors cost more than anywhere: −3.2 / −5.5 / −7.7. (6) Delaying full sets costs less (−6.1 vs −14 at 2p, −10 at 4p) because games are long and Deal Breakers plentiful (1.8 per game). (7) Deal Breaker timing rules all lose: hold-for-the-win −2.7, prefer empty hands −2.1, wait for their JSN −1.4, need a JSN backup −1.2; fire it. (8) Just Say No discipline is flat (−0.4 / −0.1): with five hands there is always someone to spend it on. (9) The skill gap is smallest but the unexploited edge is largest: la beats folk by +14.6 pp (34.6 %), the lookahead adds +1.5, the rollout ceiling is +6.7 above that (E13c); 23 % of evolved Deal Breakers still go as the third play. (10) Folk play is worst at five: 24 % agreement with the solver and "bank instead of laying" is the most common correction (274 states) — money and hand depth matter more when four people can charge you.

E49 — audit of every INCONCLUSIVE / NOT TESTED verdict (Modal; cells experiments/results/round3/e49.json; constructed positions positions_*.jsonl)

Design per item is in VERDICTS.md Round 3. Cell results (rotating variant seat vs folk Baselines unless noted; 2024 defaults):

Item Design Result
Controls all-Baseline 2–5p, 40k +0.04 / −0.23 / +0.21 / +0.16; JSN wars 0.082 / 0.085 / 0.082 / 0.085 per game (old rule, E33: 0.092 / 0.096 / 0.097); refused counters 0.021 / 0.024 / 0.031 / 0.037
#32/#456/#163 exposure delay_always with per-seat steal counters stolen from per game 1.18 / 1.12 / 0.98 vs 1.21 / 1.21 / 1.09 for Baseline; Deal-Broken 0.15 vs 0.35 — the delayer is NOT more exposed to steals
#30/#257 all delay delay_always vs delay_always table 2p: DBs 0.23/game (vs 0.90), success 71 %, games 44 % longer; 3p 1.11 (1.25); 4p 2.18 (1.51), 55 % longer — per turn, DB use is unchanged at 3–4p
#238 rent-flip 2p 200k +1.38 ±0.22
#563 bank floor 5, 2p 200k −1.42 ±0.22
#57 pay near-exact, 3p 200k +0.58 ±0.21
#410 never gift, 4p 200k +0.33 ±0.19 (0.116 gifts avoided per game ≈ +2.8 pp per gift avoided)
#239 FD→DB combo vs opponents that never JSN 57.83 / 38.62 / 28.56 vs 57.90 / 38.70 / 28.63 for plain Baseline on the same table: 0.0; combo fires in 3.4 % of games, the DB follows through 35 % (the receiver places a gifted wild where it likes)
#567 gift-then-DB vs never-JSN opponents 57.78 / 38.60 / 28.63 vs 57.90 / 38.70 / 28.63: 0.0
#1/#218/#685/#716 JSN use 100k, 2–4p jsn_anything 50.43 / 33.09 / 24.69, jsn_only_breaker 49.58 / 32.73 / 24.66: spend it at 2p (+0.85 ±0.44 vs hoarding; +0.43 vs fair, outside CI); no difference at 3–4p, both below Baseline's threshold rule
#19 JSN on JSN, 4p 100k never countering −0.35 ±0.27
#225 wild-move house rule, length 40k, flip-capable Baseline +0.08 / +0.14 / +0.22 turns (≤ 1 %)
#496/#497 free flips vs DB/Sly all-dodge tables, flips free vs costing a play DBs per game 1.15 / 1.48 free vs 1.20 / 1.54 costing (−4 %), success 79.6 / 80.7 vs 79.2 / 80.4; steals 4.50 / 5.09 vs 4.47 / 5.11 (0 %)
#25/#26 JSN vs doubled rent 100k 4p, always_double +0.95 (whole rent cancelled) vs +1.14 (doubler only): +0.19 ±0.38, immaterial
#248/#432 bank-$10 rule, luck random probe random wins 3.6 % (2p) / 0.4 % (4p) under the rule vs 4.1 / 0.3 without: luck unchanged
#553/#44 target the leader 100k 4p, 5p −0.02 / −0.07 ±0.27: no effect (precise null)
#55 hold the $10 100k 2p, 4p hold 49.66 / 24.84 vs bank now 50.55 / 25.24: holding costs 0.9 (2p) / 0.4 pp
#132 two-card colours first, 2p 100k −0.18 ±0.31
#547/#112 bank buildings 100k build_only_safe; 28,000 constructed positions whole-cell −0.29 / +0.04; with a building in hand and nowhere to place it, banking it beats the policy's play by +0.5 (2p) / +1.4 pp (4p) per decision
#672 bank the last Pass Go 100k with matched control trigger 0.8 / 1.2 % of games; won|trigger 60.3 vs 56.8 % (2p), 32.0 vs 29.8 % (4p): +3.5 / +2.2 pp conditional (n ≈ 800–1,200, ±5), +0.03 pp overall
#669 bank any-colour rent < $3, 4p 100k −0.26 ±0.27
#706 pass unless attack, 4p 100k +0.02
#692 steal first on the winning turn 100k vs Baseline; vs JSN-the-win opponents with control; 6,000 constructed positions +0.31 ±0.27; +0.06 vs −0.25 (control) = +0.31 ±0.38; per decision +0.6 ±0.4 (2p), −1.0 ±0.6 (4p): no reliable edge
#683 take the wild 100k 3p/4p; 21,000 constructed positions whole-cell +0.09 / +0.08; per decision taking the wild is +4.5 / +3.3 pp better (arises 0.03/game)
#680 dump the Deal Breaker 3,100 constructed positions banking the DB is −16.5 / −15.6 pp per decision vs the policy's play (3p / 4p)
#55 $10 early (positions) 7,800 constructed positions, first two rounds bank-now vs the policy's other play: +0.1 (2p), −0.5 ±0.1 (4p): bank it soon, not necessarily first
#375/#285 the 2024 rule E07c, E44, controls wars fall 11–16 %, refused counters in 2–9 % of games; "big action last" costs 4–12 pp (E44)
#315 DtR for cash / #470 DBs banked evolved table (E44) DtR played 84–86 %, DB banked < 1 %

E50 — the Forced Deal card as printed: may you give a card out of your own complete set? (Modal; 20,000 games per cell in E50, 40,000 in E50b; identical seeds throughout)

The rule. The 2024 Hasbro card (G0351) reads: "Swap any one of your properties with any one of another player's. You may not TAKE a property that's part of a complete set." The restriction names the card taken, not the card given. A player may therefore offer a card out of one of their own complete sets, breaking it — and discarding any House or Hotel that was on it, under the 2024 orphan-building rule. The engine forbade both sides until 2026-09-20. RuleOptions.forced_deal_give_from_full now defaults to True; False reproduces the older, stricter reading. Every experiment before that date (E01–E49, and every Forced Deal cell in VERDICTS) ran under the strict reading.

E50, the first measurement (experiments/e50_forced_deal_give_from_full.py, results/round4/e50_forced_deal.json, 20,000 games a cell). The recommended policy against folk Baselines, same seeds under both readings: 68.52 % wide vs 66.57 % strict at two players, 43.30 % vs 41.30 % at four. About two points at both counts, which is larger than most tactical rules in the book. Forced Deals per game barely moved (0.920 vs 0.906), so the difference is in which swap is chosen, not how many.

Why that number cannot be read as a strategy. RuleOptions is global, so E50 handed the wider rule to both sides at once. Two points of win rate could be the strong player exploiting a new play, or the folk opponents throwing games away with it, and the cell cannot tell them apart.

E50b — the decomposition (experiments/e50b_decompose.py, results/round4/e50b_decompose.json, raw counters in ..._raw.json)

The engine always allows the play; a policy wrapper removes from a seat's legal-play list any Forced Deal whose offered card sits in one of that seat's own complete sets. Four cells at 2, 3, 4 and 5 players, 40,000 games each, seeds 0…39,999 throughout, recommended policy (cloud weights + the in-turn win search) in the rotating seat, folk Baselines elsewhere:

Players Fair none hero folk both hero − none folk − none both − none
2p 50.0 66.74 66.64 68.77 68.67 −0.10 ±0.03 +2.03 ±0.17 +1.93 ±0.17
3p 33.3 51.85 51.67 54.19 54.02 −0.18 ±0.05 +2.34 ±0.21 +2.17 ±0.22
4p 25.0 41.05 40.85 43.29 43.08 −0.20 ±0.05 +2.23 ±0.23 +2.03 ±0.24
5p 20.0 34.16 33.97 36.01 35.84 −0.18 ±0.05 +1.86 ±0.23 +1.68 ±0.23

Cell win rates carry ±0.46 / 0.49 / 0.48 / 0.47 unpaired; the three difference columns are paired on the per-seed win bitmaps, which is why they resolve to a twentieth of a point.

How to use this: read the last three columns. Giving the play to the strong player alone is worth nothing — a fifth of a point the wrong way. Giving it to the folk opponents alone is worth the whole two points. The two effects add, and "both" is a shade below their sum.

The decomposition, plainly: none of the two points is the strong player using the new play well. All of it, and slightly more, is opponents using it badly. Per folk give-from-a-complete-set, the strong player gains +15.5 pp at two players, +9.3 at three, +6.8 at four and +5.4 at five (the cell delta divided by the folk plays per game) — the most expensive per-occurrence habit priced anywhere in this project; the nearest comparison is E49's +3.2 pp per gifted completing card. (Single positional mistakes are larger — E05b finds 37 pp on one choice of what to hand over — but those are per-decision solver gaps, not whole-game rules.)

The counters, per cell (cell both unless stated)

Measure 2p 3p 4p 5p
Forced Deals per game, strict → wide 0.913 → 0.927 1.215 → 1.240 1.454 → 1.491 1.558 → 1.602
Mean turns, strict → wide 15.95 → 16.08 19.57 → 19.82 22.38 → 22.80 24.03 → 24.47
Recommended policy: gives from a complete set per game 0.0053 0.0043 0.0037 0.0022
…as a share of its own Forced Deals 0.9 % 0.9 % 0.9 % 0.6 %
Folk opponents: gives from a complete set per game 0.131 0.252 0.327 0.346
…as a share of their Forced Deals 37.6 % 34.0 % 30.8 % 28.0 %
Broken colour complete again later — recommended 90.1 % 96.5 % 92.5 % 95.4 %
…of which, before that same turn ended 89.2 % 96.5 % 91.8 % 95.4 %
Broken colour complete again later — folk 29.3 % 27.5 % 26.2 % 24.7 %
The play was part of a turn that won the game (recommended) 83.0 % 91.2 % 91.8 % 89.7 %
The player already had two complete sets down 90.6 % 89.5 % 94.6 % 93.1 %
Cancelled by a Just Say No 3.3 % 1.8 % 3.4 % 0.0 %
No Forced Deal from an incomplete set was legal at that decision 6.6 % 9.9 % 10.2 % 6.9 %
An opponent held a Deal Breaker at that moment 0.0 % 0.0 % 0.0 % 1.1 %
Deal Breakers dodged by the break (candidates / clean) 0 / 0 0 / 0 0 / 0 0 / 0

How to use this: the folk player gives from a complete set on a third of its Forced Deals and gets the set back a quarter of the time. The strong player does it on one Forced Deal in a hundred and gets the set back before the turn ends.

Counts behind the percentages: 212 / 171 / 147 / 87 recommended-policy plays in 40,000 games per count; 5,252 / 10,075 / 13,064 / 13,850 folk plays.

Why it pays, and why the Deal Breaker dodge is not the reason

The pre-registered hypothesis was that breaking your own complete set while taking a card you need is a Deal Breaker dodge that also steals, the dodge normally being a pure cost. The data refuses it. Across 617 plays by the recommended policy at four player counts, the number where any opponent held a Deal Breaker at that moment is one (at five players); the number where the break left the player with no complete set for a Deal Breaker to take is zero. The policy never gives away its last complete set: 90–95 % of these plays are made with two complete sets already down.

The dodge is unavailable for a structural reason the run also measured. A folk player fires a Deal Breaker the turn it arrives, so the state "an opponent starts my turn holding a Deal Breaker while I have a complete set" occurs on only 401 / 506 / 608 / 1,411 of the hero's turns in 40,000 games. Conditional on that state, a Deal Breaker lands within the next round 69.6 / 59.3 / 38.7 / 18.3 % of the time (the hazard is real; the window to dodge is not). By the time you could dodge, the card has landed.

What the play actually is: a three-play win, with your own complete set used as a card store (experiments/e50c_probe.py, positions in results/round4/e50c_positions_hero_*p.jsonl). The shape, from seed 255, turn 14, of the 2-player file: the table holds a complete Utility set, a complete Dark Blue set with a House, and Pink two-of-three; the hand holds a Dark Blue and a Forced Deal. Give the Dark Blue off the complete Dark Blue set, take the opponent's Pink — Pink is complete, Dark Blue is one short — then lay the Dark Blue from hand. Dark Blue is whole again, and that is the third set. The House is discarded on the way, and it does not matter, because the game is over.

Classified by how the broken colour comes back:

How the break is repaired 2p 3p 4p 5p
A second pile of the same colour was already complete (the give costs nothing) 20 % 21 % 23 % 16 %
The hand held a card of the broken colour, laid the same turn 55 % 61 % 57 % 63 %
The card taken was itself of the broken colour 1 % 1 % 2 % 1 %
Neither — a second steal the same turn, or the set stays broken 24 % 17 % 18 % 20 %
Turn ended in a win 83 % 91 % 92 % 90 %

How to use this: three quarters of the time the player can put the card back before the turn ends, and the give is therefore free. That is the only condition under which the play is worth making.

So the mechanism is not defence. The offered card is the one card on your table you can replace this turn, and a complete set is where such a card lives — because you hold its twin in hand, or because the colour is doubled up. Under the strict reading the only cards you may offer come from your incomplete sets, which are exactly the cards you are still building with, so the same swap costs you progress. Under the printed card it costs you nothing.

And it is still worth nothing overall, because it is a substitute for a win the recommended policy finds anyway. On the seeds where it plays the swap, it wins 98.1 / 98.2 / 98.6 % of games at 2 / 3 / 4 players; on the same seeds, the same policy forbidden the play wins 98.6 / 95.3 / 97.3 % (paired −0.5 ±1.6 / +2.9 ±3.8 / +1.4 ±3.3 pp). Two complete sets and a Forced Deal usually contain more than one road to the third set.

E50d — the fifth of a point against the strong player is mostly a search artefact (results/round4/e50d_divergence.json, 20,000 games per count)

The hero − none column is small, but it is signed the same way at every count and its paired interval is ±0.03–0.05, so it is not noise. It is also not, mostly, a strategic cost. The recommended policy's in-turn win search scans only the first 30 candidate plays; the wider rule adds (cards in my complete sets) × (their table cards) Forced Deals to the legal-play list, which can push a genuine winning play out of that scan. E50d replays the games and, at every decision where a give-from-a-complete-set was legal, asks what the strict wrapper would have chosen instead:

Players Hero decisions …with the play legal Choice differs …because the wide choice IS the give-from-full …because the candidate scan was crowded
2p 526,215 53,394 656 98 558 (85 %)
3p 418,696 36,128 785 78 707 (90 %)
4p 351,089 26,795 750 78 672 (90 %)
5p 296,674 19,548 496 48 448 (90 %)

How to use this: 85–90 % of the divergence between the strict and the wide recommended policy happens in positions where neither one plays the new card — the legal-play list simply got longer and the truncated search looked at different plays. Read hero − none as "an unchanged policy handed a longer move list", not as "the play is a strategic loss". The play itself is worth about zero.

The folk blunder

The folk Baseline scores the card it offers by that card's progress toward an unfinished set (policies.py, step 6: v -= 1 + prog[colour of the offered card], where prog counts only non-full piles). A card sitting in a complete set therefore scores as zero progress — the cheapest card on the table — when it is in fact the dearest. So the moment the rule allows it, the folk player offers a third of its Forced Deals out of its own finished sets, recovers the colour only a quarter of the time, and hands the strong player two points. Whether human folk players make the same mistake is not tested here; what is tested is that a table which plays the card as printed and reasons about the give this way loses on it.

What the folk player is actually trading (E50c, 977 uncancelled plays at 2p and 2,496 at 4p): it breaks a complete set worth $5.21 of full-set rent to finish one worth $3.39 (4p: $4.98 → $3.37); it discards a House or Hotel on the broken set in 24 % of plays at two players and 11 % at four; and the card it hands over completes a set for the receiver 17 % of the time at two players and 15 % at four. It recovers the broken colour a quarter of the time. Its distinct-full-set count is unchanged in 99 % of plays, which is exactly why the heuristic does not see the loss: it trades a good set for a worse one at par.

What this does and does not change

E51 — the "folk play" in the puzzle labels was not the folk player's (experiments/e51_folk_recheck.py, results/e51_folk_recheck.json)

The bug. experiments/modal_run.py:label_states wrote folk_play=describe(linear). linear is the EVOLVED policy's own top-scored play, the head of the candidate list before any rollout — not sim/mdeal/policies.Baseline, the folk player of Chapter 3. Every record in results/labels_crn_{2,3,4,5}p.jsonl carries that value, make_puzzles.py copied it into results/puzzles_*.jsonl, and the book printed it as "the folk play". The live coach (play/solver.py) was never wrong: it asks the Baseline directly and reports linear separately.

Scale. Across the 45 records the book uses (twenty Chapter 15 puzzles, twenty-five end-of-chapter problems and situations, two label-only examples excluded), the printed play equals the evolved linear pick in 45 of 45 — by construction — and differs from what the Baseline actually does in 23 of 45. Within Chapter 15 alone it differs in 8 of 20: puzzles 4, 7, 8, 9, 13, 15, 17, 18.

The fix. label_states now records linear_play/linear_value and baseline_play/baseline_value under their own names, adds the Baseline's play to the graded candidate set when the linear policy did not nominate it, and flags baseline_is_wild_move when the folk player's move is a free wild flip. The old name folk_play is retired rather than redefined, so a schema-1 file cannot be read as a schema-2 one; records carry schema: 2. make_puzzles.py carries both through and recomputes the Baseline's play on the replayed position, so puzzles built from old labels still get the real one. e05_regret_tables.py and e48_five_players.py already computed the folk play correctly and only read the mislabelled field as lin; they now read linear_play with a fallback.

The recomputation. e51_folk_recheck.py replays each named record with the same weights (play/weights/theta_<n>p.json), reproduces the label run's own CRN base seed from the record seed, and grades the Baseline's play on the same 48 paired sweeps (k=8, D=12, R=4). Where the Baseline's play was already one of the nine graded candidates, the record's own number is used unchanged. Where it was not — Problems 7-1 and 7-2 and Chapter 15's Puzzle 15 — the play is placed on the record's scale through its paired gap to the best play, which is the quantity CRN estimates tightly. The engine has moved since the labels were made (the 2024 defaults, the null-cycle wild rule, the printed Forced Deal), so a bit-exact replay of the 2026-09-18 numbers is no longer possible; the re-run reproduces most candidate values exactly and the rest within one or two sweeps out of forty-eight. Every folk play was also recomputed from the printed position JSON, the position the reader actually sees, as a cross-check; the two methods agree on 44 of 45, and the one exception (2p-90002511, Situation 8-1) is a record whose opponent table has drifted, where the printed position is the authority.

Wild moves. Three folk plays are free wild moves, which cost no play and which the solver never grades: 2p-90002511 (Situation 8-1: the rainbow comes off the Green pair the Forced Deal was about to complete), 4p-90002525 (Problem 12-3: the rainbow comes off the only finished set on the table), 5p-90001794 (Chapter 15 Puzzle 4: the rainbow comes off one of two finished Utility sets). These carry no estimate, and the book now says so rather than printing a number.

One side effect worth recording. In the 4p label pool there is no position in which the folk player lays a property while the evolved policy attacks: the Baseline's decision order already puts Pass Go, set completion, the Deal Breaker, the rent-flip, rents, steals, buildings and the Debt Collector ahead of laying property (policies.py, steps 2–9). Where the folk player builds, it is because nothing cleared its thresholds (rent_min=3, debt_min_bank=3), not because it prefers building. Chapter 4's opening position, which had been told the other way round, has been rewritten: there the evolved policy lays the Yellow and the folk player charges the rent the solver prefers. E14's 3.6 points stand — that ablation moves a weight inside the FeaturePolicy, and is not a claim about the Baseline's move order.