Skip to content

core/engine: deferred Contrée table options (documented-only rules) #12

Description

@valmathieu

contree-domain.md §9 catalogues every table option of Contrée with its default
and its scopeconfigurable (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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions