// Transmissions — What We Shipped
A 259,599-parameter net that turns 86 numbers about a poker situation into an action, a bet size and a value estimate, in about a millisecond on a CPU. This documents what it is, every idea it rests on, and how to rebuild the whole thing from an empty machine.
CFR, regret, abstraction, Deep CFR, PPO — every idea the system uses
The milestone ladder, each with its gate, in rebuild order
The served net: 86 features, three heads, and the exact contract
From an empty machine to a serving champion, step by step
Hiss plays no-limit Texas hold'em by reading a table off a phone screen, turning what it sees into a fixed-length vector of 86 numbers, and asking a neural network what to do. The network is a blueprint: it has already been trained to approximate good play and does no searching at decision time, because the decision budget is milliseconds on a CPU that is simultaneously running computer vision for several handsets. Everything in this documentation exists to answer one question — how do you get a net whose blueprint is worth trusting?
The system has been built along two independent paths that meet at the same serving contract. Understanding that they are different is the single most useful orientation.
| Track A — imitation & RL | Track B — game theory | |
|---|---|---|
| Idea | Copy good play, then improve it by trial | Approximate an equilibrium from first principles |
| Methods | Behavioural cloning → PPO | CFR → Deep CFR → distillation |
| Needs | A teacher or a reward signal | A simulator of the rules |
| Fails by | Inheriting the teacher's mistakes; over-fitting the opponents it trained against | Abstraction error; cost; being unexploitable but not maximally profitable |
| Milestones | The live AIL/PPO cycle | M0 → M6 |
An equilibrium policy is hard to beat but does not exploit: it wins little from bad players because it is not trying to. An imitation/RL policy exploits well but drifts toward whatever it was trained against — and self-play opponents that never fold will teach a net to be a maniac. The practical answer is to use the game-theoretic track for the shape of the policy and the RL track for adaptation, with a gate that only promotes on measured money against realistic opponents.
End to end, live, on every hand:
mu and
sd vectors saved beside the weights, so the net sees the same distribution it was
trained on.Guardrails exist because a net can be excellent in general and reliably wrong in a specific spot. But a guardrail that overwrites the net also hides it: when a preflop rail overrode the net on roughly three quarters of preflop decisions, most challengers scored exactly +0.00 against the champion, because the two models were never allowed to differ. A gate measuring a policy that never plays is measuring nothing. Always report how many decisions a treatment actually changed.
Three different measurements, and they answer different questions:
| Measure | Question it answers | Limit |
|---|---|---|
| Exploitability | How much could a perfect opponent win from me? | Only computable exactly in small games |
| LBR | How much can a simple, greedy opponent win? | A lower bound — safe to trust in one direction only |
| bb/100 | How much money does it actually win, per hundred hands? | Enormously noisy; needs tens of thousands of hands |
The last one is the arbiter, because it is the only one denominated in the thing that matters — but it is also the one that most readily lies. Variance in poker is large enough that a losing policy can outperform a winning one over thousands of hands, which is why every promotion decision here is a confidence interval rather than a comparison of two numbers.
Next — every concept the system uses →
Hiss NN — the poker network, its training ladder and its serving contract. Written so the whole thing can be rebuilt from an empty machine. Figures are from the live system, not from the plan; where the two disagree the plan is annotated.