Settlers / Research

73 pages · Search titles and descriptions

↑ ↓ to navigate · Enter to open · Esc to closeLocal search
Play the game

Bargaining switches under the learned leaf

The five arms

Every arm is the tables baseline seat, v2:{"depth":2,"leaf":{"tables":"artifacts/ntuple/hex-portfolio-main.bin"}}, with one bargaining switch turned off, against the unchanged baseline. bargain: false is the all-off control: plain acceptance and proposals with the reference willingness model, no threat costs, no counters, no asks. threat_pricing: false removes the threat premium on the trade margin and the partner-gain cost. counters: false stops the seat answering an open offer with a counter. asks: false stops it proposing two for one to partners known to hold plenty. accept_asks: false is a stubborn seat that refuses any offer or counter asking it for more cards than it receives; it changes what the seat accepts, never what it proposes. Under the hand-written leaf on the builder lineup, counters off cost −0.096 (−0.156 to −0.035) on a swapped pair, asks off −0.156 against a null, threat pricing off nothing, all off −0.121 in one seating, and the stubborn seat was +0.059 better than an identical default (arms report).

Each arm is a swapped pair on the same seeds: half A seats the arm in slot 0 and the control in slot 1, half B the reverse, and the effect is the per-seed half-difference of the two slot-0-minus-slot-1 contrasts, which cancels the seating term between two adjacent searches; the half-sum is the term itself. The population lineup L2 ran first, because bargaining needs partners that trade and the builders rarely do: a third tables search in slot 2 and an ETA in slot 3, seeds 800 to 863. The builder lineup L1 seats an ETA and a fast builder in slots 2 and 3 on seeds 0 to 63, the boards of the hand-leaf arms, and on seeds 800 to 863. Every cohort is 256 deterministic games at depth 2; every pair is 512.

Results

Bargaining switches under the learned leaf

Measured evidence
-0.28-0.185-0.090.0050.1all offthreat pricing offcounters offasks offstubborn (refuses asks)Switch turned offWins per game, arm minus control, seating correctedno difference

Scroll the chart horizontally to inspect all values.

Builder table, boards 0-63Builder table, boards 800-863Population table, boards 800-863Pooled over every stage, after the fact95% intervalno difference

Below zero, the default with the switch on wins more games than the seat without it.

Source: Engine-arena swapped pairs under bargaining/tables-arms: the depth-2 search with learned tables and one bargaining switch off against the unchanged tables baseline, 64 deterministic seeds per stage played once per rotation in both seatings (512 games per pair); the stubborn arm adds seeds 864-927 in both lineups, which enter only its pooled point. L1 seats an ETA and a fast builder beside the two searches; L2 seats a third tables search and an ETA. Run IDs are listed in the report.

View data table
SeriesSwitch turned offWins per game, arm minus control, seating correctedLowHigh
Builder table, boards 0-63all off-0.1465-0.2123-0.0807
Builder table, boards 0-63threat pricing off-0.0234-0.09130.0445
Builder table, boards 0-63counters off-0.0957-0.1456-0.0458
Builder table, boards 0-63asks off-0.0762-0.1378-0.0145
Builder table, boards 0-63stubborn (refuses asks)0-0.02180.0218
Builder table, boards 800-863all off-0.1836-0.2539-0.1133
Builder table, boards 800-863threat pricing off0.0117-0.0480.0714
Builder table, boards 800-863counters off-0.0918-0.1587-0.0249
Builder table, boards 800-863asks off-0.1406-0.2015-0.0797
Builder table, boards 800-863stubborn (refuses asks)0.0176-0.00910.0442
Population table, boards 800-863all off-0.0977-0.1518-0.0435
Population table, boards 800-863threat pricing off0.0137-0.04120.0685
Population table, boards 800-863counters off-0.1191-0.1762-0.0621
Population table, boards 800-863asks off-0.0371-0.09270.0185
Population table, boards 800-863stubborn (refuses asks)0.0078-0.03440.05
Pooled over every stage, after the factall off-0.1426-0.1796-0.1056
Pooled over every stage, after the factthreat pricing off0.0007-0.03450.0358
Pooled over every stage, after the factcounters off-0.1022-0.1358-0.0686
Pooled over every stage, after the factasks off-0.0846-0.1193-0.05
Pooled over every stage, after the factstubborn (refuses asks)0.0059-0.00830.02

Every cohort completed all 256 games, with no invalid moves, stalls, or interruptions. The effect is the arm minus the control in wins per game, so a negative number means the default mechanism wins games; the seating term is what slot 0 gains over slot 1 on those boards.

StageArmEffect (95% interval)Seating term (95% interval)Arm winsControl wins
L2 800-863all off−0.098 (−0.152 to −0.044)+0.035 (−0.030 to +0.100)137187
L2 800-863threat pricing off+0.014 (−0.041 to +0.069)−0.049 (−0.116 to +0.019)169162
L2 800-863counters off−0.119 (−0.176 to −0.062)+0.010 (−0.056 to +0.075)133194
L2 800-863asks off−0.037 (−0.093 to +0.018)+0.033 (−0.034 to +0.100)150169
L2 800-863stubborn (refuses asks)+0.008 (−0.034 to +0.050)−0.066 (−0.138 to +0.005)168164
L1 0-63all off−0.146 (−0.212 to −0.081)+0.049 (−0.027 to +0.124)187262
L1 0-63threat pricing off−0.023 (−0.091 to +0.044)+0.125 (+0.053 to +0.197)222234
L1 0-63counters off−0.096 (−0.146 to −0.046)+0.092 (+0.013 to +0.171)198247
L1 0-63asks off−0.076 (−0.138 to −0.015)+0.064 (−0.011 to +0.139)203242
L1 0-63stubborn (refuses asks)+0.000 (−0.022 to +0.022)+0.125 (+0.037 to +0.213)225225
L1 800-863all off−0.184 (−0.254 to −0.113)+0.043 (−0.025 to +0.111)182276
L1 800-863threat pricing off+0.012 (−0.048 to +0.071)+0.059 (−0.031 to +0.148)235229
L1 800-863counters off−0.092 (−0.159 to −0.025)+0.064 (−0.003 to +0.132)205252
L1 800-863asks off−0.141 (−0.202 to −0.080)+0.082 (−0.004 to +0.169)192264
L1 800-863stubborn (refuses asks)+0.018 (−0.009 to +0.044)+0.064 (−0.033 to +0.162)235226
L1 864-927stubborn (refuses asks)+0.000 (−0.023 to +0.023)+0.125 (+0.022 to +0.228)231231
L2 864-927stubborn (refuses asks)+0.004 (−0.035 to +0.043)+0.055 (−0.015 to +0.125)170168

Counters and asks still win games under the learned leaf. Switching counters off costs about a tenth of a win per game at all three stages, and every interval excludes zero. Switching asks off costs −0.076 and −0.141 on the two builder-table seed sets and −0.037 at the population table, where the interval crosses zero. Switching all bargaining off costs more than either alone, −0.10 to −0.18. Threat pricing does nothing at any stage. The stubborn seat does nothing either: its effect is within 0.02 of zero at every stage, because an ask it would refuse comes up on few boards.

The seating term is still there under the tables and still varies by board set: +0.05 to +0.13 on boards 0 to 63 and +0.04 to +0.08 on boards 800 to 863 at the builder table, and −0.07 to +0.04 at the population table, where a third search sits after slot 1. A contrast read from one seating would have been off by up to an eighth of a win.

Pooled over stages

These estimates pool the per-seed effects of the stages after the fact. The stages were registered separately, and this pooling was not.

ArmL1, both seed setsL2Every stageDecision time, arm / controlDecisions per gameSearch seconds per game
all off−0.165 (−0.213 to −0.117), 128 seeds−0.098 (−0.152 to −0.044), 64 seeds−0.143 (−0.180 to −0.106), 192 seeds405 / 643 ms (−37%)103 / 10442 / 67
threat pricing off−0.006 (−0.051 to +0.039), 128 seeds+0.014 (−0.041 to +0.069), 64 seeds+0.001 (−0.035 to +0.036), 192 seeds599 / 625 ms (−4%)104 / 10362 / 65
counters off−0.094 (−0.135 to −0.052), 128 seeds−0.119 (−0.176 to −0.062), 64 seeds−0.102 (−0.136 to −0.069), 192 seeds450 / 633 ms (−29%)103 / 10346 / 65
asks off−0.108 (−0.152 to −0.065), 128 seeds−0.037 (−0.093 to +0.018), 64 seeds−0.085 (−0.119 to −0.050), 192 seeds559 / 596 ms (−6%)100 / 10356 / 61
stubborn (refuses asks)+0.006 (−0.008 to +0.020), 192 seeds+0.006 (−0.023 to +0.035), 128 seeds+0.006 (−0.008 to +0.020), 320 seeds557 / 567 ms (−2%)103 / 10357 / 58

The extension rule asks for more seeds when an arm's pooled builder-table effect over 128 seeds is positive and its interval comes within 0.03 of zero. Only the stubborn seat met it, at +0.009 (−0.008 to +0.026), so its pairs on seeds 864 to 927 were registered in both lineups and run. The extension read +0.000 (−0.023 to +0.023) at the builder table and +0.004 (−0.035 to +0.043) at the population table, so the final builder-table estimate over 192 seeds is +0.006 (−0.008 to +0.020): no effect, with the narrowest interval of any arm.

Every cohort

StageArmHalfRegistrationRunArm winsControl winsContrast (95% interval)
L2 800-863all offAe4610302-84a7-4cbf-9153-8c1d817d1bd33b0c453e-247e-4f3d-a21b-1967ffce90e67490−0.062 (−0.141 to +0.016)
L2 800-863all offB4f4b8a5f-4437-4594-b85d-c6e06ac9a55e4a6e9f09-a582-4ab4-8e74-b939a1ec89596397+0.133 (+0.043 to +0.223)
L2 800-863threat pricing offA717eae4e-b949-42fa-a1ab-3c086bdc8f3cae2cc3ea-d01f-4b62-8e52-91310dca1e937887−0.035 (−0.124 to +0.053)
L2 800-863threat pricing offB7c9ffb4c-ce6a-4064-98d8-817702445f8d0686a9ad-9da2-43b8-96b1-892b672697f29175−0.062 (−0.148 to +0.023)
L2 800-863counters offA4fd7a980-53a4-40f3-84ee-8b9b86bf3761999d8a97-b681-4dd8-b7ec-6142e8e4e2f97199−0.109 (−0.193 to −0.026)
L2 800-863counters offB75000b6c-b0ba-4b33-8086-24dc58e534faebb5da5b-0763-423d-aaf7-13e39128602f6295+0.129 (+0.039 to +0.219)
L2 800-863asks offAe2d48aa8-cdcc-4123-82de-2d3b8fac502f13ced608-cba8-4a08-98aa-c744d6ee048b7980−0.004 (−0.092 to +0.084)
L2 800-863asks offBb0dbf209-97de-4881-b7ae-e8d1b7381b3d461c113a-3fad-4cc3-9aea-b59af3d14d217189+0.070 (−0.015 to +0.156)
L2 800-863stubborn (refuses asks)Ab77486f2-da1f-4b29-b5b7-7843de5ca87de083bd7f-bb66-4474-aceb-bd463d0d175a7489−0.059 (−0.139 to +0.022)
L2 800-863stubborn (refuses asks)Bab3a7230-393a-4b82-889f-d516413afebf62529417-a975-4042-bdbf-531f2bb24acf9475−0.074 (−0.159 to +0.011)
L1 0-63all offA937e19ae-2569-4472-9ea6-d964769aaaf1bd2986e6-c83e-4289-966f-ec1fcb932082100125−0.098 (−0.190 to −0.005)
L1 0-63all offB6c92dd71-3397-4c84-abaa-fe37371bd8e7c826e45a-6212-4187-8895-7ca24848d80287137+0.195 (+0.088 to +0.302)
L1 0-63threat pricing offA13fc34cb-16ff-41ca-a87e-7b212e0461d9623e109e-7040-43e6-b20b-3e371e17fccb128102+0.102 (+0.009 to +0.195)
L1 0-63threat pricing offB9b87ce41-b6ec-4985-ab9e-52d3b2ead900d418eee0-8e53-4392-99ac-88b14a68d8f594132+0.148 (+0.044 to +0.253)
L1 0-63counters offA335728e0-245f-46e4-b345-8121f246dc446cb1ec79-c371-4551-90b1-3cc6cdc8afd9109110−0.004 (−0.096 to +0.088)
L1 0-63counters offBd5d25a63-fef6-44ca-9a4e-48c3251c14a486fcba2e-60a9-4422-9c43-467c08ceeee789137+0.188 (+0.092 to +0.283)
L1 0-63asks offA1c2e9a7f-fdfd-4385-9cb3-cc136ee01eebe2a6bec5-ba94-4d34-a885-fd2274d6579e108111−0.012 (−0.116 to +0.093)
L1 0-63asks offB1a34b4e4-0905-4d0a-a8b3-913c4a12a0f855c5fe2f-b5f5-477f-a03b-0ae62bfe900595131+0.141 (+0.051 to +0.230)
L1 0-63stubborn (refuses asks)Ac9f1ac2b-d49c-41b7-9782-29359c0382f405e28cbc-1536-4686-9328-cd96ce20396012997+0.125 (+0.035 to +0.215)
L1 0-63stubborn (refuses asks)B9fe81446-d3fc-4434-99be-f0963253c9555b736f84-6966-4a57-8c08-07e4068eaa9596128+0.125 (+0.034 to +0.216)
L1 800-863all offA1d79b24f-6236-48e4-b2b1-0b0b5f53202d2f70d1e1-7a04-4fbc-8b8a-6ae08c6caec594130−0.141 (−0.248 to −0.033)
L1 800-863all offB95171f06-d8fc-4ffa-b168-e277748022fe74d0bbf6-d970-4a06-868c-327371e6a80188146+0.227 (+0.140 to +0.313)
L1 800-863threat pricing offAe07a3371-6b64-4823-9c7f-e0bedec181cb7c5fd2a2-bab8-460d-9212-f789b0f85dea122104+0.070 (−0.029 to +0.169)
L1 800-863threat pricing offB2729dfb5-b152-4d3a-b5bd-b89e7b9374c213bfb4d3-0987-44d2-acd1-e6dc73252eaf113125+0.047 (−0.069 to +0.162)
L1 800-863counters offA598fb4ba-3c1a-469c-9668-ecef054cec5397c3c83b-db34-4819-96b1-3826fb67ca01109116−0.027 (−0.122 to +0.067)
L1 800-863counters offB60dabae0-77de-4783-8ef0-60c9f81fd7cbc90421ef-083e-4773-9406-a206105f3f4396136+0.156 (+0.061 to +0.251)
L1 800-863asks offA37ca0f2e-c5fe-4c7f-aa8a-453a277bfbf77e86a611-6e58-4e15-b5d2-2c301892d618105120−0.059 (−0.174 to +0.057)
L1 800-863asks offB67853977-498a-480d-a2ad-c545e3847b1f4239504d-3edd-4fd7-9a3a-65ec8d55482887144+0.223 (+0.127 to +0.318)
L1 800-863stubborn (refuses asks)Aff90bfd6-bab6-4ae2-8ee4-e766cdff7e0e1d58fc87-a22f-4ab7-8f9f-abdc9c7589f5125104+0.082 (−0.020 to +0.184)
L1 800-863stubborn (refuses asks)Be390230c-9b4e-421d-9b57-eeacf8ef2d761b356578-dee4-4d74-a840-5d039f78c434110122+0.047 (−0.054 to +0.148)
L1 864-927stubborn (refuses asks)A37f466ed-4afb-43d7-8637-46246de0cacda92fb89a-cbc7-43ed-acfc-b7ff2874183c13199+0.125 (+0.024 to +0.226)
L1 864-927stubborn (refuses asks)B95b0122b-407f-4210-94b8-c1ba0a4e508de5648fda-d914-46c8-99dd-c2871af55225100132+0.125 (+0.015 to +0.235)
L2 864-927stubborn (refuses asks)Acf71fa9c-24c7-4079-89d1-23d0d9170f7451cef0e8-e02c-4265-9966-723120f99a709277+0.059 (−0.020 to +0.137)
L2 864-927stubborn (refuses asks)Bf378d100-fe86-49ae-9f21-7bd139bdf821875967b0-2786-44f4-abfe-8366aa88cc307891+0.051 (−0.031 to +0.133)

How the switches change trading

Per game, arm / control, both halves of each pair pooled.

StageArmOffersAcceptedCountersTakenDeclinedTook othersTradesBankPointsDecision
L2 800-863all off11.0 / 15.51.53 / 2.660.00 / 4.430.00 / 1.1114.5 / 12.82.97 / 1.154.50 / 3.814.34 / 4.756.57 / 7.22370 / 586 ms
L2 800-863threat pricing off17.5 / 14.82.62 / 2.204.89 / 3.981.33 / 1.0710.7 / 13.21.71 / 1.514.32 / 3.714.43 / 4.587.09 / 7.02590 / 617 ms
L2 800-863counters off11.2 / 15.31.16 / 2.480.00 / 4.000.00 / 1.1015.8 / 12.82.33 / 1.163.49 / 3.644.57 / 4.996.74 / 7.38483 / 670 ms
L2 800-863asks off13.1 / 15.22.23 / 2.183.92 / 4.121.04 / 1.0412.5 / 11.71.24 / 1.443.47 / 3.624.56 / 4.676.89 / 7.01544 / 592 ms
L2 800-863stubborn (refuses asks)15.2 / 15.22.26 / 2.044.02 / 4.001.12 / 0.9312.8 / 12.61.12 / 1.493.38 / 3.534.88 / 4.697.11 / 7.02577 / 592 ms
L1 0-63all off10.6 / 14.71.91 / 3.150.00 / 4.190.00 / 1.3015.9 / 14.32.77 / 1.014.68 / 4.164.07 / 4.207.03 / 7.80465 / 720 ms
L1 0-63threat pricing off17.1 / 14.23.39 / 2.875.07 / 3.911.71 / 1.3212.1 / 14.51.37 / 1.204.76 / 4.074.11 / 3.997.50 / 7.41631 / 655 ms
L1 0-63counters off10.5 / 14.31.64 / 3.100.00 / 3.830.00 / 1.3417.2 / 14.22.04 / 0.803.68 / 3.903.98 / 4.257.20 / 7.72458 / 643 ms
L1 0-63asks off12.2 / 14.42.79 / 2.753.79 / 3.921.33 / 1.2614.0 / 13.30.99 / 1.093.78 / 3.844.04 / 4.267.28 / 7.59603 / 623 ms
L1 0-63stubborn (refuses asks)14.3 / 14.32.88 / 2.693.87 / 3.811.35 / 1.1913.8 / 13.70.94 / 1.103.81 / 3.794.15 / 4.127.46 / 7.45626 / 626 ms
L1 800-863all off11.0 / 15.51.97 / 3.480.00 / 4.600.00 / 1.5116.3 / 14.62.83 / 1.004.80 / 4.484.22 / 4.566.96 / 8.06378 / 620 ms
L1 800-863threat pricing off17.8 / 14.93.59 / 2.945.46 / 4.211.80 / 1.3912.4 / 14.81.33 / 1.224.92 / 4.154.42 / 4.427.61 / 7.53575 / 604 ms
L1 800-863counters off10.8 / 14.91.66 / 3.210.00 / 4.120.00 / 1.4317.2 / 14.12.12 / 0.823.78 / 4.034.36 / 4.567.23 / 7.67411 / 588 ms
L1 800-863asks off12.6 / 14.92.82 / 2.933.94 / 4.171.34 / 1.3614.4 / 13.51.02 / 1.113.84 / 4.034.45 / 4.577.07 / 7.83529 / 572 ms
L1 800-863stubborn (refuses asks)15.0 / 14.82.94 / 2.694.19 / 4.091.34 / 1.2014.1 / 14.30.94 / 1.083.88 / 3.784.48 / 4.447.53 / 7.39596 / 606 ms
L1 864-927stubborn (refuses asks)14.8 / 14.73.11 / 2.893.98 / 3.961.43 / 1.2714.0 / 14.10.96 / 1.144.07 / 4.034.71 / 4.597.55 / 7.50550 / 559 ms
L2 864-927stubborn (refuses asks)14.5 / 14.42.13 / 1.913.74 / 3.651.02 / 0.8412.6 / 12.51.00 / 1.343.13 / 3.244.65 / 4.576.83 / 6.80434 / 449 ms

Without counters the seat answers a thin offer by accepting or declining. It took two to 2.6 times as many of the others' offers (2.04 against 0.80 per game on boards 0 to 63, 2.12 against 0.82 on boards 800 to 863, 2.33 against 1.16 at the population table), made a quarter fewer offers of its own, and finished about half a point lower with fewer cities. A counter replaces an acceptance on the offerer's terms with one on better terms, the same account the hand-leaf arms gave. The all-off seat completes more player trades than the default (4.5 to 4.8 per game against 3.8 to 4.5) and wins less: it is the generous partner, accepting almost three times as many of the others' offers. Without asks the seat made two fewer offers per game, completed about as many, and finished 0.1 to 0.8 points lower. Threat pricing off makes the seat more willing on both sides, with about three more offers, two to three fewer declines, and 0.6 to 0.8 more player trades per game, and the extra trades neither win nor lose. The stubborn seat's counts match the control's except that it takes fewer of the others' offers (0.94 to 1.12 per game against 1.08 to 1.49), which is what refusing asks means.

Decision cost

The arena records wall time per decision. Other tournaments shared the machine, so the level moved from cohort to cohort, but the arm and its control played the same games at the same moments, so their ratio is a fair measure of what a switch costs. Each row reads switch off against switch on.

SwitchTables, per decisionTables, search seconds per gameHand leaf, per decision
bargain (all of it)405 / 643 ms (+59%)42 / 67174 / 277 ms (+59%)
counters450 / 633 ms (+41%)46 / 65124 / 173 ms (+40%)
asks559 / 596 ms (+7%)56 / 61246 / 246 ms (0%)
threat_pricing599 / 625 ms (+4%)62 / 65170 / 170 ms (0%)
accept_asks557 / 567 ms (+2%)57 / 58246 / 250 ms (+2%)

Bargaining as a whole costs about 60 percent more time per decision under both leaves, and counters account for most of it: answering an open offer means searching the accept, each counter, and waiting, where the seat without counters searches only the accept and waiting. Asks and threat pricing cost under a tenth and the stubborn switch nothing. The number of decisions per game barely moves with any switch, so the cost is per decision, not more decisions. The hand-leaf column is the same ratio from the single-seating arms of the earlier study on boards 0 to 63; its counters pair on boards 64 to 127, which had the switched-off seat in both slots, gave +48% and +41%.

Compared with the hand-written leaf

Switch offHand leaf, boards 0 to 63, against a nullTables, boards 0 to 63, swapped pairTables, pooled over every stage
all off−0.297 (−0.429 to −0.165)−0.146 (−0.212 to −0.081)−0.143 (−0.180 to −0.106)
counters off−0.199 (−0.309 to −0.089); swapped pair on boards 64 to 127: −0.096 (−0.156 to −0.035)−0.096 (−0.146 to −0.046)−0.102 (−0.136 to −0.069)
asks off−0.156 (−0.259 to −0.054)−0.076 (−0.138 to −0.015)−0.085 (−0.119 to −0.050)
threat pricing off−0.008 (−0.103 to +0.087)−0.023 (−0.091 to +0.044)+0.001 (−0.035 to +0.036)
stubborn+0.059 (+0.002 to +0.115)+0.000 (−0.022 to +0.022)+0.006 (−0.008 to +0.020), 320 seeds

The two leaves agree on the order: all off loses most, then counters and asks, and threat pricing and the stubborn seat sit near zero. On the same boards 0 to 63 the tables' losses are about half what the hand-leaf arms showed, but those hand-leaf numbers subtract a null of +0.176 measured in one seating, and the one hand-leaf swapped pair (counters, boards 64 to 127) reads −0.096, the same as the tables' −0.096 on boards 0 to 63. The size that holds under both leaves and both corrections is about a tenth of a win per game for counters and a little less for asks. The stubborn seat was +0.059 better than an identical default under the hand leaf against the null and is +0.006 (−0.008 to +0.020) over 320 seeds under the tables, so that small hand-leaf gain was probably part of the null's error.

The thresholds are the same size under both leaves

The bargaining thresholds are fixed numbers in the hand-written currency: a swap must beat the plain alternative by the trade margin, 12 leaf units at the default slider, a partner's threat adds up to 30 to that margin, and every swap pays a share of the partner's gain priced with the hand-written card and point values (20 and 100). The tables value a position in win probability times leaf.scale, 1000 by default, so one win is ten hand-leaf points and the question is whether one swap moves the tables by as much as it moves the hand-written terms.

A traced screen answers it: 16 boards, four rotations, the tables seat and the hand-leaf seat at one table with the two builders, every search decision recorded with its top candidates and, after an arena change, every answer to an offer and reply to a counter. A proposal's gross gain is the value of the accepted continuation minus the best plain alternative before any threshold; an accept's is its value with the margin and partner cost added back minus the value of waiting.

Quantity from the traceTables seatHand-leaf seat
Best plain candidate per decision, median448967
Gross gain of a proposal, median (quartiles)35 (13 to 71)31 (2 to 80)
Gross gain of a counter, median (quartiles)−0.4 (−24 to 28)−1.2 (−39 to 31)
Accept minus wait before thresholds, median (quartiles)−19 (−44 to 0)−18 (−56 to 6)
Proposals with a positive gross gain that the margin alone blocks1,580 of 4,666 (34%)1,364 of 4,204 (32%)
Accepts the lookahead liked that the thresholds blocked179 of 303 (59%)184 of 379 (49%)
Of those, blocked by the plain margin alone137126
Threat premium plus partner cost on a priced accept, median (quartiles)9.6 (5.6 to 15.0)9.0 (5.2 to 15.1)

One swap is worth about the same number of leaf units under both leaves, 30 to 35 for a proposal the lookahead likes and 9 to 10 of threat pricing on an accept, and the plain margin blocks about a third of liked proposals under both. The tables' absolute level is half the hand leaf's, but a threshold compares differences, not levels, so nothing is mis-sized: leaf.scale 1000 puts a card at roughly 20 units in both currencies. The thresholds stay as they are and no knob was added; the decision cost and the arms above are the evidence that matters. The scripts and the two traced screens (identical winners with and without the response trace) are under runs/screens-bargaining-tables/.

What could still be wrong

Decision time is wall time on a shared machine, so no absolute time here predicts the browser's; only the ratio within a pair is read. The arena cohorts ran at equal node budgets, so a switch that makes each decision slower was measured at no cost in search depth. The browser instead gives each decision one second, and there the extra work of counters could come out of depth, which this study did not test. The hand-leaf numbers on boards 0 to 63 come from single-seating cohorts read against a null, not from swapped pairs, so the comparison between leaves on those boards mixes two corrections; only counters has a swapped pair under both leaves. Every partner is a copy of the same search or a builder that never counters, so an ask is accepted whenever the partner's own lookahead likes it; the stubborn arm is the only partner that refuses, and people refuse and counter in ways neither covers. The stubborn seat changed the outcome on few boards (its per-seed effect was exactly zero on 148 of the 192 builder-table boards and on 25 of the 64 population boards), so its narrow intervals say that refusing rarely matters here, not that it is harmless wherever asks are common. Asks off is inconclusive at the population table (−0.037, −0.093 to +0.018) and clear at the builder table; with 64 population seeds that gap is within the noise. Pooling over stages was chosen after seeing the results and is labelled as such. All of it is engine-arena development evidence at depth 2.

What this means for the browser

The browser plays the hand-written leaf at depth 3 under a one-second budget, and all five switches are on there because they are on by default. A switch is worth the browser when its pooled effect is at least +0.03 wins per game with the interval excluding zero and its decision time is within 25% of the control's. Read as switching each one on:

SwitchEffect of switching it on, tables, pooledHand leafExtra time per decision, tables / hand leafBrowser
counters+0.102 (+0.069 to +0.136)+0.096 (swapped pair)+41% / +40%keep on
asks+0.085 (+0.050 to +0.119)+0.156 (against the null)+7% / 0%keep on
threat_pricing−0.001 (−0.036 to +0.035)+0.008 (against the null)+4% / 0%keep on for its reasons, not for wins
accept_asks−0.006 (−0.020 to +0.008)−0.059 (against the null)+2% / +2%keep on
bargain+0.143 (+0.106 to +0.180)+0.297 (against the null)+59% / +59%keep on

asks is the one switch that meets the bar outright: it wins under both leaves and costs almost nothing. counters wins about a tenth of a game under both leaves, the largest single effect measured under either leaf, but costs 40 percent more time per decision, which fails the cost half of the bar. The bar was written for switching something new on, and switching counters off gives away a tenth of a win, so keep it on. What the browser should check is whether answering an offer still reaches depth 3 inside its second with counters searched; if it does not, the counter search is what to make cheaper. bargain is the sum of those two and stays on for the same reason. threat_pricing does nothing for strength under either leaf at a few percent of cost; it is what makes the search refuse the leader and give a reason, which the browser shows as table talk, so keep it on for that. accept_asks off gains nothing under the tables in either lineup, so keep accepting an ask when the lookahead likes it. No default changes, in the engine or in the browser.

Agent notes

Study bargaining/tables-arms. Seats: the tables baseline v2:{"depth":2,"leaf":{"tables":"/home/keshav/settlers/research/artifacts/ntuple/hex-portfolio-main.bin"}} and the same with one of "bargain":false, "threat_pricing":false, "counters":false, "asks":false, "accept_asks":false. L1 seats eta and fast in slots 2 and 3; L2 seats a third baseline in slot 2 and eta in slot 3. Every experiment is registered with 64 seeds, four rotations, and deterministic tapes; analysis/bargaining_tables.json lists each pair's arm, stage, lineup, seeds, and half A and half B experiment IDs, and python3 analysis/bargaining_tables.py analysis/bargaining_tables.json --tables --assets finds each experiment's completed run, prints every table on this page, and writes the plot asset. analysis/seating_pair.py gives the same effect for any one pair. The cohorts ran with python3 -m harness.engine run EXPERIMENT --threads 8 through analysis/bargaining_tables_queue.sh, two at a time, against the arena built from server branch research/bargaining-tables at 94063bb, whose only change from the dev it started on records answers to offers and replies to counters under --trace (play unchanged; it is not merged into server dev). The threshold screens and analysis/bargaining_thresholds.py read the traces under runs/screens-bargaining-tables/. Run records are under records/runs/ and archive receipts under records/artifacts/. The hand-leaf comparison uses the runs of bargaining/threat-aware-pricing listed in the arms report.

All studies · Bargaining · Experiment log