thejayman77 dc136b7ecc Route every call-resolving path through canonicalCall
Direct calls were canonicalised last commit, but the two downgrade paths inside
the BET/RAISE branch still built Action(CALL, toCall) with the unclamped amount:
an illegal raise falling back to a call, and a player barred from re-raising
after an incomplete all-in. A short stack there recorded chips that never moved.

That path matters more than the direct one — it is where malformed agent output
lands, which is precisely what an LLM will produce once the persona layer exists.

All three now go through one canonicalCall(seat, toCall). There is exactly one
construction of a CALL action left in the file, which is the point: three copies
of this rule is how it went wrong twice.

Regressions for both paths, each verified to fail with only its own path
reverted — recording 90 instead of 30, and 30 instead of 20.

Tests: 150 -> 154 (69 engine JVM, 69 Android host, 16 app). Simulation figures
unchanged (289.12 / 113.19 / -195.64), chips conserved.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 22:08:01 -04:00
2026-07-25 17:23:34 -04:00
2026-07-25 17:23:34 -04:00
2026-07-25 17:23:34 -04:00
2026-07-25 17:23:34 -04:00
2026-07-25 17:23:34 -04:00
S
Description
No description provided
5.2 MiB
Languages
Kotlin 89.4%
HTML 10.3%
Shell 0.3%