You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
contree-domain.md §9 catalogues every table option of Contrée with its default
and its scope — configurable (a knob the software is meant to expose), documented only (a genuine table variant, recorded for completeness and
deliberately left unimplemented), or interface aid.
This is the umbrella for the documented only rows. Each is a real variant
someone plays somewhere; none is on the critical path. One checklist row per
rule, each with its §9 reference, its default, and what implementing it would
touch — split a row off into its own issue when its turn comes.
Deferred rules
Winning games required — §9.1, default 1. A Match loop sitting
above Game: the game already ends at the target score, so this is a
per-team game counter plus an end-of-match screen. Nothing in contrai-core moves.
Deal pattern — §9.3, default 3-2-3 (alternatives: 4-4 Corsica,
2-3-3, 3-3-2). Deck.deal takes the group sizes as data instead of
hard-coding 3-2-3; pure contrai-core, the engine only forwards the
setting.
Six-card auction deal (à la stéphanoise) — §9.3, default off.
Splits the deal in two around the auction, so Round gains a second
dealing step and every bidding heuristic in AiPlayer has to be
re-scaled: the expert table is 8-card-shaped and does not transfer to a
6-card hand.
5-point bid increments — §9.4, default off. Legal only
alongside the six-card auction deal, hence nested here. ContractBid.VALID_VALUES becomes config-derived rather than a class
constant, which widens the action space for every future learner.
Same dealer redeals after an all-pass — §9.3 / §5.4, default off.
One branch on the redeal path, where the dealer simply does not rotate.
The smallest item on this list.
Forced dealer bid (à la vache) — §9.4, default off. Auction.legal_actions drops PassBid for the dealer once the three
players before them have passed. It also makes an all-pass auction
impossible, so the annulled-round path is unreachable while it is on —
worth a test that pins that.
Nullo contract (misère — take fewer than 11 points) — §9.4, default off. A new Bid subclass with its own precedence rules, its own
made/failed predicate in score_round, and an inverted card-play
strategy for the AI. By far the largest of these.
King announced first for Belote — §9.5, default off. The belote
tracking in Round already observes both cards in play order, so this is
a predicate change on when the announcement counts, not new plumbing.
Why this is not urgent
None of these blocks the configuration architecture. That architecture is being
built around the configurable rows of §9; each rule above is then one more RuleConfig field plus the behavior behind it, added independently and at
whatever point it becomes interesting.
contree-domain.md§9 catalogues every table option of Contrée with its defaultand its scope —
configurable(a knob the software is meant to expose),documented only(a genuine table variant, recorded for completeness anddeliberately left unimplemented), or
interface aid.This is the umbrella for the
documented onlyrows. Each is a real variantsomeone plays somewhere; none is on the critical path. One checklist row per
rule, each with its §9 reference, its default, and what implementing it would
touch — split a row off into its own issue when its turn comes.
Deferred rules
Matchloop sittingabove
Game: the game already ends at the target score, so this is aper-team game counter plus an end-of-match screen. Nothing in
contrai-coremoves.2-3-3, 3-3-2).
Deck.dealtakes the group sizes as data instead ofhard-coding 3-2-3; pure
contrai-core, the engine only forwards thesetting.
Splits the deal in two around the auction, so
Roundgains a seconddealing step and every bidding heuristic in
AiPlayerhas to bere-scaled: the expert table is 8-card-shaped and does not transfer to a
6-card hand.
alongside the six-card auction deal, hence nested here.
ContractBid.VALID_VALUESbecomes config-derived rather than a classconstant, which widens the action space for every future learner.
One branch on the redeal path, where the dealer simply does not rotate.
The smallest item on this list.
Auction.legal_actionsdropsPassBidfor the dealer once the threeplayers before them have passed. It also makes an all-pass auction
impossible, so the annulled-round path is unreachable while it is on —
worth a test that pins that.
off. A new
Bidsubclass with its own precedence rules, its ownmade/failed predicate in
score_round, and an inverted card-playstrategy for the AI. By far the largest of these.
tracking in
Roundalready observes both cards in play order, so this isa predicate change on when the announcement counts, not new plumbing.
Why this is not urgent
None of these blocks the configuration architecture. That architecture is being
built around the
configurablerows of §9; each rule above is then one moreRuleConfigfield plus the behavior behind it, added independently and atwhatever point it becomes interesting.