How it was done

The bot, the deals, the keep rule, and every rule tried

The bot

The bot is a Python engine for this variant with a play-time search: for each decision it samples the hidden cards many times, plays each sample out with a simple rule-based player, and takes the action with the best average result. Its bidding works the same way: every legal bid is valued by sampled deals. On 1,000 duplicate deals it wins 88% of boards against the rule-based player. That bidding search is the "bot" every rule was measured against.

Measuring a rule

A rule set is a complete bidding policy. To score one, a team bidding by it plays a team bidding like the bot, on fixed deals, each deal twice with the seats swapped so that card luck cancels. After the auction, one policy plays the cards at all four seats, so bidding is the only difference between the teams. The result is points per hand, your team minus theirs, with a 95% interval from the paired differences. Two card-play policies were used: basic (the rule-based player) and expert (the bot's own search).

Three sets of deals

What the bot's valuation got wrong

The bot's own bid values suggested rules that did not survive head-to-head scoring: opening without the ace, and taking the bid away from a partner. They also called opening at 5 a mistake, which head-to-head play contradicted. The bot values a bid by assuming later bidders rarely overcall, and a real competitive table does. That is why the leak reports only proposed rules and the scoring harness decided.

Two things found in the bot

The study turned up two defects in the bot itself: its rollouts sometimes buried the wrong cards, and its networks were left in training mode, so part of its search was random from call to call. Both were fixed and shown to be neutral on the bot's own 1,000-deal gate; the numbers here were measured against the corrected bot.

Every rule tried

35 rules were tried and 6 kept. The figures are what each bought when it was measured, over the rules it was added to: "mining" is the rule-finding set of 5,000 deals, "scoring" the judging set. Several rules were re-measured on the same mining deals after other rules changed, so a rule that appears more than once was not independently confirmed each time.

#RuleAimed atBasic card playExpert card playOutcome
1 open_always
If nobody has bid, bid 4.
first rule: when to open the bidding at 4 (hand-value table) +0.07 ± 0.13 (mining, 5,000 deals) – Dropped: Opening on anything gets set too often: the gain is not distinguishable from zero.
2 open_two_tops
Count the top cards in your suit: ace, king, queen, jack, off-jack and jokers. If nobody has bid, bid 4 with two or more.
first rule: when to open the bidding at 4 (hand-value table) +0.22 ± 0.10 (mining, 5,000 deals) – Dropped: Works, but a little worse than the ace rule and harder to apply.
3 open_count_two
Count the top cards in your suit (ace, king, queen, jack, off-jack and jokers), the ace twice. If nobody has bid, bid 4 with a count of two or more.
first rule: when to open the bidding at 4 (hand-value table) +0.28 ± 0.11 (mining, 5,000 deals) – Dropped: As good as the ace rule but harder to apply.
4 open_count_three
Count the top cards in your suit (ace, king, queen, jack, off-jack and jokers), the ace twice. If nobody has bid, bid 4 with a count of three or more.
first rule: when to open the bidding at 4 (hand-value table) +0.26 ± 0.08 (mining, 5,000 deals) – Dropped: As good as the ace rule but harder to apply.
5 open_ace
If nobody has bid, bid 4 when you hold the ace of your suit.
first rule: when to open the bidding at 4 (hand-value table) +0.30 ± 0.04 (scoring, 20,000 deals) +0.68 ± 0.13 (scoring, 2,000 deals) Kept: Ties for the best first rule and is the simplest to apply.
6 overcall_ace_two
If an opponent has bid 4, bid 5 when you hold the ace of your suit and at least one other top card.
an opponent has bid 4 and you hold the ace (leak report on open_ace) +0.49 ± 0.07 (mining, 5,000 deals) – Dropped: Works, but asking for a second top card loses 0.06 a hand against the plain rule.
7 raise_ace
If anyone, partner included, has bid 4, bid 5 when you hold the ace of your longest suit.
an opponent or partner has bid 4 and you hold the ace +0.52 ± 0.09 (mining, 5,000 deals) – Dropped: Works, but bidding over partner adds nothing to bidding over opponents only.
8 open_three_tops
Without the ace, still open at 4 when you hold three or more other top cards.
nobody has bid and you have no ace (leak report on open_ace) −0.00 ± 0.04 (mining, 5,000 deals) – Dropped: No gain: the leak report's estimate did not hold up against the bot's bidding.
9 open_three_or_two_clean
Without the ace, still open at 4 with three other top cards, or with two if you do not hold the 3.
nobody has bid and you have no ace −0.08 ± 0.07 (mining, 5,000 deals) – Dropped: Loses a little: opening without the ace does not pay.
10 take_partner
If your partner has bid 4, bid 5 when you hold the ace of your suit and at least one other top card.
partner has bid 4 and you hold the ace (leak report on open_ace) +0.02 ± 0.04 (mining, 5,000 deals) – Dropped: No measurable gain from taking the bid away from partner.
11 take_partner_any
If your partner has bid 4, bid 5 when you hold the ace of your suit.
partner has bid 4 and you hold the ace −0.02 ± 0.04 (mining, 5,000 deals) – Dropped: No measurable gain from taking the bid away from partner.
12 lone_ace_three
Do not open on the ace alone if you also hold the 3 of that suit.
opening on a lone ace while holding the 3 +0.02 ± 0.02 (mining, 5,000 deals) – Dropped: Borderline, and measured on top of a rule that was dropped; retried as no_open_lone_ace_three.
13 ace_three_two
If you hold the 3 of your suit, open only with the ace and two other top cards.
opening with the ace and one other top card while holding the 3 +0.03 ± 0.04 (mining, 5,000 deals) – Dropped: Not distinguishable from zero, and measured on top of a rule that was dropped; retried as no_open_ace_three_two.
14 overcall_ace
If an opponent has bid 4, bid 5 when you hold the ace of your suit.
an opponent has bid 4 and you hold the ace (leak report on open_ace: 0.37 points per hand) +0.47 ± 0.04 (scoring, 20,000 deals) +0.89 ± 0.14 (scoring, 2,000 deals) Kept: The largest single gain found; the plain version beat both variants.
15 no_open_lone_ace_three
Do not open on the ace alone if you also hold the 3 of that suit.
opening on a lone ace while holding the 3 +0.03 ± 0.03 (mining, 5,000 deals) – Dropped: Barely positive; the version that also stops the overcall did better.
16 no_bid_lone_ace_three
Do not bid at all on the ace alone if you also hold the 3 of that suit.
bidding on a lone ace while holding the 3 (leak report on overcall_ace) +0.05 ± 0.04 (mining, 5,000 deals) – Dropped: A small real gain on the mining deals; carried forward as lone_ace_three_pass on top of three rules.
17 no_open_ace_three_two
If you hold the 3 of your suit, open only with the ace and two other top cards.
opening with the ace and one other top card while holding the 3 +0.04 ± 0.04 (mining, 5,000 deals) – Dropped: Not distinguishable from zero.
18 three_needs_two_more
If you also hold the 3 of that suit, bid only when you have two other top cards with the ace.
bidding on the ace with the 3 and fewer than three top cards (leak report on overcall_ace) +0.05 ± 0.05 (mining, 5,000 deals) – Dropped: No better than the narrower lone-ace version, and not distinguishable from zero.
19 open_three_tops_seat23
Second or third to bid with no ace, still open at 4 with three other top cards.
second or third to bid, no ace, three top cards (leak report on overcall_ace) +0.01 ± 0.03 (mining, 5,000 deals) – Dropped: No gain: opening without the ace does not pay in any seat tried.
20 overcall_three_tops
If an opponent has bid 4 and you have no ace, still bid 5 with three other top cards.
an opponent has bid 4, no ace, three top cards +0.03 ± 0.04 (mining, 5,000 deals) – Dropped: Not distinguishable from zero; retried as five_over_four_three_tops on top of three rules.
21 six_over_five_two_more
If an opponent has bid 5, bid 6 when you hold the ace and two other top cards.
an opponent has bid 5 and you hold a strong ace hand (leak report on overcall_ace) +0.10 ± 0.02 (scoring, 20,000 deals) +0.22 ± 0.07 (scoring, 2,000 deals) Dropped: Kept and scored as the first version of rule three, then replaced by the version asking for only one other top card, which bought a further +0.095 on the mining deals.
22 lone_ace_three_pass
Do not bid at all on the ace alone if you also hold the 3 of that suit.
bidding on a lone ace while holding the 3 +0.04 ± 0.04 (mining, 5,000 deals) – Dropped: Borderline again, on the same mining deals as before; retried as pass_lone_ace_three on top of the final rule three.
23 seven_over_six
If an opponent has bid 6, bid 7 when you hold the ace and three other top cards.
an opponent has bid 6 and you hold the ace and three other top cards +0.01 ± 0.01 (mining, 5,000 deals) – Dropped: Too rare to matter.
24 open_five_strong
Unless you are the dealer, open at 5 instead of 4 when you hold the ace and two other top cards.
a strong ace hand opens at 4 and an opponent takes it cheaply at 5 +0.08 ± 0.04 (mining, 5,000 deals) – Dropped: A real gain on the mining deals; retried as open_five_two_more on top of the final rule three.
25 five_over_four_three_tops
If an opponent has bid 4 and you have no ace, still bid 5 with three other top cards.
an opponent has bid 4, no ace, three top cards +0.03 ± 0.04 (mining, 5,000 deals) – Dropped: Not distinguishable from zero; retried as five_over_four_no_ace.
26 six_over_five
If an opponent has bid 5, bid 6 when you hold the ace of your suit and another top card.
an opponent has bid 5, often over your partner's 4, and you hold the ace and another top card +0.20 ± 0.03 (scoring, 20,000 deals) +0.42 ± 0.10 (scoring, 2,000 deals) Kept: The final rule three: asking for one other top card beat asking for two.
27 six_over_five_any_ace
If an opponent has bid 5, bid 6 whenever you hold the ace.
an opponent has bid 5 and you hold only the ace −0.00 ± 0.03 (mining, 5,000 deals) – Dropped: No gain: the ace alone is not enough to bid 6.
28 open_five_two_more
Unless you are the dealer, open at 5 instead of 4 when you hold the ace and two other top cards.
a strong ace hand opens at 4 and an opponent takes it cheaply at 5 +0.08 ± 0.04 (mining, 5,000 deals) – Dropped: A real gain, but the version asking for one other top card did at least as well and matches rule three.
29 pass_lone_ace_three
Do not bid at all on the ace alone if you also hold the 3 of that suit.
bidding on a lone ace while holding the 3 +0.04 ± 0.04 (mining, 5,000 deals) – Dropped: Small and positive again, on the same mining deals as before; retried as skip_lone_ace_three on top of four rules.
30 five_over_four_no_ace
If an opponent has bid 4 and you have no ace, still bid 5 with three other top cards.
an opponent has bid 4, no ace, three top cards +0.03 ± 0.04 (mining, 5,000 deals) – Dropped: Not distinguishable from zero; retried as five_over_four_without_ace.
31 seven_over_six_two_more
If an opponent has bid 6, bid 7 when you hold the ace and two other top cards.
an opponent has bid 6 and you hold the ace and two other top cards +0.01 ± 0.01 (mining, 5,000 deals) – Dropped: Too rare to matter.
32 open_five
If your table competes for the bid: unless you are the dealer, open at 5 instead of 4 when you hold the ace of your suit and another top card.
a strong ace hand opens at 4 and an opponent takes the bid cheaply at 5 +0.15 ± 0.03 (scoring, 20,000 deals) +0.25 ± 0.11 (scoring, 2,000 deals) Kept: With it the four-rule ladder breaks even against the bot's bidding. Its value depends on opponents who compete for the bid; the bot's own valuation calls opening at 5 a mistake.
33 five_over_four_without_ace
If an opponent has bid 4 and you have no ace, still bid 5 with three other top cards.
an opponent has bid 4, no ace, three top cards +0.03 ± 0.04 (mining, 5,000 deals) – Dropped: About +0.03 and not distinguishable from zero on 5,000 mining deals; retried once more as five_over_four_tops_only.
34 skip_lone_ace_three
Do not bid when the ace is your only top card and you also hold the 3 of your suit.
bidding on a lone ace while holding the 3 of the suit (leak reports on open_ace and overcall_ace) +0.04 ± 0.02 (scoring, 20,000 deals) +0.02 ± 0.06 (scoring, 2,000 deals) Kept: Small: about +0.04 on the mining deals whichever rules it was added to (the same 5,000 deals each time, so not independent confirmation), and clear of zero on the scoring deals with basic play. With expert play the gain is not distinguishable from zero.
35 five_over_four_tops_only
If an opponent has bid 4 and you do not hold the ace of your suit, still bid 5 with three top cards.
an opponent has bid 4 and you hold three top cards but no ace (leak report on overcall_ace) +0.04 ± 0.02 (scoring, 20,000 deals) +0.08 ± 0.06 (scoring, 2,000 deals) Kept: About +0.03 on the mining deals whichever rules it was added to (the same 5,000 deals each time, so not independent confirmation) and never clear of zero there; on the 20,000 scoring deals it is clear of zero with both basic and expert play.

Limits

Reproducibility

Every number is a pure function of a deal-set seed and a deal index; rerunning the same command gives the same file. The results were measured against the bot at commit 87df523 and come from the study at commit 013a859, exported 2026-10-06. Two independent code reviews checked the measurement before the final run.