2026-07-18
Mexican Train dominoes is commonly played under two incompatible victory conditions: points (lowest pip total when the round ends) and go-out (first player to empty their hand). This paper describes the development, calibration, and empirical validation of AI agents for both objectives in Warp 12, an open-source Mexican Train implementation. We introduce the Tactical Effectiveness Index (TEI), a dual-track OpenSkill-based rating system with gamified grade display, anchored to fixed AI reference tiers.
Empirical results from thousands of self-play games show that skill ordering is stable under the points objective (consistent rating gaps between tiers), while go-out exhibits higher variance and compressed skill gaps. We demonstrate that search algorithms provide different advantages depending on context: expectimax wins in 2-player points (64% vs heuristics), while ISMCTS excels in 4+ player go-out (31% vs 23% baseline).
A 274,500-game points self-play
campaign across 549 configuration cells (4 Warp factors
every legal fleet size
module configs, with Zeta only on eligible even fleets) is the
skill/luck instrument for board choice and points-module
taxonomy. From the baseline cells alone we
find that skill expression increases with both tile set size and
player count, contradicting the intuition that larger games
devolve into luck, and that Warp factor 12 is the empirically optimal
choice for competitive rating. Across the full points matrix, most
optional modules preserve the baseline skill ceiling; Module
Iota (Double Down) slightly raises it. Module Epsilon
(Drafting) collapses it (1.08/4 indicators) —
counter-intuitively, choosing your hand makes outcomes more
luck-dominated mid-game — and is therefore designated Warped /
party. Module Zeta (Squadrons) also preserves
skill (2.94/4); it never writes free-for-all (FFA) TEI — rated Warp 12
crew sectors update a dedicated Squad TEI track
(squadRating) after team-track calibration
(SQUADRONS_RATING_CALIBRATED), not because Zeta is
luck-dominant.
A separate 255,500-game go-out campaign (511 cells; Epsilon omitted) evaluates go-out module forks (Salamander Surge, Trail Momentum, Desperation Dig, Hand Exchange, Hot Potato pass). Those mechanics are not apples-to-apples with points; we report them in their own figures and do not merge averages across objectives except in one deliberate shared-ID contrast plot.
Finally, we report on Class , a neural self-play agent that achieves parity with heuristic baselines in small games and outperforms in large fleets. All code, data, and reproduction scripts are available as open source.
Mexican Train is a popular multi-player domino game typically played with a double-twelve set (91 tiles with pips ranging from 0 to 12). Players build linear sequences called trains from a central engine (starting double), attempting to minimize their hand’s pip count. The game features both private trains (one per player) and a shared public train (the “Mexican Train” or Neutral Zone), creating strategic tension between building one’s own position and blocking opponents.
Unlike classic domino games with a single win condition, Mexican Train is commonly played under two incompatible objectives:
Points campaign: Play continues for multiple rounds (descending from engine double-12 down to double-0). After each round, players accumulate penalty points equal to the pips remaining in their hand. Lowest cumulative score after all rounds wins.
Go-out: The first player to empty their hand wins immediately, ending the round.
These objectives create fundamentally different strategic games on the same rules engine: points rewards consistent pip minimization and flexible play across many turns, while go-out rewards tempo, connectivity, and race dynamics.
This paper describes work conducted in the context of Warp 12, an open-source Mexican Train implementation with a Star Trek-themed presentation layer. Throughout this paper, we use standard Mexican Train terminology in formal discussion, but introduce Warp 12’s thematic terminology where relevant to implementation details. The table below provides a complete mapping.
@lll@ Mexican Train & Warp
12 & Technical
Domino / tile & Navigational Coordinate &
Coordinate
Engine (starting double) & Spacedock & engine
Player’s private train & Warp Trail &
ownTrail
Mexican Train (public) & Neutral Zone &
neutralZone
Train marker / forced play & Distress Beacon &
beacon / shieldsDown
Unsatisfied double & Red Alert & redAlert
Draw pile & Uncharted Sectors & pile
Player & Captain & PlayerId
Skill rating & TEI grade & TeiDisplay (E/V/C/I/P +
0–99)
Underlying skill & OpenSkill
& PlayerRating
Game table & Sector / Fleet & game
Easy AI & Class IV (Ensign) & ensign
Medium AI & Class III (Lieutenant) &
lieutenant
Hard AI & Class II (Commander) & commander
Expert (human only) & Class I & High TEI score / low
Warp factors refer to the maximum pip value in the domino set: Warp 9 (W9) uses double-nine tiles (55 tiles total), Warp 12 (W12) uses double-twelve (91 tiles), etc. Throughout this paper, we use compact notation WX/Yp to denote configurations: W12/4p means Warp factor 12 (double-twelve) with 4 players. This paper focuses on W12 as the primary rated configuration, with analysis of W9, W15, and W18 in Section 8.
Despite Mexican Train’s popularity, it remains under-studied in the game AI literature compared to chess, Go, or poker. Several challenges make it interesting for AI research:
Imperfect information: Opponent hands and draw pile order are hidden, requiring belief-state reasoning rather than perfect-information tree search.
Multi-player dynamics: Unlike 2-player zero-sum games, Mexican Train typically involves 3–8 players with complex coalition and blocking incentives.
Dual objectives: The same rule set produces two strategically distinct games depending on win condition.
Stochastic elements: Random draws from the pile, variable starting hands, and opponent action uncertainty all contribute to outcome variance.
For online play, these challenges create practical design questions: How do we measure player skill fairly? How do we provide appropriately challenging AI opponents? How do we ensure coaching tools don’t contaminate competitive ratings?
This paper makes the following contributions:
Dual-track TEI rating system — We describe an OpenSkill-based rating with independent tracks for points and go-out objectives, anchored to fixed AI reference tiers rather than floating human populations. The system uses Bayesian inference with skill estimates and presents ratings as gamified grades (E/V/C/I/P + 0-99 score).
Self-play calibration methodology — We present a systematic approach to validating AI skill levels through tier-vs-tier matrices, symmetric seating tests, and multi-player focus matchups.
Empirical objective comparison — Through thousands of self-play games, we demonstrate that points calibrates cleanly with consistent rating gaps between tiers, while go-out exhibits compression and higher variance due to its racing mechanics.
Search algorithm analysis — We show that different search methods (expectimax, ISMCTS) provide advantages in different contexts: expectimax excels in 2-player points (64% win rate), while ISMCTS works better in 4+ player go-out (31% vs 23% baseline).
Luck vs skill and module integrity — A 274,500-game points matrix (549 cells) measures skill expression across Warp factors, fleet sizes, and module configs for TEI taxonomy. A separate go-out matrix (255,500 games / 511 cells) evaluates forked go-out modules without conflating averages. Baseline cells justify rating W12; Iota slightly raises the points ceiling; Epsilon collapses it (Warped/party); Zeta preserves skill and rates on a dedicated Squad TEI track (never free-for-all / FFA).
Neural self-play agent (Class ) — We demonstrate that a pure self-play neural policy can achieve competitive performance (parity in small games, advantages in large fleets) without hand-crafted heuristics, and discuss the challenges of mapping training performance to appropriate rating anchors.
Open-source implementation — All code, data, and reproduction scripts are available through the warp12-engine package and associated repositories.
This section briefly surveys prior work in domino game AI, game AI paradigms relevant to Mexican Train, and skill rating systems. We identify the specific gap this work fills.
Domino games have received limited attention in the game AI literature compared to board games like chess and Go or card games like poker. Most prior work focuses on simpler variants like straight dominoes or block dominoes, which lack Mexican Train’s multi-player train mechanics and dual objectives. The DoubleEighteen rendering library provides visualization for domino games but does not include AI agents. To our knowledge, this is the first published calibration study of AI agents for Mexican Train specifically.
Several AI approaches are relevant to imperfect-information multi-player games like Mexican Train:
Heuristic policies: Hand-crafted evaluation functions and decision rules remain competitive in many domains, especially where interpretability matters for player trust and coaching features. Our Class IV–II agents follow this tradition with weighted heuristics for pip dumping, trail pressure, and blocking.
Monte Carlo Tree Search (MCTS): MCTS and its variants have achieved strong results in perfect-information games (Go, Hex) and some imperfect-information settings. Information Set MCTS (ISMCTS) handles hidden information by sampling determinizations and maintaining search trees over information sets rather than individual states. We use ISMCTS for our Fleet Admiral and Class + search backends.
Deep reinforcement learning and self-play: The AlphaZero family demonstrated that pure self-play with neural networks can surpass human expertise in chess, Go, and shogi. However, these successes required massive computational resources and perfect information. Our Class agent represents a more modest self-play approach suitable for imperfect-information games with limited training compute.
Counterfactual regret minimization: CFR and its variants have achieved superhuman performance in poker , another imperfect-information game. However, CFR typically requires extensive offline precomputation and works best in 2-player zero-sum settings, making it less applicable to multi-player cooperative-competitive games like Mexican Train.
Several rating systems are widely used in competitive games:
Elo rating : Originally developed for chess, Elo computes expected win probabilities based on rating differences and updates ratings based on actual outcomes. It assumes transitive skill relationships and works best for 2-player zero-sum games.
Glicko : Extends Elo by modeling rating uncertainty (RD), allowing ratings to drift during inactivity periods and providing confidence intervals.
TrueSkill : Microsoft’s rating system extends to multi-player and team games using Bayesian inference. It models each player’s skill as a Gaussian distribution and updates beliefs after each match.
OpenSkill: An open-source implementation of rating systems inspired by TrueSkill and Weng-Lin ranking , designed for multi-player and team-based games. Like TrueSkill, it uses Gaussian skill models with mean () and standard deviation () parameters, updated through Bayesian inference. We adopt OpenSkill as the foundation for TEI due to its multi-player support, open implementation, and flexible team rating capabilities.
Most online game platforms (Chess.com, Lichess, etc.) use Elo or Glicko variants. Some platforms that offer AI opponents (e.g., Lichess’s Stockfish bots) provide fixed rating estimates for bot difficulty levels, similar to our TEI anchor approach. However, we are unaware of prior work that systematically calibrates and validates AI skill tiers through self-play specifically for the purpose of providing stable rating anchors.
This work makes several novel contributions relative to the existing literature:
Dual-objective calibration: We systematically compare points and go-out objectives on the same rules engine, showing empirically that they require different strategic optimization and exhibit different skill/variance tradeoffs.
Fixed AI reference anchors: Rather than deriving ratings entirely from human populations (which can drift over time), we anchor rating bands to validated AI tiers with measured performance characteristics.
Multi-player self-play methodology: Most game AI calibration focuses on 2-player matchups. We include 3–8 player configurations and focus matchups (one strong player vs multiple weaker opponents) to validate skill expression in realistic play scenarios.
Luck vs skill empirics: The points module matrix (Section 9) measures how tile set size, player count, and optional modules affect skill expression for TEI — including Warped/party designation for Epsilon. The go-out module matrix (Section 10) is a separate instrument for forked go-out modules.
Open-source implementation: All code (rules engine, AI agents, calibration scripts) and data are publicly available for reproduction and extension.
Mexican Train follows standard multi-trail domino game mechanics:
Setup: All players draw a fixed hand size (typically 15 tiles for 2–4 players, fewer for larger games). The engine double (e.g., 12-12 for Warp 12) is placed in the center. Remaining tiles form the draw pile.
Turn structure: On each turn, a player must play one tile that matches the open end of any available train (their own, another player’s with a marker, or the public Mexican Train). If unable to play, they draw one tile from the pile and may play it immediately if legal.
Doubles: When a double is played, it must be “satisfied” (another tile played on it) before anyone can play elsewhere. This creates a Red Alert state that forces immediate resolution.
Train markers: When a player cannot play on their turn, they place a marker on their train, making it public for one round. In Warp 12 terminology, this is called a Distress Beacon and the state is Shields Down.
Mexican Train: The public train is always available to all players, providing a release valve when private trains are blocked.
Round end: A round ends when a player empties their hand (go-out objective) or when the pile is exhausted and no legal plays remain (points objective).
Our implementation models the game as an immutable state machine with pure functions:
State: Readonly data structures
(GameState, RoundState,
TableState) containing all game information: player hands,
visible tiles, pile size, train states, alert conditions.
Actions: Typed events (PlayAction,
DrawAction, etc.) representing legal moves.
Transitions: Pure function
applyAction(state, action) -> newState implements all
rules.
Legal moves: Function
getLegalMoves(state, playerId) -> Action[] computes all
valid plays for the current state.
This design ensures that AI agents, human players, and replay validation all use identical game logic. No special-case code paths exist for AI vs human play.
Beyond core rules, Mexican Train has many common variants. Warp 12 implements these as runtime configuration rather than hard-coded variants:
House rules (boolean toggles):
requireOwnTrailFirst: Must play on own train before
playing elsewhere
neutralZoneAfterAllTrails: Mexican Train only
available after personal train started
dropToImpulse: “Uno”-style announce requirement when
down to one tile
Modules (optional mechanics; Warped = exhibition only, never free-for-all rated):
Alpha (Continuum): Special rules for 0-0 tile (Q-gamble mechanic)
Beta (Salamander Penalty): Pip penalty for
holding the highest double (maxPip-maxPip) at
round end — double its both-ends value (Warp 12: 12-12
48; Warp 18: 18-18
72)
Gamma (Sensor Grid): Visible tile pool for potential recycling
Delta (Warp Drive Spool): Hazard marker transfers on Neutral Zone play
Epsilon (Drafting): Pack-and-pass deal — Warped / party (collapses mid-game skill)
Zeta (Squadrons): Team play with shared trails — skill-promote; rated Warp 12 writes Squad TEI only (never FFA)
Eta (Temporal Debt): Draw-debt tokens paid at round end
Theta (Longest Trail): Bonus for longest personal train
Iota (Double Down): Playing a double forces next player to draw 2 — best skill ceiling
Kappa (Temporal Inversion): Even rounds invert scoring — Warped (intentionally breaks ordering)
Lambda (Wormholes): Double on Neutral Zone swaps trails
Mu / Subspace Fracture: Chicken-foot doubles (Own Trail / All Captains / All Doubles)
All modules affect legal move generation and scoring through the same
applyAction code path, ensuring AI agents see exactly the
same game mechanics as human players. Product classification (Promote vs
Warped) is grounded in the Section 9 study.
Mexican Train is an imperfect information game:
Public information: All played tiles on trains, player hand counts, draw pile size, train marker positions, active Red Alert doubles
Hidden information: Contents of opponent hands, order of tiles in draw pile
This differs fundamentally from perfect-information games like chess or Go, where optimal play can theoretically be computed through exhaustive search. In Mexican Train:
Belief states: Agents must reason about probability distributions over possible opponent hands and pile orderings, not a single deterministic state.
Determinization: One common approach samples possible hidden states consistent with observations, then searches forward in each determinized world. However, this can lead to strategy fusion where different opponent hand distributions should lead to different plays.
Information set search: Methods like Information Set Monte Carlo Tree Search (ISMCTS) explicitly handle information sets, avoiding some determinization pitfalls.
The combination of hidden information, multi-player dynamics, and stochastic draws makes Mexican Train significantly more complex than its simple rules suggest, and prevents the existence of a "solved" optimal strategy comparable to checkers or Connect Four.
The choice of victory condition fundamentally changes optimal strategy:
| Dimension | Points | Go-out |
|---|---|---|
| Win condition | Lowest pips at round end | First empty hand |
| Horizon | Multi-round campaign (1–13) | Often single-round race |
| Core skill | Pip shedding, blocking, flexibility | Tempo, connectivity, mayhem |
| Variance | Lower | Higher |
| Search benefit | Modest at 2p; expectimax depth 4 64% | Helpful at 2p; ISMCTS 31% /4p |
| AI gaps (anchors) | 8.5 / 8.5 (IVIIIII) | 10.5 / 13.5 (wider to fight compression) |
In the points objective, players accumulate penalty points over 13 rounds, rewarding consistent pip minimization and defensive blocking. The multi-round horizon allows recovery from bad draws and rewards strategic flexibility.
In the go-out objective, the first player to empty their hand wins immediately. This creates race dynamics where tempo and hand connectivity matter more than pip values. A player holding three 12-12 doubles might still win if they can chain them quickly.
Figure 1 shows empirically that these objectives lead to measurably different strategic landscapes: go-out compresses implied relative to the calibrated anchors, while skill ordering survives.
Candidate generation from legal moves + special actions. Weighted heuristic scoring + temperature + blunder rate. Optional determinized lookahead: sample hidden hands consistent with counts forward simulate in engine.
Points presets: pip dump, trail pressure, Red Alert
safety, Q timing. Go-out presets: sprint heuristics
(goOutWin, goOutFeasibility, block leader,
avoid mayhem). Separate goOutTuning thresholds per
tier.
Lookahead baked into tier, not user-toggle — keeps TEI comparable across clients. Class II go-out: depth 2 at 2 players only; greedy at 3+. Class II points: greedy at all sizes — Commander is a local maximum in 2p points (ISMCTS 51% at 1,000 games; see §4.6). Monte Carlo Tree Search with determinization provides the search foundation for our lookahead implementations.
Class II profile, blunder rate 0, lookahead on. Explainability:
explainWarpAiAction, turn-resolution hints.
Unassisted-only TEI — advisor use tracked separately.
Move ratings and reasons are generated by the explainable
heuristic Commander scorer; the suggested alternative (“advisor
would play”) uses the Commander neural policy
()
when available, but falls back to the module-aware heuristic
coach on rounds where an active module distorts scoring
(e.g. Module Kappa’s inverted rounds, where the module-blind net would
wrongly recommend going out).
TEI is a presentation layer over OpenSkill : each captain stores a Gaussian skill estimate per track (points / go-out), updated after ranked match outcomes. Defaults for new humans: , (OpenSkill’s prior). Matchmaking uses an ordinal ; the UI never exposes raw Elo integers.
FFA means free-for-all: every
captain is an individual competitor in the OpenSkill update (solo vs AI
or online human-pool tables). Those outcomes write the per-captain FFA
ladder stored as humanRating. Squad TEI is
the opposite track — Module Zeta crews rate as teams via
updateTeamRatings into squadRating and never
update FFA humanRating.
Rated local and online play pits humans against fixed AI opponents. Each AI class holds a frozen that never updates with match outcomes:
| Track | Ensign (IV) | Lieutenant (III) | Commander (II) | |||
|---|---|---|---|---|---|---|
| 2-3(lr)4-5(lr)6-7 | ||||||
| Points | 18.0 | 4.0 | 26.5 | 3.5 | 35.0 | 3.0 |
| Go-out | 17.5 | 4.5 | 28.0 | 4.0 | 41.5 | 3.5 |
v1 vs v2 Class II: product history distinguished heuristic Commander (v1) from neural Class Commander (v2). Shipping Class II is the policy at the Commander commission; stored human tuples are not re-banded when the Commander implementation changes — only the fixed AI anchor row is.
Calibration rule of thumb: place Commander near where a human of comparable TEI score wins 50% in the table sizes you actually rate (Warp 12 solo play is mostly 2–4). Fleet-mean fair-share against legacy Commander is a promotion metric, not a direct .
After a sector, ranks feed updateFFARatings
(free-for-all individual tables), updateTeamRatings (Zeta
squads), or updateVsAI (openskill.js Bayesian update).
Humans move; AI anchors stay fixed. Separate tracks: objective
(human profile / FFA vs squad). No Elo
-factor
schedule.
Players see a gamified string such as V67:
Letter (E/V/C/I/P) — confidence from : Elite (), Veteran (), Consistent (), Improving (), Provisional (). Demotions use unidirectional hysteresis so a single noisy sector does not immediately drop the letter.
Score (0–99) — normalized conservative skill over a population window , preventing new-player inflation.
Federation Academy commission ranks (CadetFleet Admiral) are a flavor map over the same grade+score; they are not a second rating.
Go-out compresses; percentile (“Top X%”) preserves rank meaning alongside the grade badge.
One-time starting grade pick per track within a provisional / improving band.
playSelfPlayGame drives full games through
applyAction. Blocked-round stall guard for pile-empty
lockups (drafting phases are exempt — mid-draft force-ends previously
corrupted Spacedock recycle).
Head-to-head matrix — all Class IV–II pairs, both objectives (OpenSkill calibration: 2,000 games/matchup).
Symmetric seating — same-skill first-seat win rate 50%.
Focus matchups — one strong captain vs weaker; rotate seat; table sizes 3–8 (go-out).
House-rule sanity — e.g. Drop to Impulse penalty
pass (calibrate:ai-tei-dti).
Module integrity — 500 games Warp fleet module (§9).
Completion rate ( 85% games decisive). Higher-skill win rate vs ordering thresholds. Implied from weaker-side win rate under the OpenSkill logistic. Expected win rate from calibrated anchor gaps (target 76% / 91% for successive / skip tiers). Skill-indicator count (0–4) for module balance.
See docs/openskill-calibration-log.md for dated
OpenSkill self-play runs and calibration-log.md for legacy
heuristic benches.
Anchors: Ensign , Lieutenant , Commander ( ).
Ensign vs Lieutenant: Ensign wins 15.7% (expected 11.5% at ) — ordering clear.
Lieutenant vs Commander: Lieutenant wins 36.3% (expected 11.5%) — weakest separation; accepted for multiplayer domino compression.
Ensign vs Commander: Ensign wins 9.2% (expected 1.7%) — overall skip-tier separation remains useful.
Anchors: Ensign , Lieutenant , Commander ( ; gaps ).
Weaker-side win rates remain 38–44% despite wide gaps — racing and binary outcomes dominate.
Decision: accept compression; preserve ordering; lean on percentile boards for human feedback.
Neural residual (MLP - Class I*):
v1 (go-out): 48.6% win (500g, 2p).
v2 (points): 97.6% top-1, 1.4% flip, 51% win — Commander clone.
v3 (RL regret): 49.2% win — parity persists.
Fleet Admiral (Search):
Expectimax: 64.4% points 2p, 55.8% go-out 2p vs Commander (500g each).
ISMCTS (1,500 games): 51.1% combined in 2p points (dead heat); 31.2% sector wins in 4p go-out vs 22–23% per greedy Commander seat.
Class (Self-Play Class II):
2-Player: Points parity with legacy Commander; go-out seat-symmetric noise (one soft seat is not a shipping blocker).
Fleet (3–8p): Points fair-share rises with table size (peak 1.7 at 7–8p); go-out milder (1.0–1.5 by slice). Overall means 1.38 points / 1.14 go-out at 200g/slice.
Ship decision: replace heuristic Class II with greedy ; keep Commander as the commission track; hold + and Class I* off the rated ladder.
Lesson: fairShare
win rates at large
inflate mean strength vs what heads-up TEI players feel — temper anchors
for the rating context you ship.
While Sections 6–7 calibrate AI tiers at a fixed Warp factor (double-12), Warp 12 ships with four playable Warp factors (9 / 12 / 15 / 18), each supporting different fleet sizes:
| Warp Factor | Max Pip | Fleet Limit | Tiles | Rated? |
|---|---|---|---|---|
| W9 | 9 | 2–4 players | 55 | Exhibition |
| W12 | 12 | 2–8 players | 91 | Rated (TEI) |
| W15 | 15 | 2–12 players | 136 | Exhibition |
| W18 | 18 | 2–18 players | 190 | Exhibition |
Players and designers routinely ask:
Does Warp factor affect skill expression? Higher pip sets increase hand entropy — does this create meaningful strategic depth or just pip-dumping chaos?
Does fleet size (player count) affect skill? Conventional wisdom suggests more players = more noise, but is that true?
Should TEI be calibrated differently for W9 vs W18? If skill expression differs, should we adjust reference bands or restrict rating to W12?
Why is W12 the rated factor? Is it merely tradition (Mexican Train’s historical default), or does the data justify it?
To answer these questions empirically we use the baseline (no-module) cells of the Section 9 campaign — the same Commander points self-play instrument over 38 configurations (Warp factor fleet size), 500 games per cell. Earlier standalone or single-module pilot collections (including broken Drafting runs) are not treated as evidence; all claims in this section come from that integrated matrix:
| Warp Factor | Fleet Sizes | Configs | Total Games |
|---|---|---|---|
| W9 | 2–4 players | 3 | 1,500 |
| W12 | 2–8 players | 7 | 3,500 |
| W15 | 2–12 players | 11 | 5,500 |
| W18 | 2–18 players | 17 | 8,500 |
| Total | 38 | 19,000 (baseline subset) |
All games used the points objective (lowest cumulative pip total) with Class II (heuristic Commander) self-play as part of the July 2026 module campaign (parallel workers on M4 Max). Compact notation: e.g., W12/4p denotes Warp 12 with 4 players.
Per-turn telemetries are collected by the engine sampler
(LuckSkillMetricsSampler) and averaged per game. All §8
tables and figures are computed from those game-level averages after
applying the composites below — matching
tools/nn/process-luck-skill-data.py, which produced
luck-skill-processed.csv.
Raw metrics (game averages):
avgLegalMoves: mean number of legal candidate
actions per turn (decision branching).
avgValueSpread: mean gap between the highest- and
lowest-valued legal candidates under a lightweight pip-total
proxy — each chart move is valued by the pip count of the placed
coordinate, and beacon/pass score 0 (a coarse proxy for how
differentiated the options are).
avgNearOptimalFraction: mean fraction of legal
candidates whose proxy value falls within 10% of the best candidate’s on
each turn, averaged over turns (how many options are roughly
interchangeable under that proxy).1
avgConstrainedTileFraction: fraction of hand
coordinates that can legally attach to only one open trail
(forced/near-forced placement pressure).
avgHandEntropy: Shannon entropy of the pip multiset
in hand (bits).
avgUniqueTrains: mean count of distinct trail ends
the hand can reach (used as a raw diagnostic; not an input to the §8
composites).
Instrument design (constructs
composites). We wanted continuous summaries that rise when a
configuration offers more ways for better play to matter, and
fall when turns are forced or undifferentiated. The three raw
ingredients of skillIndex map to that idea: more legal
moves (room to choose), larger value spread (choices are not
interchangeable), and higher near-optimal fraction (the policy can still
identify better lines). The luckIndex ingredients are the
dual: forced attachments, low decision quality (near-optimal rarely
available), and sparse legal moves. Weights are fixed heuristics chosen
once for interpretability — not fit to TEI outcomes — and were not
re-tuned after looking at module rankings:
Reading the composites:
Higher skillIndex
more decision branching, more score separation among candidates, and
more near-optimal opportunities — configurations where skill can
express.
Higher luckIndex
more forced placements, weaker near-optimal signal, and fewer candidates
— configurations where outcomes lean on draw/hand luck.
decisionQuality is a simple
branchingdiscrimination
diagnostic (no near-optimal term).
Relation to Section 9. Section 9 keeps the same raw sampler but ranks modules with a different secondary instrument: four absolute pass/fail indicators on cell-mean telemetry (0–4 count). §8 hypotheses use the continuous composites above; Promote / Warped product calls use the §9 indicator count. Both are reported so board-choice and module-taxonomy questions stay separable.
We formulated five hypotheses about the relationship between Warp factor, fleet size, and skill expression:
Higher Warp factors exhibit higher skill indices due to increased tile diversity and hand complexity.
Larger fleets correlate with higher skill expression within each Warp factor.
The relationship between fleet size and skill differs across Warp factors (non-additive effects).
Decision complexity (avgLegalMoves) and hand coherence
(avgHandEntropy) exhibit meaningful correlation.
Skill index increases monotonically with fleet size within each Warp factor.
We restricted analysis to the 2–4 player range (balanced design across all factors) to isolate the Warp factor effect. One-way ANOVA on skillIndex by Warp factor:
| Warp Factor | Mean skillIndex | SD | |
|---|---|---|---|
| W9 | 1.533 | 0.087 | 1,500 |
| W12 | 1.950 | 0.330 | 1,500 |
| W15 | 1.829 | 0.272 | 1,500 |
| W18 | 1.802 | 0.192 | 1,500 |
Result: , , (large effect size). H1 is strongly supported.
Post-hoc pairwise comparisons (Tukey HSD) show W12 exhibits the highest skill expression, with W15 and W18 slightly lower but still significantly above W9. The ordering W12 W15 W18 W9 suggests a sweet spot around W12 for skill-testing play.
Within each Warp factor, we computed Pearson correlation between
playerCount and skillIndex:
| Warp | Fleet Sizes | Pearson | -value | ||
|---|---|---|---|---|---|
| W9 | 1,500 | 2–4 | 0.051 | 0.049 | 0.003 |
| W12 | 3,500 | 2–8 | 0.875 | 0.766 | |
| W15 | 5,500 | 2–12 | 0.893 | 0.798 | |
| W18 | 8,500 | 2–18 | 0.840 | 0.706 |
Result: H2 is strongly supported for W12/15/18 (all , ). W9 shows a weak but significant positive effect (, ). W12 exhibits the steepest fleet size effect (), making it the most sensitive Warp factor to player count.
Unexpected finding: Conventional wisdom predicts more players = more noise = less skill. Our data show the opposite: skill index increases with fleet size. This suggests that larger fleets create more strategic depth (blocking opportunities, trail diversity, timing decisions) rather than diluting skill signal with variance.
To test whether the fleet size effect differs across Warp factors, we compared regression slopes for the 2–4 player range (balanced design):
| Warp Factor | Slope (skillIndex playerCount) |
|---|---|
| W9 | 0.0054 |
| W12 | 0.3889 |
| W15 | 0.3172 |
| W18 | 0.2085 |
Slope variance = 0.0209. H3 is supported: fleet size matters much more for W12 than for W9. This interaction justifies W12 as the rated factor — it exhibits both high baseline skill and high sensitivity to player count, making it the best discriminator of player ability.
Correlation between avgLegalMoves (decision complexity)
and avgHandEntropy (hand coherence):
Pearson , (not significant)
Spearman , (weak negative monotonic trend)
Result: H4 is not supported. Decision complexity and hand entropy are largely independent. This suggests that tactical richness (number of legal moves) and strategic coherence (hand composition) are orthogonal dimensions of game state.
Kendall’s
(rank correlation) between playerCount and
skillIndex:
| Warp Factor | Kendall’s | -value |
|---|---|---|
| W9 | 0.044 | 0.025 |
| W12 | 0.727 | |
| W15 | 0.767 | |
| W18 | 0.672 |
Result: H5 is supported for W12/15/18 (strong positive monotonic trends). However, examining individual fleet sizes reveals non-monotonic patterns at the highest player counts: W18 skill peaks at 16p (skillIndex = 3.002), then drops at 17p (2.757) and 18p (2.834). This suggests ergodic limits: at extreme fleet sizes, some configurations may hit resource constraints (e.g., near-empty draw pile, forced blocking).
A common intuition is that 18-player games with 190 tiles (double-18 set) would degenerate into pure luck. Our data contradicts this:
| Config | skillIndex | luckIndex | Skill Ratio | Luck Ratio |
|---|---|---|---|---|
| W18/2p | 1.631 | 0.289 | 1.00 | 1.00 |
| W18/18p | 2.834 | 0.350 | 1.74 | 1.21 |
Interpretation: At 18 players, skill expression is 1.74 higher than heads-up, while luck increases only 1.21. The skill/luck ratio actually improves at extreme fleet sizes. This suggests that large multi-player games create rich tactical opportunities (blocking, trail pressure, timing) that outweigh variance from hidden information.
| Configuration | skillIndex | luckIndex | Skill/Luck Ratio |
|---|---|---|---|
| W9/4p | 1.528 | 0.334 | 4.57 |
| W12/8p | 2.629 | 0.405 | 6.49 |
| W15/12p | 2.803 | 0.379 | 7.40 |
| W18/18p | 2.834 | 0.350 | 8.10 |
W18/18p has the highest skill/luck ratio of any configuration tested. This challenges the intuition that larger games are necessarily more luck-dependent.
Why is W12 the sole rated factor? The data provide three empirical justifications:
Highest baseline skill (2–4p): W12 exhibits mean skillIndex = 1.950 in the 2–4p range, higher than W9 (1.533), W15 (1.829), and W18 (1.802).
Steepest fleet size gradient: W12 shows for fleet size effect — the most sensitive to player count of any factor. This means W12 best discriminates between skill levels across table sizes.
Practical rating context: Most solo rated play occurs at 2–4 players (W12 supports 2–8). W12 provides the widest skill range within the most common fleet sizes.
Conclusion: W12 is not merely historical tradition — it is the empirically optimal choice for a skill-testing rating system.
Hand coherence (avgHandEntropy) increases monotonically
with Warp factor:
| Warp Factor | Mean Hand Entropy (bits) |
|---|---|
| W9 | 2.09 |
| W12 | 2.34 |
| W15 | 2.52 |
| W18 | 2.66 |
Higher entropy indicates more diverse hands (less clustering around specific pips). This confirms that larger tile sets create more strategic flexibility but also more decision complexity.
Despite large variations in Warp factor and fleet size,
avgLegalMoves remains remarkably constant
at
1.8–2.2
moves per turn across all configurations. This suggests that the
branching factor of Mexican Train is inherently bounded by game
mechanics (trail constraints, hand composition), not by tile set size or
player count.
Anchor TEI on W12 only. Exhibition factors (W9/15/18) should not have separate AI rows — they share the same Class IV–II opponents with W12 anchors.
Do not soften OpenSkill updates by fleet size. Larger fleets increase skill expression, not variance; Bayesian shrinkage already captures confidence.
Prefer percentile boards alongside grades for go-out. While W12 skill gradients are smooth, the monotonic-but-noisy pattern at W18 (drops at 17p) suggests percentiles stabilize feedback when compresses.
W9 (casual / quick): Lower skill ceiling but valid for practice. Best at 2–4 players.
W15 (tactical depth): High skill expression (skillIndex 2.80 /12p), suitable for unrated tournaments or challenge modes.
W18 (grand strategy): Highest absolute skill expression at max fleet size. Could support unrated “epic” lobbies (12–18 players) for advanced players seeking complex multi-player dynamics.
This study used points only. Go-out exhibits higher variance (Section 7.2), suggesting:
Skill/luck under go-out is reported in Section 10 as a separate module-matrix instrument (not pooled with points).
W12/2–4p may remain optimal for points TEI; large-fleet go-out (8+ players) still shows high on the go-out instrument but race variance is a separate TEI-calibration concern.
Section 8 used the baseline slice of this points campaign to show that W12 is the right board for rating. The full points matrix answers the product question: which optional modules preserve that skill signal, and which should be barred from TEI? Go-out module forks are evaluated separately in Section 10; we do not pool averages across objectives.
Does any single module collapse skill expression relative to baseline?
Does stacking modules (“all”) destroy discrimination, or compound depth?
Is Module Epsilon (drafting) the skill upgrade it appears to be?
Can Module Zeta (squadrons) enter the rated pool?
We collected 500 Commander self-play games on each
of 549 configuration cells — Warp factor
every legal fleet size
module configs (baseline, Alpha–Mu, Official Warp 12, “all”, and Zeta on
eligible fleets only) — for 274,500 games
under the points objective, using the same
LuckSkillMetricsSampler as Section 8.2. (Earlier drafts that
counted Zeta on ineligible fleets as 570 cells are superseded.)
Module ranking instrument (distinct from §8
composites). For each cell we average the raw telemetries, then
score four absolute pass/fail indicators (implemented in
collect-luck-skill-modules.ts):
Legal moves / turn — enough branching that play is not almost forced.
Constrained-tile fraction — a majority of hand tiles have a narrow legal attachment (pressure / planning).
Move-value spread — heuristic scores still separate best from worst candidates.
Unique pips in hand — enough pip diversity that connectivity choices remain non-trivial.
The integer skill-indicator count
is the primary ranking key. Cell taxonomy: skill-dominant if
,
mixed if
,
luck-dominant if
.
Module averages of
drive product recommendations (Promote vs Warped), not the continuous
skillIndex of Section 8.
Thresholds were chosen as coarse absolute guards on the same constructs
as §8 (branching, force, discrimination, hand diversity); they were
frozen before the Promote/Warped labeling pass and were not optimized to
separate Epsilon after the fact.
Zeta requires equal squads: even fleets of at least 4 captains when
squadronSize=2. Ineligible Zeta cells from earlier runs are
excluded from Zeta-specific claims (17 eligible cells remain). The
collector auto-omits Zeta from “all” on odd/small fleets.
| Module | Rec | Skill | Legal | Constr. | Spread | Pips | Skill/Luck |
|---|---|---|---|---|---|---|---|
| Iota (Double Down) | Promote | 3.00 | 2.24 | 59% | 3.64 | 8.1 | 38/0/0 |
| All modules | Promote | 2.95 | 2.06 | 57% | 3.37 | 8.4 | 36/2/0 |
| Zeta (Squadrons) | Promote | 2.94 | 1.86 | 60% | 3.14 | 7.5 | 16/1/0 |
| Alpha (Continuum) | Promote | 2.89 | 2.09 | 57% | 3.19 | 7.8 | 34/4/0 |
| Beta (Salamander) | Promote | 2.89 | 2.10 | 57% | 3.19 | 7.8 | 34/4/0 |
| Delta (Spool) | Promote | 2.92 | 2.09 | 57% | 3.19 | 7.7 | 35/3/0 |
| Eta (Temporal Debt) | Promote | 2.89 | 2.09 | 57% | 3.19 | 7.7 | 34/4/0 |
| Gamma (Sensor Grid) | Promote | 2.89 | 2.10 | 57% | 3.21 | 7.8 | 34/4/0 |
| Kappa (Inversion) | Warped | 2.89 | 2.09 | 57% | 3.19 | 7.8 | 34/4/0 |
| Lambda (Wormholes) | Promote | 2.89 | 2.09 | 57% | 3.17 | 7.8 | 34/4/0 |
| Baseline | Promote | 2.89 | 2.09 | 57% | 3.20 | 7.7 | 34/4/0 |
| Theta (Longest Trail) | Promote | 2.89 | 2.09 | 57% | 3.19 | 7.7 | 34/4/0 |
| Mu (Fracture) | Promote | 2.87 | 2.12 | 55% | 3.25 | 7.9 | 33/5/0 |
| Official Warp 12 | Promote | 2.82 | 2.12 | 54% | 3.06 | 7.5 | 32/5/1 |
| Epsilon (Drafting) | Warped/party | 1.08 | 1.30 | 36% | 2.08 | 5.0 | 0/11/27 |
Key observations:
Baseline and most single modules average 2.89/4 indicators — skill-dominant in 34/38 cells.
Iota (Double Down) is the only clear skill upgrade: 3.00/4, skill-dominant in 38/38 cells. On W12 it lifts move-value spread by to pips versus baseline depending on fleet size.
Official Warp 12 remains competitive at 2.82/4 (one luck-leaning cell: W9/4p), justifying the rated preset.
“All modules” stress-test scores 2.95/4 when Zeta is eligible or omitted — stacking does not destroy discrimination under Commander play.
Zeta on eligible fleets averages 2.94/4 (16/17 skill-dominant) — shared trails keep pressure high.
Intuition says drafting should increase skill: captains choose their hands. Empirically, Epsilon averages 1.08/4 indicators and is luck-dominant in 27/38 cells (0/4 on every W9 fleet). Relative to baseline it shows:
Legal moves: 1.30 vs 2.09
Constrained tiles: 36% vs 57%
Move-value spread: 2.08 vs 3.19
Unique pips in hand: 5.0 vs 7.7
Interpretation: Drafting front-loads luck into the deal and produces more coherent personal hands. Mid-game branching then shrinks: fewer forced tiles, fewer discriminating choices, thinner pip diversity. Outcomes are decided earlier by who drafted the lucky connectors, not by who navigates the Neutral Zone. That makes Epsilon an excellent party / social module — the requisition ritual is the entertainment — and a poor competitive one.
Figure 16 maps the deficit cell-by-cell; Epsilon never recovers baseline skill indicators on any Warp/fleet cell we collected. Figure 17 shows the same squeeze on constrained-tile fraction and unique pips — the two mid-game pressure gauges most diagnostic of Warped play.
Iota (Double Down) is the dual product win: Figure 18 shows its W12 move-value-spread lift versus baseline (+0.26 to +0.86 depending on fleet). Figure 19 stacks skill-/mixed-/luck-dominant cell counts; Iota is all skill-dominant, while Epsilon is mostly luck. Figure 20 places each cell in (legal moves, move-value spread) space — Epsilon clusters low; Iota/baseline/Zeta occupy the skillful cloud.
Zeta is the dual of Epsilon on the skill instrument:
2.94/4 indicators on eligible fleets (16/17
skill-dominant). Shared trails and bridge seating preserve decision
pressure. It is not Warped. The product separation is
infrastructural, not skill-based: free-for-all (FFA) TEI stays on
individual tables; eligible rated Warp 12 Zeta sectors write OpenSkill
updates to a dedicated team track (squadRating), gated by
SQUADRONS_RATING_CALIBRATED (now true after
2v2 ordering calibration). Crew nights never pollute the FFA human
ladder.
Rated (Promote): Official Warp 12; baseline; Alpha–Delta, Eta, Theta, Iota, Lambda, Mu (own-trail fracture); Zeta on rated Warp 12 writes Squad TEI only.
Warped / party: Epsilon — exhibition only; label as luck-leaning social play.
Already Warped (RULES): Kappa (intentional score inversion).
Do not merge Epsilon-enabled boards into rated FFA TEI; keep exhibition ledgers separate when Warped modules run.
Go-out rewrites several modules (Salamander Surge, Hot Potato pass draws, Trail Momentum, Desperation Dig, Hand Exchange). Those forks change mid-game pressure relative to the points campaign, so this section is a separate instrument: same sampler and indicators, but not an apples-to-apples comparison of module means to Section 9. We never plot forked modules on a shared points/go-out taxonomy bar except where noted below.
511 cells
500 Commander games = 255,500 games under
go-out. Epsilon is omitted (unavailable under go-out). Zeta remains
eligible-fleet-only (17 cells). Figure generation uses go-out display
names and writes distinct assets
(figure21–figure28, Table 4).
| Module | Rec | Skill | Legal | Constr. | Spread | Pips | Skill/Luck |
|---|---|---|---|---|---|---|---|
| Iota (Double Down) | Promote | 3.00 | 2.31 | 58% | 3.83 | 8.3 | 38/0/0 |
| Alpha (Continuum) | Promote | 2.97 | 2.19 | 56% | 3.46 | 8.0 | 37/1/0 |
| Beta (Salamander Surge) | Promote | 2.97 | 2.20 | 56% | 3.47 | 8.0 | 37/1/0 |
| Delta (Spool / Hot Potato) | Promote | 2.97 | 2.22 | 57% | 3.57 | 8.0 | 37/1/0 |
| Eta (Desperation Dig) | Promote | 2.97 | 2.20 | 56% | 3.47 | 8.0 | 37/1/0 |
| Gamma (Sensor Grid) | Promote | 2.97 | 2.20 | 56% | 3.47 | 8.0 | 37/1/0 |
| Lambda (Wormholes) | Promote | 2.97 | 2.19 | 57% | 3.46 | 8.0 | 37/1/0 |
| Baseline | Promote | 2.97 | 2.19 | 56% | 3.45 | 8.0 | 37/1/0 |
| Theta (Trail Momentum) | Promote | 2.97 | 2.20 | 56% | 3.48 | 8.0 | 37/1/0 |
| Zeta (Squadrons) | Promote | 2.94 | 1.88 | 60% | 3.26 | 7.6 | 16/1/0 |
| Kappa (Hand Exchange) | Warped | 2.89 | 2.41 | 54% | 3.73 | 8.8 | 35/2/1 |
| Mu (Fracture) | Promote | 2.84 | 2.22 | 54% | 3.49 | 8.0 | 32/6/0 |
| Official Warp 12 | Promote | 2.84 | 2.21 | 54% | 3.32 | 7.7 | 32/6/0 |
| All modules | Promote | 2.82 | 2.41 | 55% | 4.05 | 9.4 | 29/9/0 |
Most go-out configs remain skill-dominant (baseline and most singles 2.97/4).
Iota still tops the go-out instrument at 3.00/4 (38/38 skill-dominant).
Forked modules (Surge, Dig, Momentum, Hot Potato) do not collapse under Commander play.
Kappa (Hand Exchange) stays Warped by product policy despite a high (2.89/4) — exhibition / non-FFA, parallel to points Kappa’s Warped designation for a different mechanical reason.
Stacked “all” is slightly softer (2.82/4; more mixed cells) but not luck-dominant.
Figure 23 is the only dual-objective module plot. It includes modules whose rules are shared across objectives (baseline, Iota, Official, Zeta, Gamma, Lambda, Mu) and excludes forks (Beta/Delta/Eta/Theta/Kappa). The point is compare/contrast of instruments on comparable rules — not a merged taxonomy.
Points behaves like a smooth skill ladder — good fit for OpenSkill spacing.
Go-out behaves like a stochastic race — ordering survives, magnitudes don’t.
Table size erodes heads-up skill signal — focus tests essential.
House rules mostly reshape legality — heuristics gated at runtime suffice for DTI.
Commander heuristics are a ceiling in 2p points — ISMCTS parity is confirmation, not failure; expectimax extracts the residual edge via explicit tree search.
Search value is mode-dependent — expectimax for 2p, ISMCTS for multi-player chaos.
Neural Class II can replace heuristics without a second
lobby tier — keep
commander,
update rulesProfileId + Commander anchor
.
Fair-share bump — translating fleet-mean /Commander ratio with Elo-style overstates anchors when most rated matches are 2–4p; temper for the rating context you ship.
Imitation nets (Class I*) plateau at the teacher; succeeds by targeting search visit distributions (Path B), not Commander picks, following principles similar to AlphaZero’s self-play approach .
Larger fleets increase skill, not noise — baseline cells of the 274.5K-game points matrix show skill index rises with player count ( for W12/15/18), contradicting the “more players = crapshoot” intuition.
W12 is empirically optimal for TEI — highest baseline skill in 2–4p range, steepest fleet size gradient (), best discriminator of player ability.
Drafting is a trap for competitive design — Module Epsilon collapses mid-game skill indicators to 1.08/4; choose-your-hand rituals belong in party mode (Warped).
Team play is skillful and rates on Squad TEI —
Module Zeta preserves skill (2.94/4); rated crew sectors update
squadRating, never FFA humanRating.
Iota is the rare module that raises the ceiling — Double Down is the only single module with 38/38 skill-dominant cells.
Never merge points and go-out TEI.
Show percentile on go-out boards.
Don’t expose lookahead / + as a rating-affecting toggle without or marking unrated.
Retune weights selectively (popular hosted configs), not full combinatorial grid.
Recalibrate Commander when Class II implementation changes; do not rewrite stored human ratings.
Prefer one strong rated tier over “Commander + Omega + Class I*” confusion.
Anchor TEI exclusively on W12; treat W9/15/18 as exhibition using the same Class IV–II opponents.
Do not soften OpenSkill updates for large fleets — skill expression increases, not variance.
Mark Epsilon Warped / party in the product; promote Iota and Official for rated presets; treat Zeta as skill-promote with live Squad TEI (never FFA).
Heuristic agents, not equilibrium solvers.
Calibration seed and game count sensitivity.
No human champion study yet.
Module study used points objective and Commander seats only — go-out and mixed human/AI may differ.
Legacy ineligible Zeta cells exist in the dataset; filtered for Zeta claims.
W18 non-monotonicity at 17p/18p suggests potential edge cases at extreme configurations.
§8 continuous composites and §9 binary indicators share sampler
hardware but are not interchangeable scales; do not treat a cell’s
skillIndex and its
count as the same quantity.
Composite weights and indicator thresholds are fixed heuristic guards, not cross-validated predictors of human TEI.
TEI and self-play calibration provide a practical, honest skill ladder for a game too messy for classical solving. Points and go-out should be treated as two calibration targets on one engine. Class I* and Fleet Admiral benches show that no single algorithm wins every mode: Commander heuristics are near-optimal in 2p points (ISMCTS 51%), expectimax extracts a 64% edge there via explicit tree search, and ISMCTS outperforms greedy seats in 4p go-out (31% vs 23%). Class shows that a pure self-play net can replace heuristic Class II without a fourth lobby tier — but promotion benches and TEI anchors are different jobs: fleet fair-share can look large while heads-up play stays near parity; REF_TEI must follow the tables you rate.
The 274,500-game points module study (549 cells; Section 9) is the authoritative skill/luck instrument for TEI taxonomy. From its baseline Warpfleet slice:
Skill expression increases with both Warp factor and fleet size. Contrary to conventional wisdom (“more players = more luck”), skill index rises strongly with player count (– for W12/15/18). W18/18p exhibits 1.74 the skill of W18/2p, with only 1.21 the luck — the highest skill/luck ratio of any configuration tested.
W12 is the empirically optimal rated factor. W12 exhibits the highest baseline skill in the 2–4 player range (where most rated play occurs) and the steepest fleet size gradient (), making it the best discriminator of player ability. This justifies restricting TEI rating to W12 while offering W9/15/18 as exhibition modes.
Hand entropy increases with Warp factor, but decision complexity stays constant. Larger tile sets create more diverse hands (W9: 2.09 bits W18: 2.66 bits entropy) but do not increase branching factor (mean legal moves 1.8–2.2 across all configs). This suggests Mexican Train’s tactical depth scales with tile diversity, not combinatorial explosion.
Across the full module matrix the product constraints are:
Most modules are rating-safe. Baseline, Official Warp 12, and the Alpha–Mu singles (except Epsilon) preserve 2.8–3.0 skill indicators.
Epsilon is Warped/party. Drafting collapses skill to 1.08/4 — keep it social, never on TEI.
Zeta is skill-promote with live Squad TEI.
Squadrons preserve skill (2.94/4); rated Warp 12 crew sectors update
squadRating only.
The right product move is one neural Class II, tempered OpenSkill anchors, unrated search as hard mode, not more named tiers — plus a clear Promote vs Warped module taxonomy grounded in the skill instrument. Superhuman Mexican Train remains a research program (belief-state search + Path A value + human validation), not required for an excellent commercial experience.
To Deborah, Hannah, and Don for taking me in to their family and for introducing me to Mexican Train Dominoes.
This research was conducted as part of the open-source Warp 12 project. All code, data, and reproduction scripts are available at https://github.com/digitaldefiance/warp12.
All figures are generated from empirical data and located in
tools/nn/figures/.
Cross-factor skill index comparison (Section 8) — W12 exhibits highest skill expression in 2–4p balanced range.
Fleet size effects by Warp factor (Section 8) — W12 shows steepest gradient (), most sensitive to player count.
Decision complexity heatmap (Section 8) — Constant branching factor (2 moves/turn) across all configurations.
Hand entropy vs near-optimal play (Section 8) — Weak correlation () suggests orthogonal dimensions.
Skill vs luck balance (Section 8) — W18/18p has highest skill/luck ratio (8.10) of any configuration.
TEI ladder visualization (Section 5) — OpenSkill AI anchors and TEI grade presentation (E/V/C/I/P).
Calibration matrix heatmap (Section 7) — 2,000-game win rates; points clarity vs go-out compression.
AI bench results comparison (Section 7) — Class I* parity, Fleet Admiral wins (expectimax 64%), fair-share by fleet size, fair-share hazard.
Architecture diagrams (Section 4) — Policy stack, Class I* MLP, Class policy/value heads, Fleet Admiral routing.
Points vs go-out divergence (Section 3) — anchor vs implied gaps; weaker-side win rates.
Module skill ranking (Section 9) — 274.5K-game points Promote vs Warped taxonomy; Epsilon collapse; Zeta skill-promote. Go-out forks in Section 10.
Module Warp heatmap (Section 9) — Skill indicators by module and Warp factor.
Epsilon collapse panels (Section 9) — Drafting vs baseline/Iota/Official across W9–W18.
Module metric profiles (Section 9) — Legal moves, constrained tiles, spread, unique pips.
W12 module fleet curves (Section 9) — Rating-relevant modules across 2–8 captains.
Epsilon deficit heatmap (Section 9) — Cell-level skill-indicator deficit vs baseline.
Iota spread lift on W12 (Section 9) — Move-value-spread gain from Double Down.
Module outcome mix (Section 9) — Skill / mixed / luck cell fractions by module.
Legal moves vs spread scatter (Section 9) — Per-cell depth cloud; Epsilon Warped pocket.
Hand-pressure bars (Section 9) — Constrained tiles and unique pips for key modules.
| Warp | Fleet | N | Skill Index | Luck Index | Decision Quality | ||
| Factor | Size | ||||||
| W9 | 2 | 500 | 1.5170.082 | 0.3320.011 | 3.3090.428 | ||
| W9 | 3 | 500 | 1.5530.090 | 0.3390.012 | 3.4940.483 | ||
| W9 | 4 | 500 | 1.5280.085 | 0.3340.011 | 3.3640.443 | ||
| W12 | 2 | 500 | 1.5640.068 | 0.3140.006 | 3.3920.337 | ||
| W12 | 3 | 500 | 1.9440.094 | 0.3520.010 | 5.5250.580 | ||
| W12 | 4 | 500 | 2.3410.099 | 0.3890.009 | 8.2640.729 | ||
| W12 | 5 | 500 | 2.2990.099 | 0.3840.009 | 7.9140.717 | ||
| W12 | 6 | 500 | 2.5500.094 | 0.4060.008 | 9.8730.777 | ||
| W12 | 7 | 500 | 2.4550.099 | 0.3930.007 | 9.1280.782 | ||
| W12 | 8 | 500 | 2.6290.107 | 0.4050.007 | 10.5620.912 | ||
| W15 | 2 | 500 | 1.5320.055 | 0.2930.003 | 3.1140.250 | ||
| W15 | 3 | 500 | 1.7880.078 | 0.3180.007 | 4.3590.405 | ||
| W15 | 4 | 500 | 2.1670.098 | 0.3500.009 | 6.5560.609 | ||
| W15 | 5 | 500 | 2.2390.105 | 0.3560.009 | 7.0080.672 | ||
| W15 | 6 | 500 | 2.5180.107 | 0.3750.009 | 8.9540.775 | ||
| W15 | 7 | 500 | 2.4600.103 | 0.3690.009 | 8.5540.718 | ||
| W15 | 8 | 500 | 2.6490.102 | 0.3800.008 | 9.9960.796 | ||
| W15 | 9 | 500 | 2.6390.104 | 0.3760.007 | 9.9520.796 | ||
| W15 | 10 | 500 | 2.7740.107 | 0.3830.007 | 11.0560.885 | ||
| W15 | 11 | 500 | 2.6840.115 | 0.3730.007 | 10.3940.922 | ||
| W15 | 12 | 500 | 2.8030.112 | 0.3790.007 | 11.4040.965 | ||
| W18 | 2 | 500 | 1.6310.051 | 0.2890.002 | 3.4580.233 | ||
| W18 | 3 | 500 | 1.7250.061 | 0.2990.003 | 3.8730.288 | ||
| W18 | 4 | 500 | 2.0480.090 | 0.3230.007 | 5.5330.489 | ||
| W18 | 5 | 500 | 2.1650.093 | 0.3320.008 | 6.1970.530 | ||
| W18 | 6 | 500 | 2.4750.105 | 0.3520.008 | 8.1360.677 | ||
| W18 | 7 | 500 | 2.4570.111 | 0.3500.008 | 8.0540.712 | ||
| W18 | 8 | 500 | 2.6700.111 | 0.3620.008 | 9.5410.780 | ||
| W18 | 9 | 500 | 2.6480.116 | 0.3580.007 | 9.4500.816 | ||
| W18 | 10 | 500 | 2.8090.113 | 0.3660.007 | 10.6540.848 | ||
| W18 | 11 | 500 | 2.7310.111 | 0.3580.007 | 10.1430.818 | ||
| W18 | 12 | 500 | 2.8440.109 | 0.3640.006 | 11.0180.855 | ||
| W18 | 13 | 500 | 2.9750.112 | 0.3690.006 | 12.0950.909 | ||
| W18 | 14 | 500 | 2.8060.110 | 0.3560.006 | 10.8460.855 | ||
| W18 | 15 | 500 | 2.9050.112 | 0.3600.006 | 11.6530.915 | ||
| W18 | 16 | 500 | 3.0020.121 | 0.3640.006 | 12.4561.025 | ||
| W18 | 17 | 500 | 2.7570.117 | 0.3470.006 | 10.6350.913 | ||
| W18 | 18 | 500 | 2.8340.118 | 0.3500.006 | 11.2570.955 |
| Hypothesis | Test | Statistic | Value | -value | Result |
|---|---|---|---|---|---|
| H1: Warp factor effect | One-way ANOVA | 0.00 | Supported | ||
| 0.290 | (large effect) | ||||
| H2: Fleet size effect | Pearson (W12) | 0.000 | Supported | ||
| Pearson (W15) | 0.000 | (strong positive) | |||
| Pearson (W18) | 0.000 | ||||
| H3: Interaction | Slope variance | 0.0209 | — | Present | |
| H4: Complexity-coherence | Pearson | 0.009 | Weak | ||
| H5: Monotonic trends | Kendall’s | 0.8–0.9 | Supported |
| Skill Index | — | 0.70 | 0.99 | 0.38 | 0.87 | -0.76 | 0.52 | 0.84 |
| Luck Index | 0.70 | — | 0.73 | -0.08 | 0.88 | -0.97 | -0.16 | 0.40 |
| Decision Quality | 0.99 | 0.73 | — | 0.32 | 0.92 | -0.81 | 0.43 | 0.84 |
| Hand Entropy | 0.38 | -0.08 | 0.32 | — | 0.01 | 0.06 | 0.82 | 0.21 |
| Legal Moves | 0.87 | 0.88 | 0.92 | 0.01 | — | -0.95 | 0.05 | 0.71 |
| Near-Optimal % | -0.76 | -0.97 | -0.81 | 0.06 | -0.95 | — | 0.12 | -0.51 |
| Warp Factor | 0.52 | -0.16 | 0.43 | 0.82 | 0.05 | 0.12 | — | 0.53 |
| Player Count | 0.84 | 0.40 | 0.84 | 0.21 | 0.71 | -0.51 | 0.53 | — |
Note: Bold values indicate strong correlation (); gray values indicate negligible correlation ().
| Concern | Location |
|---|---|
| Skill presets | libs/engine/src/lib/ai/skill.ts |
| Heuristics | libs/engine/src/lib/ai/heuristics.ts |
| Self-play | libs/engine/src/lib/ai/self-play.ts |
| Calibration | libs/engine/src/lib/ai/ai-elo-calibration.ts |
| Optimizer | libs/engine/src/lib/ai/ai-weight-optimizer.ts |
| Fleet Admiral / ISMCTS | libs/engine/src/lib/ai/fleet-admiral.ts,
ismcts.ts |
| Expectimax preset | resolveFleetAdmiralExpectimaxLookahead()
in fleet-admiral.ts |
| Parallel bench | libs/engine/src/lib/ai/bench-fleet-admiral-parallel.ts |
| Class I* policy | libs/engine/src/lib/ai/class1-star-policy.ts |
| Class I* features | libs/engine/src/lib/ai/feature-encoder.ts |
| Class I* training | tools/nn/
(collect, train.py, bench) |
| Class agent / search | libs/engine/src/lib/ai/omega-agent.ts,
omega-search-agent.ts |
| collect / bench | collect-omega-trajectories.ts,
bench-omega.ts |
| Human TEI update | apps/Warp12/src/firebase/stats-service.ts,
libs/engine/.../rating/ |
| OpenSkill anchors / grades | anchors.ts,
tei-grade.ts, update-{ffa,team,vs-ai}.ts |
| Rules profile / AI tiers | warp12-official-v1 /
v2 in rules-profile.ts |
| Luck/skill metrics | libs/engine/src/lib/ai/luck-skill-metrics.ts |
| Luck/skill collection | tools/nn/collect-luck-skill-single-config.ts |
| Module analysis | tools/nn/collect-luck-skill-modules.ts,
analyze-module-results.ts |
| Statistical analysis | tools/nn/process-luck-skill-data.py,
test-hypotheses.py |
| Figure generation | create-figures.py,
create-paper-figures.py,
create-module-figures.py |
| Rules spec | RULES.md |
| Module report | docs/MODULE-ANALYSIS.md |
| OpenSkill calib log | docs/openskill-calibration-log.md |
yarn calibrate:ai-tei
AI_CALIBRATION_GAMES=500 yarn calibrate:ai-tei
yarn calibrate:ai-tei-dti
yarn optimize:ai-weights
# OpenSkill AI-anchor calibration (engine unit suite)
yarn test:engine -- openskill-calibration
yarn fleet-admiral:bench:500
FLEET_BENCH_SEAT=b yarn fleet-admiral:bench:500
yarn fleet-admiral:bench:go-out-4p:500
yarn jiti tools/nn/compare-fleet-search.ts
yarn class1-star:pipeline:deep
yarn class1-star:pipeline:go-out
yarn class1-star:pipeline:deepblue
# Points instrument (549 cells × 500) — TEI taxonomy
WARP12_ANALYSIS_DATA_DIR=tools/nn/data/points-modules-rerun \
MODULE_OBJECTIVE=points MODULE_GAMES=500 MODULE_WORKERS=14 \
bash tools/nn/run-module-analysis-parallel.sh
WARP12_ANALYSIS_DATA_DIR=tools/nn/data/points-modules-rerun \
MODULE_FIGURE_OBJECTIVE=points python3 tools/nn/create-module-figures.py
# Go-out instrument (511 cells × 500) — forked modules; separate figures
WARP12_ANALYSIS_DATA_DIR=tools/nn/data/go-out-modules \
MODULE_OBJECTIVE=go-out MODULE_GAMES=500 MODULE_WORKERS=14 \
bash tools/nn/run-module-analysis-parallel.sh
WARP12_ANALYSIS_DATA_DIR=tools/nn/data/go-out-modules \
MODULE_FIGURE_OBJECTIVE=go-out python3 tools/nn/create-module-figures.py
# Optional shared-ID contrast only (excludes forks)
MODULE_FIGURE_OBJECTIVE=contrast python3 tools/nn/create-module-figures.py
MPLBACKEND=Agg python3 tools/nn/create-paper-figures.py
MPLBACKEND=Agg python3 tools/nn/create-figures.py
MPLBACKEND=Agg python3 tools/nn/create-tables.py
All data and scripts are available in the warp12-engine
package and tools/nn/ directory.
| Venue | Fit |
|---|---|
| AIIDE | Best fit — game AI + evaluation |
| IEEE CoG | Strong — agents + competition |
| FDG | Game design + dual objective angle |
| CHI PLAY | Advisor / TEI integrity angle |
| arXiv cs.AI | White paper / preprint |
99
Browne, C.B., Powley, E., Whitehouse, D., Lucas, S.M., Cowling, P.I., Rohlfshagen, P., Tavener, S., Perez, D., Samothrakis, S., and Colton, S. (2012). A Survey of Monte Carlo Tree Search Methods. IEEE Transactions on Computational Intelligence and AI in Games, 4(1):1–43.
Silver, D., Schrittwieser, J., Simonyan, K., et al. (2017). Mastering the game of Go without human knowledge. Nature, 550(7676):354–359.
Elo, A.E. (1978). The Rating of Chessplayers, Past and Present. Arco Publishing, New York.
Cowling, P.I., Powley, E.J., and Whitehouse, D. (2012). Information Set Monte Carlo Tree Search. IEEE Transactions on Computational Intelligence and AI in Games, 4(2):120–143.
Frank, I., and Basin, D. (1996). Search in Games with Incomplete Information: A Case Study Using Bridge Card Play. Artificial Intelligence, 100(1-2):87–123.
Glickman, M.E. (1999). Parameter Estimation in Large Dynamic Paired Comparison Experiments. Applied Statistics, 48(3):377–394.
Herbrich, R., Minka, T., and Graepel, T. (2006). TrueSkill™: A Bayesian Skill Rating System. Advances in Neural Information Processing Systems, 19:569–576.
Weng, R.C., and Lin, C.-J. (2011). A Bayesian Approximation Method for Online Ranking. Journal of Machine Learning Research, 12:267–300.
Silver, D., Hubert, T., Schrittwieser, J., et al. (2018). A General Reinforcement Learning Algorithm that Masters Chess, Shogi, and Go through Self-Play. Science, 362(6419):1140–1144.
Bowling, M., Burch, N., Johanson, M., and Tammelin, O. (2015). Heads-up Limit Hold’em Poker is Solved. Science, 347(6218):145–149.
Digital Defiance (2024). DoubleEighteen: Open-Source Domino Tile Rendering Library. https://github.com/digitaldefiance/double-eighteen
Tesauro, G. (1995). Temporal Difference Learning and TD-Gammon. Communications of the ACM, 38(3):58–68.
This is a deliberately coarse instrument: it uses pip totals rather than the full Commander scorer, and counts candidates near the best pip value rather than judging the seated policy’s chosen move. It is used only as a fixed, interpretable ingredient in the §8 composites and is not tuned against TEI. A higher value therefore reflects a construct (“good lines remain distinguishable”) that the proxy only approximates.↩︎