Repository navigation
0.9.0
The bidding release
This release turns pons into a bidding-system authoring stack: a constraint vocabulary for writing a pair's notes as code, a complete Two-over-One Game Forcing card built on it, and an "instinct" floor so a bound system always has a sane natural answer — measured at about +0.5 IMPs/board against its own absence.
Highlights
- Bidding core. Composable
Constraints (hcp,len,support, stoppers, seats, vulnerability — combined with&,|,!), orderedRuleswithexplain("why did you bid that"), guarded trie fallbacks with rebase (system on over their double is one rule, not a copied subtree), role-awareConstructive/Competitive/Defensivebooks assembled into aPairand bound against the opponents'Familyas aStance, and the absolute-seatTabledriver that bids out whole boards. - A complete 2/1 card.
two_over_one()covers openings through slam: 2/1 game-force continuations, the forcing 1NT, Jacoby 2NT, splinters, inverted minors, the strong 2♣ structure, Ogust, RKCB 1430 with the 5NT king ask, full competition (cue-bid raises, negative/support/responsive doubles, Michaels and the unusual 2NT), and a defensive book including defense to weak twos. - The instinct floor.
bidding::instinctanswers every off-book auction with a natural call — it never passes partner's live takeout double, completes standard transfers, and bids forced games opposite our strong notrump. Floor activations are observable viaStance::classify_with_provenance, ranking which auctions to author next. - Strawberry 2/1 variant. Opt-in
two_over_one_strawberry()layers three conventions from the author's Strawberry Polish Club notes onto the same core: Strawberry Stenberg 2NT, BTU responses to the strong 1NT, and Rubens (transfer) advances. - Scoring & simulation. New
scoringmodule (final_contract,ns_score,imps) shared by every harness, plusTable::bid_out_fromfor seeding an auction prefix and letting the systems finish the board. - Examples.
practice-bidding(sit at the table against the bots, with double-dummy verdicts),instinct-floor(the A/B match behind the +0.5 IMPs number), and a rebuiltdefend-2sx-or-3nt(realistic four-gate population, bid-out continuations, per-flavor regret vs a double-dummy oracle).
Breaking changes
Partnershipis replaced byPair+Stance; book routing is three-way viaPhase::of, and competition over our openings moves out of the constructive trie.- The vulnerability-indexed
Forest([Trie; 4]) andSeatClassesare removed — vulnerability lives in constraints, seats in leading-pass keys. Classifier::classifynow takes(Hand, &Context).stats::average_ns_partakescontract_bridge::AbsoluteVulnerability(wasddss::Vulnerability).- Minimum
contract-bridgeis 0.1.2 (forAuction::can_push).
Full details in the changelog. Compare: 0.8.0...0.9.0.