Robber placement and victim choice
Robber-targeting contrasts
Measured evidenceScroll the chart horizontally to inspect all values.
Each arm's paired win difference with the arm in slot 0 on the development and fresh seeds, and the seating-bias-free effect from the swapped pairs.
Source: Engine-arena cohorts under containment/robber-targeting and containment/robber-targeting-bias: the arm against the unchanged depth-2 control with an ETA and a fast builder, 64 deterministic seeds each played once per rotation (256 games per point). The bias-free points pair the same-orientation confirmation with its swapped cohort on the same seeds. Run IDs are listed in the robber-targeting report.
View data table
| Series | Arm and measurement | Wins per game, arm minus control | Low | High |
|---|---|---|---|---|
| Paired seed contrast (95% interval) | leader, 0-63 | 0.125 | 0.0215 | 0.2285 |
| Paired seed contrast (95% interval) | leader, 64-127 | 0.0352 | -0.0471 | 0.1175 |
| Paired seed contrast (95% interval) | leader, bias-free | -0.0234 | -0.0731 | 0.0262 |
| Paired seed contrast (95% interval) | need, 0-63 | 0.1602 | 0.057 | 0.2633 |
| Paired seed contrast (95% interval) | need, 64-127 | 0.0391 | -0.0617 | 0.1398 |
| Paired seed contrast (95% interval) | need, bias-free | -0.0449 | -0.0855 | -0.0043 |
| Paired seed contrast (95% interval) | threat, 0-63 | 0.1172 | 0.0221 | 0.2123 |
| Paired seed contrast (95% interval) | threat, 64-127 | 0.0352 | -0.0561 | 0.1264 |
| Paired seed contrast (95% interval) | threat, bias-free | -0.0332 | -0.0845 | 0.0181 |
What each arm changes
The search shortlists four robber placements by a static score and lets the lookahead choose among them. The score adds, per hex, the pips blocked at every rival building (cities double, weighted by the blocked seat's public points), and per victim a bonus for hand size and public points. Each arm changes exactly one part of that score, everything else held fixed:
| Switch | Change | What it tests |
|---|---|---|
robber.leader | The hex score counts the points leader's blocked pips in full and every other seat's at a tenth | Blocking the leader's best hex beats blocking the most pips overall |
robber.need | The victim bonus replaces hand size with 2.8 times the expected share of the resource this seat most needs, from its resource knowledge | Stealing the card this seat needs beats stealing from the biggest hand |
robber.threat | Blocked pips are weighted by 1 + 2 × the seat's bargain threat, and a victim with threat below 0.5 is never robbed while a threatening victim exists | Sparing trade partners and preferring the top threat beats ignoring threats |
The cohorts
Every cohort seats the arm and the unchanged control v2:{"depth":2} with eta and fast on 64 deterministic seeds played once per rotation (256 games). All games completed; there were no invalid moves, stalls, or interruptions.
| Arm | Seeds | Orientation | Arm wins | Control wins | Contrast (95% interval) | Run |
|---|---|---|---|---|---|---|
| leader | 0-63 | arm slot 0 | 124 | 92 | +0.125 (+0.021 to +0.229) | ccf05c4f-15a1-4774-a273-40b7d5491873 |
| need | 0-63 | arm slot 0 | 130 | 89 | +0.160 (+0.057 to +0.263) | 9109daab-18d0-4a2a-94e3-a7fa11c94a7a |
| threat | 0-63 | arm slot 0 | 122 | 92 | +0.117 (+0.022 to +0.212) | 0ce9ecc0-7374-4c7c-8178-4d99db3ed0e1 |
| leader | 64-127 | arm slot 0 | 112 | 103 | +0.035 (−0.047 to +0.117) | a722f475-8cc5-4e2a-896b-4167764b2456 |
| need | 64-127 | arm slot 0 | 109 | 99 | +0.039 (−0.062 to +0.140) | e214be7c-f184-4840-af3e-e82e7c23ffad |
| threat | 64-127 | arm slot 0 | 110 | 101 | +0.035 (−0.056 to +0.126) | 1d943a44-ffb0-459d-b487-733d26d50189 |
| leader | 64-127 | arm slot 1 | 93 | 114 | −0.082 (−0.166 to +0.002) | 10834001-571d-439c-83d2-9e31e1d5997b |
| need | 64-127 | arm slot 1 | 86 | 119 | −0.129 (−0.217 to −0.041) | 165a28ac-94d3-4ebb-bbdf-989abb243bea |
| threat | 64-127 | arm slot 1 | 90 | 116 | −0.102 (−0.183 to −0.020) | cb91296b-ac8d-4f86-9ad6-5ba4d57af8ec |
Why the slot-0 contrasts are not arm effects
Two identical searches placed in adjacent slots of this arena differ by a seating term that the seating diagnosis traced to turn-order adjacency: the seat directly before another acts first after three of the four rolls in a round. Every cohort above has the changed seat and the control adjacent, so each contrast mixes the arm's effect with the term. Pairing a same-orientation cohort with a swapped cohort on the same seeds cancels it exactly: the bias-free effect is half the per-seed difference of the two contrasts, and half their sum is the seating term itself.
| Arm | Same-orientation contrast | Swapped contrast | Bias-free effect (95% interval) | Seating term |
|---|---|---|---|---|
| leader | +0.035 | +0.082 | −0.023 (−0.073 to +0.026) | +0.059 |
| need | +0.039 | +0.129 | −0.045 (−0.086 to −0.004) | +0.084 |
| threat | +0.035 | +0.102 | −0.033 (−0.084 to +0.018) | +0.068 |
Read against the seating term, the picture is consistent: the dev-seed contrasts of +0.117 to +0.160 were the term plus whatever the seed selection added (the screens that chose these arms ran on seeds 0 to 15, inside the 0-63 cohorts), the fresh-seed contrasts near +0.035 were mostly the term, and the bias-free effects hover slightly below zero. The need arm is the one clear result: its interval excludes zero on the wrong side, so choosing the victim by the card this seat needs is worse than choosing by hand size at this table, plausibly because a big hand is worth more to rob than a well-aimed single card, and the need rule also ignores how many cards the victim holds.
Where the robber actually goes
The arena records every robber placement together with the points leader among the mover's rivals and that seat's highest-pip hex, cities counting double. Pooled over all nine cohorts (2,304 games), the default search landed the robber on that leader's best hex on 27.7 percent of its robber moves and robbed the leader on 45.5 percent. The leader arm raised both shares as designed (28.6 and 49.6 percent), the need arm changed victims rather than hexes, and the threat arm robbed the leader on 46.5 percent while sparing its low-threat partners. The builder policies behind eta and fast block the leader's best hex on about a third of their robber moves, so the default search was the least leader-aware robber at this table, and making it more leader-aware did not win more games.
| Seat | On the leader's best hex | Robbed the leader |
|---|---|---|
| default search (control seats, nine cohorts) | 1,244 of 4,499 (27.7%) | 2,047 of 4,499 (45.5%) |
| leader arm | 1,284 of 4,492 (28.6%) | 2,227 of 4,492 (49.6%) |
| need arm | 1,192 of 4,472 (26.7%) | 1,962 of 4,472 (43.9%) |
| threat arm | 1,119 of 4,456 (25.1%) | 2,070 of 4,456 (46.5%) |
| eta builders | 2,579 of 7,281 (35.4%) | 3,752 of 7,281 (51.5%) |
| fast builders | 2,706 of 8,069 (33.5%) | 4,078 of 8,069 (50.5%) |
Failures and limits
The screens on 16 seeds (unregistered, 64 games each) read +0.312, +0.219, and +0.203, all larger than anything that followed: small screens overstate. The development cohorts shared seeds with the screens that selected the arms, so their contrasts carry selection on top of the seating term; the only unbiased numbers here are the swapped pairs on seeds 64 to 127. Everything is engine-arena evidence at one lineup (two searches and the two fixed builders, depth 2, deterministic tapes), and the arms were tested one at a time, so a combined arm remains untested.
Agent notes
Implementation: SearchConfig.robber (leader, need, threat) in crates/expectimax/src/v2, documented in docs/expectimax.md under "Robber targeting"; the scoring lives in the free robber_rows function, shared with the endgame leader bias. The need bonus reads ResourceKnowledge expected hands taken at the root of the decision, and the need itself is the largest missing-card gap toward the builds the seat is closest to affording. All switches off reproduce the previous scoring bit for bit: 32 deterministic games are identical before and after the change, and again after the merge with the endgame switches. The arena's GameRecord carries one compact row per robber placement (player, hex, victim, the leader among the mover's rivals, and that seat's highest-pip hex, cities double); analysis/robber_obvious.py computes the shares, analysis/robber_bias.py the bias-free effects, and analysis/robber_assets.py the plot from the retained runs.
Reproduction: python3 -m harness.engine run EXPERIMENT --threads 8 in the research checkout with SETTLERS_SERVER_DIR pointing at a server worktree containing the switches. Experiments 15173b9c, 6c2d07c6, and 0c77ef63 are the 0-63 cohorts; 247cadd4, af5f61b5, and e36e5562 the same-orientation confirmations; 1ba816f0, d918fac6, and 7e2a2610 the swapped pairs under containment/robber-targeting-bias. Arm seat: v2:{"depth":2,"robber":{"leader":true}} (and need, threat); control v2:{"depth":2}. Focused tests in crates/expectimax/tests/internal/v2_robber.rs.