Strategist: an interpretable explicit-policy agent for Guan Dan
Abstract. Guan Dan has an enormous legal action space, yet strong play concentrates in a small decision space — pass, a minimum beater, a decomposition-preserving alternative, or a control exception. Rather than learn that space from sparse self-play reward, the Strategist is a from-scratch, fully interpretable policy built on three pillars: a power-graded hand decomposition under an all-cost value model, an explicit per-state decision machine, and a layered belief engine that separates what is logically impossible from what is merely unlikely. It carries no neural dependency, every move traces to an explicit valuation of control, material, and tribute, and it is measured by seat-balanced, whole-game matches against the published DanZero line.
backend/bots/STRATEGY.mdCode and checkpoints are not yet public — the policy and its weights are still under active optimization. This page documents the design and reports current measurements.
Introduction
The game is won by going out first so the team advances past Ace. Everything reduces to two currencies: tempo — emptying the hand in few plays — and control — holding the lead and dictating the next trick. Every card and combo is valued by how well it serves those two.
Deep-RL agents learn this implicitly from reward, which spends enormous compute on dominated legal actions and produces a policy that cannot be inspected. We take the opposite stance: encode the structure that is known — legality, decomposition, hard public facts — and reserve learning for the residual judgments that genuinely need it. The result is interpretable by construction.
Background & related agents
The Strategist is developed against a ladder of reference agents (the full catalog, with live tournament results, is on the Arena page). Each is a measuring stick rather than a dependency.
Hand decomposition & the all-cost value model
Before a hand can be valued it must be partitioned into combo categories, and the partition is itself a decision: choose the one that maximizes total hand power.
strength(hand) = Σ bomb_value(c) − Σ non_bomb_cost(c)ΔPower — the change in residual strength a play produces — becomes a magnitude signal (how much liability a play sheds), not a sign test. Play/pass and control decisions live in the per-state doctrine, not in the grade.
The explicit decision machine
Every decision is classified into one state, each with its own doctrine. Candidate plays are then chosen by residual comparison — leading, beating, and overtaking all reduce to "pick the candidate that leaves the best residual hand," gated by control.
LEADINGWe hold the table. Open with the lowest member of the best decomposition, conserving higher combos as control reserve; tail-exit and partner-feed leads when the residual supports them.
FOLLOW_PARTNEROur partner controls the trick. Default to passing so they keep the lead, overtaking only when the residual gain clears a fracture/safety threshold — never burning our partner's control for a marginal shed.
BEAT_ENEMYAn opponent controls the trick. Choose pass / minimum beater / decomposition-preserving beater / control play, gated by belief: contest when the beat is provably safe or denies a low opponent, fold when it fractures our hand.
BLOCK / FORCED_BOMBSpecial cases: block a player about to go out, or spend a bomb when the situation forces it. Each is stamped into the play's provenance so a decision can be traced after the fact.
Belief: separating impossible from unlikely
Strength is relative: a combo is only as good as the chance no one beats it. The belief engine is layered so that hard facts (logically certain) are never overridden by soft reads (behavioral, probabilistic). This is the part of the system most directly reused from the published-agent work and the most reusable on its own.
How belief evolves over a hand
Belief is not a single guess — it is a matrix over (combo shape × rank) for every hidden player, and it tightens with every card the table reveals. Two things happen as a hand unfolds. Options are eliminated: a rank plays out, a tribute caps a player's ceiling, or a pass proves they cannot beat a combo — and those cells snap to logically impossible. And confidence shifts: ruling out the high cards a player doesn't hold raises the odds they are sitting on the low ones, so the surviving cells warm or cool. Hard facts clamp; the learned calibrator only colours the cells no deduction can settle.
Only card counts constrain the three hidden hands. Everything else is open.
Tribute as information and optimization
Tribute is both a constraint and a signal. Because the paid card is forced to be the giver's highest, it reveals a hard rank ceiling on that player for the rest of the hand — folded directly into the belief layer. The return is treated as an optimization in its own right: among the engine-legal candidates, the Strategist returns the card that leaves the strongest remaining decomposition, rather than a fixed "lowest card" heuristic.
Evaluation against the DanZero line
The Strategist's primary yardstick is the published DanZero line. We run the released DanZero (DMC) value network as a fixed opponent, and DanZero Augmented — the same network with our corrective overrides — as the strongest DanZero-line player on the ladder. DanZero+ (PPO) is reported to surpass DMC, but its weights were never released — so it appears here as existing work only; we cannot run or benchmark it.
The headline number is whole-game outcome. We play full race-to-Ace games — proper tribute resolution through the bots' own choices, every hand played to completion — and the run is seat-balanced: the Strategist occupies each seat-pair in half the games, so neither side is advantaged by seating. Because Guan Dan is a 2v2 partnership game, we report two metrics: the game win rate (the outcome that actually matters) and, as a finer-grained per-hand signal, the net level change. Each hand, the team with the first player out advances by the standard rule — 1st+2nd is +3 levels, 1st+3rd is +2, 1st+4th is +1 — and the other team gains nothing; we score that as the Strategist team's gain minus the opponents', so a hand is +1/+2/+3 when the Strategist wins it and −1/−2/−3 when the opponents do (range −3…+3, never 0). This deliberately rewards taking first place: a 1st+4th finish (+1) beats a 2nd+3rd one (−1), which a raw finishing-position margin would wrongly call a tie. Both metrics carry 95% confidence intervals over the independent unit (the game), since hands within a game are correlated.
The Strategist sweeps the raw DanZero network 100–0 and still beats DanZero Augmented — the same network plus hand-authored corrective overrides — 99–1, so the result is not an artifact of a weak baseline. It takes first in roughly three of every four hands, and the +1.7-level average means those wins are typically the high-value kind (a well-placed partner, not a bare 1st+4th). Win rate is whole-game outcome; net level change is the per-hand signal. A learned-belief variant is in development and gated the same way; self-play A/B is a secondary check against overfitting to a single adversary.
Belief features are judged by the vs-DanZero result, not the mirror match. Live standings and the full roster are on the Arena page.
Limitations & future work
- Hand-set coefficients. The valuation weights are tuned by self-play but remain hand-set; the goal is to derive them end-to-end.
- Learned value head. An experimental variant replaces the final valuation with a one-ply learned value net, aiming to keep the interpretable policy while adding a learned sense of position.
- Determinized search. Belief-sampled search over the policy is retained as scaffolding for a future fast learned leaf evaluator; the current hand-crafted rollouts are noise-dominated.