Come bets never travel — they are permanent copies of the Pass Line #28

Closed
opened 2026-08-12 17:39:12 +00:00 by rosa · 2 comments
Owner

A Come bet at a real craps table has its own come-out. Placed while a point
stands, it is settled immediately by the next roll on 7 or 11 (win) and on 2, 3
or 12 (lose); any other total becomes that bet's point, and from then on it
wins when its own point is rolled and loses on a 7. Don't Come is its mirror.
So a player can hold several positions, each waiting on a different number.

Craps here implements neither half. A Come bet is a permanent copy of the Pass
Line: it wins on every 7 or 11 and loses on every 2, 3 or 12, for as long as it
stands, and it never takes a point of its own. A player who places one and then
rolls a 7 wins it — where at a real table, once that bet had travelled, the same
7 would take it.

This simplification is preserved deliberately by #27, which cuts the engine/UI
seam and makes the round terminate. It is much cheaper to fix afterwards: once
the round is a value-returning engine with scripted dice, a travelling Come bet
is a change to how one position settles, and it can be asserted directly. Today
it cannot be reached by a test at all.

Worth settling as part of that work:

  • whether a position carries its own point, or the round holds a point per
    position
  • what happens to a travelling Come bet when the round ends on the shooter's
    point — at a real table it stays up for the next shooter, which this casino
    has no concept of
  • whether Don't Come's bar-12 push follows whatever #27's pay-table commit
    decides for Don't Pass

Related: #27

A Come bet at a real craps table has its own come-out. Placed while a point stands, it is settled immediately by the next roll on 7 or 11 (win) and on 2, 3 or 12 (lose); any other total becomes *that bet's* point, and from then on it wins when its own point is rolled and loses on a 7. Don't Come is its mirror. So a player can hold several positions, each waiting on a different number. Craps here implements neither half. A Come bet is a permanent copy of the Pass Line: it wins on every 7 or 11 and loses on every 2, 3 or 12, for as long as it stands, and it never takes a point of its own. A player who places one and then rolls a 7 wins it — where at a real table, once that bet had travelled, the same 7 would take it. This simplification is preserved deliberately by #27, which cuts the engine/UI seam and makes the round terminate. It is much cheaper to fix afterwards: once the round is a value-returning engine with scripted dice, a travelling Come bet is a change to how one position settles, and it can be asserted directly. Today it cannot be reached by a test at all. Worth settling as part of that work: - whether a position carries its own point, or the round holds a point per position - what happens to a travelling Come bet when the round ends on the shooter's point — at a real table it stays up for the next shooter, which this casino has no concept of - whether Don't Come's bar-12 push follows whatever #27's pay-table commit decides for Don't Pass Related: #27
Author
Owner

This was generated by AI during triage.

Agent Brief

Category: enhancement
Summary: Come and Don't Come bets take a point of their own and travel; the round runs on through point hits and ends only when the shooter sevens out.

Current behavior:

A Come bet is a permanent copy of the Pass Line. It has no come-out of its own
and never takes a point: for as long as it stands it wins on 7 or 11 and loses
on 2, 3 or 12, whichever roll they fall on. Don't Come mirrors that copy,
including a barred 12 that pushes on any 12 rather than only on the bet's own
come-out.

The round ends on the first of three events — a come-out that settles the line,
the shooter hitting the point, or a seven-out — and everything still standing
when it ends is swept to the house. Confirmed by driving a scripted round:

  • With the point on 4 and a Come bet up, two consecutive 5s settle nothing. At
    a real table the first travels the bet to 5 and the second pays it.
  • A seven-out takes a standing Don't Come bet. At a real table a travelled
    Don't Come is paid by that 7 — this is money the house should not be
    collecting.
  • Hitting the point takes a standing Come bet, including one that would be
    sitting on the very number that was hit.

Desired behavior:

Follow the table. A Come bet has two lives, and which one it is in decides what
each total does to it.

Before it travels — the single roll immediately after it is placed, which is
that bet's own come-out:

  • 7 or 11 wins it at even money
  • 2, 3 or 12 loses it
  • any other total becomes the bet's come point, settling nothing

After it travels:

  • its own come point wins it at even money
  • a 7 loses it
  • every other total leaves it exactly where it is, the 7, 11, 2, 3 and 12 that
    would have settled it before it travelled included

Don't Come mirrors this. Before it travels, 2 or 3 wins, 7 or 11 loses, and the
barred 12 pushes. After it travels, a 7 wins it and its own come point loses
it — and it is indifferent to a 12, because the bar applies to a bet's own
come-out and to nothing else.

A player can hold several of these at once, each on a different come point, each
settling on its own.

The round takes the shape a craps round actually has. The shooter keeps the dice
through everything but a seven-out:

  • A come-out roll that settles the line leaves the round running. The next roll
    is another come-out.
  • Hitting the shooter's point settles the line and returns the round to a
    come-out. Positions that have travelled stay up, untouched, and work through
    the new come-out.
  • A 7 rolled while the shooter's point stands ends the round. It is the only
    thing that does.

The sweep goes away rather than moving: a 7 settles every bet this table takes,
so the roll that ends the round leaves nothing standing behind it. No position
is ever taken by the house without the dice having decided it.

Because the round can now outlast any one bet, the player needs a way off the
table. They get one when they have nothing at risk. A position still riding
keeps them there — a Come bet is a contract and cannot be taken down — and they
are never asked to roll with nothing on the table.

Key interfaces:

  • The position type gains the come point it has travelled to, absent until it
    travels. Bet stays a plain proposition carrying no state: it is what
    available_bets() offers the player to pick from and what Display names, so
    a travelled Come bet cannot be a different Bet.
  • Payout should carry the come point the position stood on, so the UI can tell
    a player holding three Come bets which one just settled.
  • Craps::is_finished() becomes true only after a seven-out.
  • The engine needs to report whether anything is still riding, so the UI can
    distinguish a player who may leave from one who may not.
  • The round-ending enum loses its come-out and point-hit variants; a seven-out
    is the only ending left. The rule that a multi-roll position still standing at
    the end of the round loses can be deleted outright, not adjusted.
  • Craps::place and Craps::roll/Craps::settle keep their shapes.
    Craps::with_dice remains the determinism seam per ADR-0002 — every criterion
    below is reachable through it.
  • The engine's header comment already documents the pay table; it should also
    record how long a round runs and why, since craps now stretches the glossary's
    round further than any other game here.

Acceptance criteria:

Travel:

  • A Come bet is settled by the next roll alone on 7 or 11 (wins, even money)
    and on 2, 3 or 12 (loses)
  • Any other total on that roll becomes its come point and settles nothing
  • A travelled Come bet wins when its come point is rolled again
  • A travelled Come bet loses on a 7
  • A travelled Come bet is untouched by an 11 and by 2, 3 or 12 — the totals
    that would have settled it before it travelled now settle nothing
  • A Don't Come bet before it travels: 2 or 3 wins, 7 or 11 loses, 12 pushes
  • A travelled Don't Come bet wins on a 7 and loses on its own come point
  • A travelled Don't Come bet is indifferent to a 12
  • Two Come bets on different come points settle independently, and one can
    win on a roll that leaves the other standing
  • A Come bet whose come point is the shooter's point wins on the roll that
    hits it, alongside the Pass Line

Round shape:

  • A come-out roll of 7, 11, 2, 3 or 12 settles the line and leaves the round
    running, with the next roll a come-out again
  • Hitting the shooter's point settles the line and returns the round to a
    come-out, leaving travelled positions standing
  • A 7 while the shooter's point stands ends the round
  • Nothing else ends it: a scripted round of several point hits and come-out
    naturals is still running until the 7 arrives
  • A Come bet placed on the roll before a seven-out wins on that 7 while the
    Pass Line loses on the same roll
  • Every wager placed in a round is settled by exactly one payout, and no
    payout settles a position the dice did not decide

At the table:

  • The player is offered a way to leave only when nothing is riding
  • The player is never asked to roll with nothing riding
  • The player is told when a Come or Don't Come bet travels, and to what
  • A settled position's announcement names the come point it stood on, so
    several Come bets do not read identically
  • The shooter's point is visible while the round runs
  • Every payout reaches the bankroll and the craps record exactly once, and
    Mister Green still finds a broke player on the way out

Out of scope:

  • Free Odds, behind the line or behind a Come bet
  • Place, Buy, Big Six/Eight, Hardway and the single-roll propositions listed in
    the engine's header comment
  • Offering the Field on the come-out. Real tables take it on every roll and this
    one takes it only under a point — a genuine deviation, but a separate change
  • Offering Come or Don't Come on the come-out
  • Taking a Don't Come bet down, or turning positions off for a come-out
  • A second shooter, or passing the dice
  • What the Pass Line, Don't Pass and Field pay
> *This was generated by AI during triage.* ## Agent Brief **Category:** enhancement **Summary:** Come and Don't Come bets take a point of their own and travel; the round runs on through point hits and ends only when the shooter sevens out. **Current behavior:** A Come bet is a permanent copy of the Pass Line. It has no come-out of its own and never takes a point: for as long as it stands it wins on 7 or 11 and loses on 2, 3 or 12, whichever roll they fall on. Don't Come mirrors that copy, including a barred 12 that pushes on any 12 rather than only on the bet's own come-out. The round ends on the first of three events — a come-out that settles the line, the shooter hitting the point, or a seven-out — and everything still standing when it ends is swept to the house. Confirmed by driving a scripted round: - With the point on 4 and a Come bet up, two consecutive 5s settle nothing. At a real table the first travels the bet to 5 and the second pays it. - A seven-out takes a standing Don't Come bet. At a real table a travelled Don't Come is *paid* by that 7 — this is money the house should not be collecting. - Hitting the point takes a standing Come bet, including one that would be sitting on the very number that was hit. **Desired behavior:** Follow the table. A Come bet has two lives, and which one it is in decides what each total does to it. *Before it travels* — the single roll immediately after it is placed, which is that bet's own come-out: - 7 or 11 wins it at even money - 2, 3 or 12 loses it - any other total becomes the bet's **come point**, settling nothing *After it travels:* - its own come point wins it at even money - a 7 loses it - every other total leaves it exactly where it is, the 7, 11, 2, 3 and 12 that would have settled it before it travelled included Don't Come mirrors this. Before it travels, 2 or 3 wins, 7 or 11 loses, and the barred 12 pushes. After it travels, a 7 wins it and its own come point loses it — and it is indifferent to a 12, because the bar applies to a bet's own come-out and to nothing else. A player can hold several of these at once, each on a different come point, each settling on its own. The round takes the shape a craps round actually has. The shooter keeps the dice through everything but a seven-out: - A come-out roll that settles the line leaves the round running. The next roll is another come-out. - Hitting the shooter's point settles the line and returns the round to a come-out. Positions that have travelled stay up, untouched, and work through the new come-out. - A 7 rolled while the shooter's point stands ends the round. It is the only thing that does. The sweep goes away rather than moving: a 7 settles every bet this table takes, so the roll that ends the round leaves nothing standing behind it. No position is ever taken by the house without the dice having decided it. Because the round can now outlast any one bet, the player needs a way off the table. They get one when they have nothing at risk. A position still riding keeps them there — a Come bet is a contract and cannot be taken down — and they are never asked to roll with nothing on the table. **Key interfaces:** - The position type gains the come point it has travelled to, absent until it travels. `Bet` stays a plain proposition carrying no state: it is what `available_bets()` offers the player to pick from and what `Display` names, so a travelled Come bet cannot be a different `Bet`. - `Payout` should carry the come point the position stood on, so the UI can tell a player holding three Come bets which one just settled. - `Craps::is_finished()` becomes true only after a seven-out. - The engine needs to report whether anything is still riding, so the UI can distinguish a player who may leave from one who may not. - The round-ending enum loses its come-out and point-hit variants; a seven-out is the only ending left. The rule that a multi-roll position still standing at the end of the round loses can be deleted outright, not adjusted. - `Craps::place` and `Craps::roll`/`Craps::settle` keep their shapes. `Craps::with_dice` remains the determinism seam per ADR-0002 — every criterion below is reachable through it. - The engine's header comment already documents the pay table; it should also record how long a round runs and why, since craps now stretches the glossary's round further than any other game here. **Acceptance criteria:** Travel: - [ ] A Come bet is settled by the next roll alone on 7 or 11 (wins, even money) and on 2, 3 or 12 (loses) - [ ] Any other total on that roll becomes its come point and settles nothing - [ ] A travelled Come bet wins when its come point is rolled again - [ ] A travelled Come bet loses on a 7 - [ ] A travelled Come bet is untouched by an 11 and by 2, 3 or 12 — the totals that would have settled it before it travelled now settle nothing - [ ] A Don't Come bet before it travels: 2 or 3 wins, 7 or 11 loses, 12 pushes - [ ] A travelled Don't Come bet wins on a 7 and loses on its own come point - [ ] A travelled Don't Come bet is indifferent to a 12 - [ ] Two Come bets on different come points settle independently, and one can win on a roll that leaves the other standing - [ ] A Come bet whose come point is the shooter's point wins on the roll that hits it, alongside the Pass Line Round shape: - [ ] A come-out roll of 7, 11, 2, 3 or 12 settles the line and leaves the round running, with the next roll a come-out again - [ ] Hitting the shooter's point settles the line and returns the round to a come-out, leaving travelled positions standing - [ ] A 7 while the shooter's point stands ends the round - [ ] Nothing else ends it: a scripted round of several point hits and come-out naturals is still running until the 7 arrives - [ ] A Come bet placed on the roll before a seven-out wins on that 7 while the Pass Line loses on the same roll - [ ] Every wager placed in a round is settled by exactly one payout, and no payout settles a position the dice did not decide At the table: - [ ] The player is offered a way to leave only when nothing is riding - [ ] The player is never asked to roll with nothing riding - [ ] The player is told when a Come or Don't Come bet travels, and to what - [ ] A settled position's announcement names the come point it stood on, so several Come bets do not read identically - [ ] The shooter's point is visible while the round runs - [ ] Every payout reaches the bankroll and the craps record exactly once, and Mister Green still finds a broke player on the way out **Out of scope:** - Free Odds, behind the line or behind a Come bet - Place, Buy, Big Six/Eight, Hardway and the single-roll propositions listed in the engine's header comment - Offering the Field on the come-out. Real tables take it on every roll and this one takes it only under a point — a genuine deviation, but a separate change - Offering Come or Don't Come on the come-out - Taking a Don't Come bet down, or turning positions off for a come-out - A second shooter, or passing the dice - What the Pass Line, Don't Pass and Field pay
Author
Owner

This was generated by AI during triage.

Brief addendum — #35 folded in

#35 specified the same change from the other direction and is closed as a
duplicate of this one. Its criteria are covered by the brief above, bar two,
which are added here.

The open decision #35 raised — what becomes of a Come position still standing
when the round ends — does not survive the round shape this brief specifies.
The round no longer ends on a point hit, so a travelled position is never
orphaned by one: it stays up and works through the new come-out. The only
ending left is a seven-out, and a 7 settles every bet this table takes. There
is nothing standing at the end of a round to decide the fate of.

Additional acceptance criteria:

  • The engine's rules comment no longer describes Come and Don't Come as
    behaving like the two sides of the line. It describes a bet's own
    come-out, the come point it travels to, and what settles it afterwards
  • mise run ci passes
> *This was generated by AI during triage.* ## Brief addendum — #35 folded in #35 specified the same change from the other direction and is closed as a duplicate of this one. Its criteria are covered by the brief above, bar two, which are added here. The open decision #35 raised — what becomes of a Come position still standing when the round ends — does not survive the round shape this brief specifies. The round no longer ends on a point hit, so a travelled position is never orphaned by one: it stays up and works through the new come-out. The only ending left is a seven-out, and a 7 settles every bet this table takes. There is nothing standing at the end of a round to decide the fate of. **Additional acceptance criteria:** - [ ] The engine's rules comment no longer describes Come and Don't Come as behaving like the two sides of the line. It describes a bet's own come-out, the come point it travels to, and what settles it afterwards - [ ] `mise run ci` passes
rosa closed this issue 2026-08-15 14:42:04 +00:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rosa/casino#28
No description provided.