\documentclass[11pt,letterpaper]{article}

% Packages
\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{textgreek}  % For Ω, Δ
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{caption}
\usepackage{subcaption}

% Metadata
\title{Self-Play Calibration of Heuristic Agents for Mexican Train Under Competing Objectives}

\author{
  Digital Defiance \\
  \texttt{https://github.com/digitaldefiance/warp12}
}

\date{\today}

\begin{document}

\maketitle



\begin{abstract}
Mexican Train dominoes is commonly played under two incompatible victory conditions: \textbf{points} (lowest pip total when the round ends) and \textbf{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 \textbf{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 \textbf{skill ordering is stable under the points objective} (consistent rating gaps between tiers), while \textbf{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 \textbf{274{,}500-game} points self-play campaign across \textbf{549 configuration cells} (4 Warp factors $\times$ every legal fleet size $\times$ module configs, with Zeta only on eligible even fleets) is the skill/luck instrument for \textbf{board choice and points-module taxonomy}. From the \textbf{baseline} cells alone we find that \textbf{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; \textbf{Module Iota (Double Down) slightly raises it}. \textbf{Module Epsilon (Drafting)} collapses it (1.08/4 indicators) --- counter-intuitively, choosing your hand makes outcomes \emph{more} luck-dominated mid-game --- and is therefore designated \textbf{Warped / party}. \textbf{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 \textbf{Squad TEI} track (\texttt{squadRating}) after team-track calibration (\texttt{SQUADRONS\_RATING\_CALIBRATED}), not because Zeta is luck-dominant.

A \textbf{separate} \textbf{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 \emph{not} apples-to-apples with points; we report them in their own figures and do not merge $S$ averages across objectives except in one deliberate shared-ID contrast plot.

Finally, we report on \textbf{Class $\Omega$}, 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.
\end{abstract}

\section{Introduction}

\subsection{Mexican Train Dominoes}

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 \textit{trains} from a central \textit{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:
\begin{itemize}
\item \textbf{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.
\item \textbf{Go-out:} The first player to empty their hand wins immediately, ending the round.
\end{itemize}

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.

\subsection{Warp 12: Terminology and Presentation}

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 \textbf{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.

\begin{table}[h]
\centering
\caption{Warp 12 terminology mapped to Mexican Train equivalents}
\label{tab:terminology}
\begin{tabular}{@{}lll@{}}
\toprule
\textbf{Mexican Train} & \textbf{Warp 12} & \textbf{Technical} \\
\midrule
\multicolumn{3}{@{}l}{\textit{Game Elements}} \\
Domino / tile & Navigational Coordinate & \texttt{Coordinate} \\
Engine (starting double) & Spacedock & \texttt{engine} \\
Player's private train & Warp Trail & \texttt{ownTrail} \\
Mexican Train (public) & Neutral Zone & \texttt{neutralZone} \\
Train marker / forced play & Distress Beacon & \texttt{beacon} / \texttt{shieldsDown} \\
Unsatisfied double & Red Alert & \texttt{redAlert} \\
Draw pile & Uncharted Sectors & \texttt{pile} \\
\midrule
\multicolumn{3}{@{}l}{\textit{Players and Rating}} \\
Player & Captain & \texttt{PlayerId} \\
Skill rating & TEI grade & \texttt{TeiDisplay} (E/V/C/I/P + 0--99) \\
Underlying skill & OpenSkill $(\mu,\sigma)$ & \texttt{PlayerRating} \\
Game table & Sector / Fleet & \texttt{game} \\
\midrule
\multicolumn{3}{@{}l}{\textit{AI Tiers}} \\
Easy AI & Class IV (Ensign) & \texttt{ensign} \\
Medium AI & Class III (Lieutenant) & \texttt{lieutenant} \\
Hard AI & Class II (Commander) & \texttt{commander} \\
Expert (human only) & Class I & High TEI score / low $\sigma$ \\
\bottomrule
\end{tabular}
\end{table}

\textbf{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 \textbf{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.

\subsection{Motivation}

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:

\begin{itemize}
\item \textbf{Imperfect information:} Opponent hands and draw pile order are hidden, requiring belief-state reasoning rather than perfect-information tree search.
\item \textbf{Multi-player dynamics:} Unlike 2-player zero-sum games, Mexican Train typically involves 3--8 players with complex coalition and blocking incentives.
\item \textbf{Dual objectives:} The same rule set produces two strategically distinct games depending on win condition.
\item \textbf{Stochastic elements:} Random draws from the pile, variable starting hands, and opponent action uncertainty all contribute to outcome variance.
\end{itemize}

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?

\subsection{Contributions}

This paper makes the following contributions:

\begin{enumerate}
\item \textbf{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 $\mu \pm \sigma$ skill estimates and presents ratings as gamified grades (E/V/C/I/P + 0-99 score).

\item \textbf{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.

\item \textbf{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.

\item \textbf{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).

\item \textbf{Luck vs skill and module integrity} --- A \textbf{274{,}500-game} points matrix (549 cells) measures skill expression across Warp factors, fleet sizes, and module configs for TEI taxonomy. A \textbf{separate} go-out matrix (255{,}500 games / 511 cells) evaluates forked go-out modules without conflating $S$ 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).

\item \textbf{Neural self-play agent (Class $\Omega$)} --- 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.

\item \textbf{Open-source implementation} --- All code, data, and reproduction scripts are available through the warp12-engine package and associated repositories.
\end{enumerate}

\section{Related Work}

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.

\subsection{Domino and Tile Games}

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~\cite{doubleighteen2024} 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.

\subsection{Game AI Paradigms}

Several AI approaches are relevant to imperfect-information multi-player games like Mexican Train:

\textbf{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.

\textbf{Monte Carlo Tree Search (MCTS):} MCTS and its variants~\cite{browne2012mcts} have achieved strong results in perfect-information games (Go, Hex) and some imperfect-information settings. Information Set MCTS (ISMCTS)~\cite{cowling2012ismcts} 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 $\Omega$+ search backends.

\textbf{Deep reinforcement learning and self-play:} The AlphaZero family~\cite{silver2017alphazero,silver2018alphazero} 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 $\Omega$ agent represents a more modest self-play approach suitable for imperfect-information games with limited training compute.

\textbf{Counterfactual regret minimization:} CFR and its variants have achieved superhuman performance in poker~\cite{bowling2015heads}, 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.

\subsection{Skill Rating Systems}

Several rating systems are widely used in competitive games:

\textbf{Elo rating~\cite{elo1978rating}:} 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.

\textbf{Glicko~\cite{glickman1999glicko}:} Extends Elo by modeling rating uncertainty (RD), allowing ratings to drift during inactivity periods and providing confidence intervals.

\textbf{TrueSkill~\cite{herbrich2006trueskill}:} 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.

\textbf{OpenSkill:} An open-source implementation of rating systems inspired by TrueSkill and Weng-Lin ranking~\cite{wenglin2011}, designed for multi-player and team-based games. Like TrueSkill, it uses Gaussian skill models with mean ($\mu$) and standard deviation ($\sigma$) 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.

\subsection{Contribution Relative to Prior Work}

This work makes several novel contributions relative to the existing literature:

\begin{enumerate}
\item \textbf{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.

\item \textbf{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.

\item \textbf{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.

\item \textbf{Luck vs skill empirics:} The points module matrix (Section~\ref{sec:module-balance}) 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~\ref{sec:goout-module-balance}) is a separate instrument for forked go-out modules.

\item \textbf{Open-source implementation:} All code (rules engine, AI agents, calibration scripts) and data are publicly available for reproduction and extension.
\end{enumerate}

\section{Game Model and Rules Engine}

\subsection{Core Mexican Train Rules}

Mexican Train follows standard multi-trail domino game mechanics:

\begin{enumerate}
\item \textbf{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.

\item \textbf{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.

\item \textbf{Doubles:} When a double is played, it must be ``satisfied'' (another tile played on it) before anyone can play elsewhere. This creates a \textit{Red Alert} state that forces immediate resolution.

\item \textbf{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 \textit{Distress Beacon} and the state is \textit{Shields Down}.

\item \textbf{Mexican Train:} The public train is always available to all players, providing a release valve when private trains are blocked.

\item \textbf{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).
\end{enumerate}

\subsection{Implementation as State Machine}

Our implementation models the game as an immutable state machine with pure functions:

\begin{itemize}
\item \textbf{State:} Readonly data structures (\texttt{GameState}, \texttt{RoundState}, \texttt{TableState}) containing all game information: player hands, visible tiles, pile size, train states, alert conditions.

\item \textbf{Actions:} Typed events (\texttt{PlayAction}, \texttt{DrawAction}, etc.) representing legal moves.

\item \textbf{Transitions:} Pure function \texttt{applyAction(state, action) -> newState} implements all rules.

\item \textbf{Legal moves:} Function \texttt{getLegalMoves(state, playerId) -> Action[]} computes all valid plays for the current state.
\end{itemize}

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.

\subsection{House Rules and Modules}

Beyond core rules, Mexican Train has many common variants. Warp 12 implements these as runtime configuration rather than hard-coded variants:

\textbf{House rules} (boolean toggles):
\begin{itemize}
\item \texttt{requireOwnTrailFirst}: Must play on own train before playing elsewhere
\item \texttt{neutralZoneAfterAllTrails}: Mexican Train only available after personal train started
\item \texttt{dropToImpulse}: ``Uno''-style announce requirement when down to one tile
\end{itemize}

\textbf{Modules} (optional mechanics; \textbf{Warped} = exhibition only, never free-for-all rated):
\begin{itemize}
\item \textbf{Alpha (Continuum):} Special rules for 0-0 tile (Q-gamble mechanic)
\item \textbf{Beta (Salamander Penalty):} Pip penalty for holding the highest
double (\texttt{maxPip}-\texttt{maxPip}) at round end --- double its both-ends
value (Warp 12: 12-12 $\rightarrow$ 48; Warp 18: 18-18 $\rightarrow$ 72)
\item \textbf{Gamma (Sensor Grid):} Visible tile pool for potential recycling
\item \textbf{Delta (Warp Drive Spool):} Hazard marker transfers on Neutral Zone play
\item \textbf{Epsilon (Drafting):} Pack-and-pass deal --- \textbf{Warped / party} (collapses mid-game skill)
\item \textbf{Zeta (Squadrons):} Team play with shared trails --- skill-promote; rated Warp~12 writes Squad TEI only (never FFA)
\item \textbf{Eta (Temporal Debt):} Draw-debt tokens paid at round end
\item \textbf{Theta (Longest Trail):} Bonus for longest personal train
\item \textbf{Iota (Double Down):} Playing a double forces next player to draw 2 --- \emph{best skill ceiling}
\item \textbf{Kappa (Temporal Inversion):} Even rounds invert scoring --- \textbf{Warped} (intentionally breaks ordering)
\item \textbf{Lambda (Wormholes):} Double on Neutral Zone swaps trails
\item \textbf{Mu / Subspace Fracture:} Chicken-foot doubles (Own Trail / All Captains / All Doubles)
\end{itemize}

All modules affect legal move generation and scoring through the same \texttt{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.

\subsection{Information Structure and Game Complexity}

Mexican Train is an \textbf{imperfect information game}:

\begin{itemize}
\item \textbf{Public information:} All played tiles on trains, player hand counts, draw pile size, train marker positions, active Red Alert doubles
\item \textbf{Hidden information:} Contents of opponent hands, order of tiles in draw pile
\end{itemize}

This differs fundamentally from perfect-information games like chess or Go, where optimal play can theoretically be computed through exhaustive search. In Mexican Train:

\begin{enumerate}
\item \textbf{Belief states:} Agents must reason about probability distributions over possible opponent hands and pile orderings, not a single deterministic state.

\item \textbf{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~\cite{frank1996determinization} where different opponent hand distributions should lead to different plays.

\item \textbf{Information set search:} Methods like Information Set Monte Carlo Tree Search (ISMCTS)~\cite{cowling2012ismcts} explicitly handle information sets, avoiding some determinization pitfalls.
\end{enumerate}

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.

\subsection{Two Objectives as Two Different Games}

The choice of victory condition fundamentally changes optimal strategy:

\begin{table}[h]
\centering
\small
\begin{tabular}{@{}lll@{}}
\toprule
\textbf{Dimension} & \textbf{Points} & \textbf{Go-out} \\
\midrule
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 $\sim$64\% & Helpful at 2p; ISMCTS $\sim$31\% /4p \\
AI $\mu$ gaps (anchors) & 8.5 / 8.5 (IV$\to$III$\to$II) & 10.5 / 13.5 (wider to fight compression) \\
\bottomrule
\end{tabular}
\caption{Strategic differences between points and go-out objectives}
\label{tab:objectives}
\end{table}

In the \textbf{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 \textbf{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~\ref{fig:points-vs-goout} shows empirically that these objectives lead to measurably different strategic landscapes: go-out compresses implied $|\Delta\mu|$ relative to the calibrated anchors, while skill \emph{ordering} survives.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\textwidth]{../tools/nn/figures/figure10-points-vs-goout.png}
\caption{Points vs go-out strategic divergence under OpenSkill. Left: calibrated $|\Delta\mu|$ anchors versus $|\Delta\mu|$ implied by 2{,}000-game win rates --- go-out compression is stark. Right: weaker-side win rates show points keeps clearer tier separation than the go-out race.}
\label{fig:points-vs-goout}
\end{figure}

\section{Agent Architecture}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.95\textwidth]{../tools/nn/figures/figure9-architectures.png}
\caption{Agent architecture overview. Top: Heuristic policy stack (candidate generation through action selection). Middle-left: Class I* residual MLP adds learned correction to heuristics. Middle-right: Class $\Omega$ standalone policy/value heads (no heuristics). Bottom: Fleet Admiral multi-engine routing by player count.}
\label{fig:architectures}
\end{figure}

\subsection{Policy Stack}
Candidate generation from legal moves + special actions. Weighted heuristic scoring + temperature + blunder rate. Optional determinized lookahead: sample hidden hands consistent with counts $\to$ forward simulate in engine.

\subsection{Skill Presets (Class IV--II)}
\textbf{Points presets:} pip dump, trail pressure, Red Alert safety, Q timing. \textbf{Go-out presets:} sprint heuristics (\texttt{goOutWin}, \texttt{goOutFeasibility}, block leader, avoid mayhem). Separate \texttt{goOutTuning} thresholds per tier.

\subsection{Lookahead Policy (Product Decision)}
Lookahead \textbf{baked into tier}, not user-toggle --- keeps TEI comparable across clients. Class II go-out: depth 2 at \textbf{2 players only}; greedy at 3+. Class II points: greedy at all sizes --- \textbf{Commander is a local maximum in 2p points} (ISMCTS $\sim$51\% at 1,000 games; see \S 4.6). Monte Carlo Tree Search~\cite{browne2012mcts} with determinization~\cite{cowling2012ismcts} provides the search foundation for our lookahead implementations.

\subsection{Tactical Advisor}
Class II profile, blunder rate 0, lookahead on. Explainability: \texttt{explainWarpAiAction}, turn-resolution hints. \textbf{Unassisted-only TEI} --- advisor use tracked separately. Move \emph{ratings and reasons} are generated by the explainable heuristic Commander scorer; the \emph{suggested alternative} (``advisor would play'') uses the Commander neural policy ($\Omega$) when available, but \textbf{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).

\section{TEI (Tactical Effectiveness Index)}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\textwidth]{../tools/nn/figures/figure6-tei-ladder.png}
\caption{OpenSkill TEI ladder. Left: calibrated AI anchors as $\mu \pm \sigma$ by objective, with diamond markers for the conservative display rating $\mu-3\sigma$. Right: presentation layer --- letter grade from $\sigma$ (confidence) plus a 0--99 score from the display rating.}
\label{fig:tei-ladder}
\end{figure}

\subsection{Bayesian skill model}
TEI is a \textbf{presentation layer} over OpenSkill~\cite{wenglin2011}: each captain stores a Gaussian skill estimate $(\mu,\sigma)$ per track (points / go-out), updated after ranked match outcomes. Defaults for new humans: $\mu=25$, $\sigma=8.\!33$ (OpenSkill's $\mu/3$ prior). Matchmaking uses an ordinal $\mu-\sigma$; the UI never exposes raw Elo integers.

\textbf{FFA} means \textbf{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 \texttt{humanRating}. \textbf{Squad TEI} is the opposite track --- Module~Zeta crews rate as teams via \texttt{updateTeamRatings} into \texttt{squadRating} and never update FFA \texttt{humanRating}.

\subsection{Reference anchors}
Rated local and online play pits humans against fixed AI opponents. Each AI class holds a \textbf{frozen} $(\mu,\sigma)$ that never updates with match outcomes:

\begin{table}[h]
\centering
\begin{tabular}{@{}lcccccc@{}}
\toprule
\textbf{Track} & \multicolumn{2}{c}{\textbf{Ensign (IV)}} & \multicolumn{2}{c}{\textbf{Lieutenant (III)}} & \multicolumn{2}{c}{\textbf{Commander (II)}} \\
\cmidrule(lr){2-3}\cmidrule(lr){4-5}\cmidrule(lr){6-7}
 & $\mu$ & $\sigma$ & $\mu$ & $\sigma$ & $\mu$ & $\sigma$ \\
\midrule
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 \\
\bottomrule
\end{tabular}
\caption{Calibrated OpenSkill AI anchors (Phase~1.3; 2{,}000 games/matchup). Gaps: points $8.5/8.5$; go-out $10.5/13.5$ (widened against racing compression).}
\label{tab:openskill-anchors}
\end{table}

\textbf{v1 vs v2 Class II:} product history distinguished heuristic Commander (v1) from neural Class~$\Omega$ Commander (v2). Shipping Class~II is the $\Omega$ policy at the Commander commission; stored human $(\mu,\sigma)$ tuples are \textbf{not} re-banded when the Commander implementation changes --- only the fixed AI anchor row is.

\textbf{Calibration rule of thumb:} place Commander $\mu$ near where a human of comparable TEI score wins $\sim$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 $\Delta\mu$.

\subsection{Update rule}
After a sector, ranks feed \texttt{updateFFARatings} (free-for-all individual tables), \texttt{updateTeamRatings} (Zeta squads), or \texttt{updateVsAI} (openskill.js Bayesian update). Humans move; AI anchors stay fixed. Separate tracks: objective $\times$ (human profile / FFA vs squad). No Elo $K$-factor schedule.

\subsection{TEI Grade display}
Players see a gamified string such as \texttt{V67}:
\begin{itemize}
\item \textbf{Letter (E/V/C/I/P)} --- confidence from $\sigma$: Elite ($\sigma<0.5$), Veteran ($<1.5$), Consistent ($<2.5$), Improving ($<4.0$), Provisional ($\geq 4.0$). Demotions use unidirectional hysteresis so a single noisy sector does not immediately drop the letter.
\item \textbf{Score (0--99)} --- normalized conservative skill $\mathrm{clamp}(\mu-3\sigma)$ over a population window $[\sim\!10,\sim\!50]$, preventing new-player inflation.
\end{itemize}
Federation Academy commission ranks (Cadet$\to$Fleet Admiral) are a flavor map over the same grade+score; they are not a second rating.

\subsection{Percentile boards}
Go-out $|\Delta\mu|$ compresses; percentile (``Top X\%'') preserves rank meaning alongside the grade badge.

\subsection{Federation Academy}
One-time starting grade pick per track within a provisional / improving band.

\section{Calibration Methodology}

\subsection{Self-Play Loop}
\texttt{playSelfPlayGame} drives full games through \texttt{applyAction}. Blocked-round stall guard for pile-empty lockups (drafting phases are exempt --- mid-draft force-ends previously corrupted Spacedock recycle).

\subsection{Evaluation Suites}
\begin{enumerate}
\item \textbf{Head-to-head matrix} --- all Class IV--II pairs, both objectives (OpenSkill calibration: 2{,}000 games/matchup).
\item \textbf{Symmetric seating} --- same-skill first-seat win rate $\approx$ 50\%.
\item \textbf{Focus matchups} --- one strong captain vs $N-1$ weaker; rotate seat; table sizes 3--8 (go-out).
\item \textbf{House-rule sanity} --- e.g.\ Drop to Impulse penalty pass (\texttt{calibrate:ai-tei-dti}).
\item \textbf{Module integrity} --- 500 games $\times$ Warp $\times$ fleet $\times$ module (\S\ref{sec:module-balance}).
\end{enumerate}

\subsection{Metrics}
Completion rate ($\geq$ 85\% games decisive). Higher-skill win rate vs ordering thresholds. Implied $|\Delta\mu|$ from weaker-side win rate under the OpenSkill logistic. Expected win rate from calibrated anchor gaps (target $\sim$76\% / $\sim$91\% for successive / skip tiers). Skill-indicator count (0--4) for module balance.

\section{Results: AI Calibration}

See \texttt{docs/openskill-calibration-log.md} for dated OpenSkill self-play runs and \texttt{calibration-log.md} for legacy heuristic benches.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\textwidth]{../tools/nn/figures/figure7-calibration-matrix.png}
\caption{OpenSkill calibration heatmaps (2{,}000 games per matchup). Left: Points --- Ensign win rates 15.7\% / 9.2\% vs Lieutenant / Commander; Lieutenant vs Commander still the softest rung (36.3\%). Right: Go-out --- extreme compression (38--44\% weaker-side wins) even after widening $\mu$ gaps.}
\label{fig:calibration-matrix}
\end{figure}

\subsection{Points (Default Rules, 2{,}000 games/matchup)}
\begin{itemize}
\item Anchors: Ensign $\mu{=}18.0$, Lieutenant $26.5$, Commander $35.0$ ($\sigma$ $4.0/3.5/3.0$).
\item Ensign vs Lieutenant: Ensign wins \textbf{15.7\%} (expected $\sim$11.5\% at $|\Delta\mu|{=}8.5$) --- ordering clear.
\item Lieutenant vs Commander: Lieutenant wins \textbf{36.3\%} (expected $\sim$11.5\%) --- weakest separation; accepted for multiplayer domino compression.
\item Ensign vs Commander: Ensign wins \textbf{9.2\%} (expected $\sim$1.7\%) --- overall skip-tier separation remains useful.
\end{itemize}

\subsection{Go-out}
\begin{itemize}
\item Anchors: Ensign $\mu{=}17.5$, Lieutenant $28.0$, Commander $41.5$ ($\sigma$ $4.5/4.0/3.5$; gaps $10.5/13.5$).
\item Weaker-side win rates remain \textbf{38--44\%} despite wide $\mu$ gaps --- racing and binary outcomes dominate.
\item Decision: accept compression; preserve ordering; lean on percentile boards for human feedback.
\end{itemize}

\subsection{Class I*, Fleet Admiral, and Class $\Omega$ Benches}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.95\textwidth]{../tools/nn/figures/figure8-ai-bench-results.png}
\caption{AI bench results across experimental tiers. Top-left: Class I* neural residual iterations (imitation ceiling at 48--51\%). Top-right: Fleet Admiral search backends (expectimax wins 2p, ISMCTS wins 4p). Bottom-left: Class $\Omega$ fair-share rises with fleet size (points objective). Bottom-right: Fair-share hazard --- naive Elo-style translation overestimates shipping anchors vs the tempered OpenSkill Commander $\mu$.}
\label{fig:ai-bench-results}
\end{figure}

\textbf{Neural residual (MLP - Class I*):}
\begin{itemize}
\item \textbf{v1 (go-out):} 48.6\% win (500g, 2p).
\item \textbf{v2 (points):} 97.6\% top-1, 1.4\% flip, 51\% win --- Commander clone.
\item \textbf{v3 (RL regret):} 49.2\% win --- parity persists.
\end{itemize}

\textbf{Fleet Admiral (Search):}
\begin{itemize}
\item \textbf{Expectimax:} 64.4\% points 2p, 55.8\% go-out 2p vs Commander (500g each).
\item \textbf{ISMCTS (1,500 games):} 51.1\% combined in 2p points (dead heat); 31.2\% sector wins in 4p go-out vs $\sim$22--23\% per greedy Commander seat.
\end{itemize}

\textbf{Class $\Omega$ (Self-Play $\to$ Class II):}
\begin{itemize}
\item \textbf{2-Player:} Points $\sim$parity with legacy Commander; go-out seat-symmetric noise (one soft seat is not a shipping blocker).
\item \textbf{Fleet (3--8p):} Points fair-share rises with table size (peak $\sim$1.7$\times$ at 7--8p); go-out milder ($\sim$1.0--1.5$\times$ by slice). Overall means $\sim$\textbf{1.38$\times$} points / $\sim$\textbf{1.14$\times$} go-out at 200g/slice.
\item \textbf{Ship decision:} replace heuristic Class II with greedy $\Omega$; keep Commander as the commission track; hold $\Omega$+ and Class I* off the rated ladder.
\item \textbf{Lesson:} \texttt{fairShare} $\times$ $n$ win rates at large $N$ inflate mean strength vs what heads-up TEI players feel --- temper anchors for the rating context you ship.
\end{itemize}

\section{Luck vs Skill Across Warp Factors}
\label{sec:luck-skill-boards}

\subsection{Motivation and Configuration Matrix}

While Sections 6--7 calibrate AI tiers at a fixed Warp factor (double-12), Warp 12 ships with \textbf{four} playable Warp factors (9 / 12 / 15 / 18), each supporting different fleet sizes:

\begin{table}[h]
\centering
\begin{tabular}{@{}lcccc@{}}
\toprule
\textbf{Warp Factor} & \textbf{Max Pip} & \textbf{Fleet Limit} & \textbf{Tiles} & \textbf{Rated?} \\
\midrule
W9 & 9 & 2--4 players & 55 & Exhibition \\
W12 & 12 & 2--8 players & 91 & \textbf{Rated (TEI)} \\
W15 & 15 & 2--12 players & 136 & Exhibition \\
W18 & 18 & 2--18 players & 190 & Exhibition \\
\bottomrule
\end{tabular}
\caption{Warp factor configurations in Warp 12}
\end{table}

Players and designers routinely ask:
\begin{enumerate}
\item \textbf{Does Warp factor affect skill expression?} Higher pip sets increase hand entropy --- does this create meaningful strategic depth or just pip-dumping chaos?
\item \textbf{Does fleet size (player count) affect skill?} Conventional wisdom suggests more players = more noise, but is that true?
\item \textbf{Should TEI be calibrated differently for W9 vs W18?} If skill expression differs, should we adjust reference bands or restrict rating to W12?
\item \textbf{Why is W12 the rated factor?} Is it merely tradition (Mexican Train's historical default), or does the data justify it?
\end{enumerate}

To answer these questions empirically we use the \textbf{baseline (no-module) cells} of the Section~\ref{sec:module-balance} campaign --- the same Commander points self-play instrument over \textbf{38 configurations} (Warp factor $\times$ fleet size), \textbf{500 games per cell}. Earlier standalone or single-module pilot collections (including broken Drafting runs) are \textbf{not} treated as evidence; all claims in this section come from that integrated matrix:

\begin{table}[h]
\centering
\begin{tabular}{@{}lccc@{}}
\toprule
\textbf{Warp Factor} & \textbf{Fleet Sizes} & \textbf{Configs} & \textbf{Total Games} \\
\midrule
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 \\
\midrule
\textbf{Total} & & \textbf{38} & \textbf{19{,}000 (baseline subset)} \\
\bottomrule
\end{tabular}
\caption{Baseline cells within the 274{,}500-game points matrix (no modules) used for Warp-factor / fleet analysis}
\end{table}

All games used the \textbf{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.

\subsection{Metrics and Composite Indices}
\label{sec:luck-skill-instrument}

Per-turn telemetries are collected by the engine sampler (\texttt{LuckSkillMetricsSampler}) and averaged per game. All §8 tables and figures are computed from those game-level averages after applying the composites below --- matching \texttt{tools/nn/process-luck-skill-data.py}, which produced \texttt{luck-skill-processed.csv}.

\textbf{Raw metrics (game averages):}
\begin{itemize}
\item \texttt{avgLegalMoves}: mean number of legal candidate actions per turn (decision branching).
\item \texttt{avgValueSpread}: mean gap between the highest- and lowest-valued legal candidates under a lightweight \emph{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).
\item \texttt{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).\footnote{This is a deliberately coarse instrument: it uses pip totals rather than the full Commander scorer, and counts \emph{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 \S 8 composites and is not tuned against TEI. A higher value therefore reflects a construct (``good lines remain distinguishable'') that the proxy only approximates.}
\item \texttt{avgConstrainedTileFraction}: fraction of hand coordinates that can legally attach to only one open trail (forced/near-forced placement pressure).
\item \texttt{avgHandEntropy}: Shannon entropy of the pip multiset in hand (bits).
\item \texttt{avgUniqueTrains}: mean count of distinct trail ends the hand can reach (used as a raw diagnostic; not an input to the §8 composites).
\end{itemize}

\textbf{Instrument design (constructs $\to$ composites).}
We wanted continuous summaries that rise when a configuration offers \emph{more ways for better play to matter}, and fall when turns are forced or undifferentiated. The three raw ingredients of \texttt{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 \texttt{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:

\begin{align}
\text{skillIndex}
  &= 0.4\,\texttt{avgValueSpread}
   + 0.3\,\texttt{avgNearOptimalFraction}
   + 0.3\,\texttt{avgLegalMoves} \\
\text{luckIndex}
  &= 0.5\,(1 - \texttt{avgNearOptimalFraction})
   + 0.3\,\texttt{avgConstrainedTileFraction}
   + 0.2\,\bigl(1 / (\texttt{avgLegalMoves} + 1)\bigr) \\
\text{decisionQuality}
  &= \texttt{avgLegalMoves} \times \texttt{avgValueSpread}
\end{align}

\textbf{Reading the composites:}
\begin{itemize}
\item Higher \texttt{skillIndex} $\Rightarrow$ more decision branching, more score separation among candidates, and more near-optimal opportunities --- configurations where skill can express.
\item Higher \texttt{luckIndex} $\Rightarrow$ more forced placements, weaker near-optimal signal, and fewer candidates --- configurations where outcomes lean on draw/hand luck.
\item \texttt{decisionQuality} is a simple branching$\times$discrimination diagnostic (no near-optimal term).
\end{itemize}

\textbf{Relation to Section~\ref{sec:module-balance}.}
Section~9 keeps the \emph{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.

\subsection{Hypotheses}

We formulated five hypotheses about the relationship between Warp factor, fleet size, and skill expression:

\begin{description}
\item[H1 (Warp Factor Effect):] Higher Warp factors exhibit higher skill indices due to increased tile diversity and hand complexity.
\item[H2 (Fleet Size Effect):] Larger fleets correlate with higher skill expression within each Warp factor.
\item[H3 (Interaction):] The relationship between fleet size and skill differs across Warp factors (non-additive effects).
\item[H4 (Complexity-Coherence):] Decision complexity (\texttt{avgLegalMoves}) and hand coherence (\texttt{avgHandEntropy}) exhibit meaningful correlation.
\item[H5 (Monotonic Trends):] Skill index increases monotonically with fleet size within each Warp factor.
\end{description}

\subsection{Statistical Results}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{../tools/nn/figures/figure1-cross-factor-comparison.png}
\caption{Cross-factor skill index comparison for 2--4 player configurations. W12 exhibits the highest skill expression in the balanced comparison range.}
\label{fig:cross-factor}
\end{figure}

\subsubsection{H1: Warp Factor Effect (ANOVA)}

We restricted analysis to the \textbf{2--4 player range} (balanced design across all factors) to isolate the Warp factor effect. One-way ANOVA on skillIndex by Warp factor:

\begin{table}[h]
\centering
\begin{tabular}{@{}lccc@{}}
\toprule
\textbf{Warp Factor} & \textbf{Mean skillIndex} & \textbf{SD} & \textbf{$n$} \\
\midrule
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 \\
\bottomrule
\end{tabular}
\caption{Mean skill index by Warp factor (2--4 players)}
\end{table}

\textbf{Result:} $F(3, 5996) = 817.14$, $p < 0.001$, $\eta^2 = 0.290$ (large effect size). \textbf{H1 is strongly supported.}

Post-hoc pairwise comparisons (Tukey HSD) show \textbf{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.

\subsubsection{H2: Fleet Size Effect (Correlation)}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{../tools/nn/figures/figure2-fleet-size-effects.png}
\caption{Fleet size effect on skill expression by Warp factor. W12 shows the steepest gradient ($r = 0.875$), indicating highest sensitivity to player count.}
\label{fig:fleet-size-effects}
\end{figure}

Within each Warp factor, we computed Pearson correlation between \texttt{playerCount} and \texttt{skillIndex}:

\begin{table}[h]
\centering
\begin{tabular}{@{}lccccc@{}}
\toprule
\textbf{Warp} & \textbf{$n$} & \textbf{Fleet Sizes} & \textbf{Pearson $r$} & \textbf{$p$-value} & \textbf{$R^2$} \\
\midrule
W9 & 1,500 & 2--4 & 0.051 & 0.049 & 0.003 \\
W12 & 3,500 & 2--8 & \textbf{0.875} & $<0.001$ & 0.766 \\
W15 & 5,500 & 2--12 & \textbf{0.893} & $<0.001$ & 0.798 \\
W18 & 8,500 & 2--18 & \textbf{0.840} & $<0.001$ & 0.706 \\
\bottomrule
\end{tabular}
\caption{Fleet size effect on skill expression by Warp factor}
\end{table}

\textbf{Result:} \textbf{H2 is strongly supported} for W12/15/18 (all $r > 0.84$, $p < 0.001$). W9 shows a weak but significant positive effect ($r = 0.051$, $p = 0.049$). \textbf{W12 exhibits the steepest fleet size effect} ($r = 0.875$), making it the most sensitive Warp factor to player count.

\textbf{Unexpected finding:} Conventional wisdom predicts \textit{more players = more noise = less skill}. Our data show the \textbf{opposite}: skill index \textit{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.

\subsubsection{H3: Interaction Effect}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\textwidth]{../tools/nn/figures/figure3-complexity-heatmap.png}
\caption{Decision complexity heatmap (avgLegalMoves) by Warp factor and fleet size. Note the relatively constant branching factor ($\sim$2 moves/turn) despite large variations in configuration.}
\label{fig:complexity-heatmap}
\end{figure}

To test whether the fleet size effect \textit{differs} across Warp factors, we compared regression slopes for the 2--4 player range (balanced design):

\begin{table}[h]
\centering
\begin{tabular}{@{}lc@{}}
\toprule
\textbf{Warp Factor} & \textbf{Slope (skillIndex $\sim$ playerCount)} \\
\midrule
W9 & 0.0054 \\
W12 & \textbf{0.3889} \\
W15 & 0.3172 \\
W18 & 0.2085 \\
\bottomrule
\end{tabular}
\caption{Interaction effect: slope variance across Warp factors}
\end{table}

Slope variance = 0.0209. \textbf{H3 is supported:} fleet size matters \textit{much more} for W12 than for W9. This interaction justifies \textbf{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.

\subsubsection{H4: Decision Complexity vs Hand Coherence}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{../tools/nn/figures/figure4-coherence-vs-depth.png}
\caption{Hand entropy (coherence) vs near-optimal play fraction. The weak correlation ($r = 0.009$) suggests that tactical richness and strategic coherence are orthogonal dimensions.}
\label{fig:coherence-vs-depth}
\end{figure}

Correlation between \texttt{avgLegalMoves} (decision complexity) and \texttt{avgHandEntropy} (hand coherence):

\begin{itemize}
\item Pearson $r = 0.009$, $p = 0.232$ (not significant)
\item Spearman $\rho = -0.152$, $p < 0.001$ (weak negative monotonic trend)
\end{itemize}

\textbf{Result:} \textbf{H4 is not supported.} Decision complexity and hand entropy are largely independent. This suggests that \textit{tactical richness} (number of legal moves) and \textit{strategic coherence} (hand composition) are orthogonal dimensions of game state.

\subsubsection{H5: Monotonic Trends}

Kendall's $\tau$ (rank correlation) between \texttt{playerCount} and \texttt{skillIndex}:

\begin{table}[h]
\centering
\begin{tabular}{@{}lcl@{}}
\toprule
\textbf{Warp Factor} & \textbf{Kendall's $\tau$} & \textbf{$p$-value} \\
\midrule
W9 & 0.044 & 0.025 \\
W12 & \textbf{0.727} & $<0.001$ \\
W15 & \textbf{0.767} & $<0.001$ \\
W18 & \textbf{0.672} & $<0.001$ \\
\bottomrule
\end{tabular}
\caption{Monotonic trend test (Kendall's $\tau$)}
\end{table}

\textbf{Result:} \textbf{H5 is supported} for W12/15/18 (strong positive monotonic trends). However, examining individual fleet sizes reveals \textbf{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 \textbf{ergodic limits}: at extreme fleet sizes, some configurations may hit resource constraints (e.g., near-empty draw pile, forced blocking).

\subsection{Key Findings}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{../tools/nn/figures/figure5-skill-luck-balance.png}
\caption{Skill vs luck balance across all configurations. Points above the diagonal (more skill than luck) include all W12/15/18 configurations. W18/18p exhibits the highest skill/luck ratio (8.10).}
\label{fig:skill-luck-balance}
\end{figure}

\subsubsection{W18/18p is Not a Crapshoot}

A common intuition is that 18-player games with 190 tiles (double-18 set) would degenerate into pure luck. Our data \textbf{contradicts} this:

\begin{table}[h]
\centering
\begin{tabular}{@{}lcccc@{}}
\toprule
\textbf{Config} & \textbf{skillIndex} & \textbf{luckIndex} & \textbf{Skill Ratio} & \textbf{Luck Ratio} \\
\midrule
W18/2p & 1.631 & 0.289 & 1.00$\times$ & 1.00$\times$ \\
W18/18p & 2.834 & 0.350 & \textbf{1.74$\times$} & 1.21$\times$ \\
\bottomrule
\end{tabular}
\caption{W18: 2-player vs 18-player comparison}
\end{table}

\textbf{Interpretation:} At 18 players, skill expression is \textbf{1.74$\times$ higher} than heads-up, while luck increases only 1.21$\times$. The skill/luck \textit{ratio} actually \textbf{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.

\subsubsection{Cross-Factor Comparison at Maximum Fleet Size}

\begin{table}[h]
\centering
\begin{tabular}{@{}lccc@{}}
\toprule
\textbf{Configuration} & \textbf{skillIndex} & \textbf{luckIndex} & \textbf{Skill/Luck Ratio} \\
\midrule
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 & \textbf{8.10} \\
\bottomrule
\end{tabular}
\caption{Skill and luck at maximum fleet size per Warp factor}
\end{table}

\textbf{W18/18p has the \textit{highest} skill/luck ratio of any configuration tested.} This challenges the intuition that larger games are necessarily more luck-dependent.

\subsubsection{W12 Justification for TEI Rating}

Why is W12 the sole rated factor? The data provide three empirical justifications:

\begin{enumerate}
\item \textbf{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).
\item \textbf{Steepest fleet size gradient:} W12 shows $r = 0.875$ for fleet size effect --- the \textit{most sensitive} to player count of any factor. This means W12 best discriminates between skill levels across table sizes.
\item \textbf{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.
\end{enumerate}

\textbf{Conclusion:} W12 is not merely historical tradition --- it is the \textbf{empirically optimal choice} for a skill-testing rating system.

\subsubsection{Hand Entropy Increases with Warp Factor}

Hand coherence (\texttt{avgHandEntropy}) increases monotonically with Warp factor:

\begin{table}[h]
\centering
\begin{tabular}{@{}lc@{}}
\toprule
\textbf{Warp Factor} & \textbf{Mean Hand Entropy (bits)} \\
\midrule
W9 & 2.09 \\
W12 & 2.34 \\
W15 & 2.52 \\
W18 & 2.66 \\
\bottomrule
\end{tabular}
\caption{Mean hand entropy by Warp factor (all fleet sizes)}
\end{table}

Higher entropy indicates more \textit{diverse} hands (less clustering around specific pips). This confirms that larger tile sets create more strategic flexibility but also more decision complexity.

\subsubsection{Decision Complexity Stays Constant}

Despite large variations in Warp factor and fleet size, \texttt{avgLegalMoves} remains remarkably \textbf{constant} at $\sim$1.8--2.2 moves per turn across all configurations. This suggests that the \textit{branching factor} of Mexican Train is inherently bounded by game mechanics (trail constraints, hand composition), not by tile set size or player count.

\subsection{Practical Implications}

\subsubsection{TEI Calibration Strategy}

\begin{enumerate}
\item \textbf{Anchor TEI on W12 only.} Exhibition factors (W9/15/18) should \textit{not} have separate AI $(\mu,\sigma)$ rows --- they share the same Class IV--II opponents with W12 anchors.
\item \textbf{Do not soften OpenSkill updates by fleet size.} Larger fleets \textit{increase} skill expression, not variance; Bayesian $\sigma$ shrinkage already captures confidence.
\item \textbf{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 $|\Delta\mu|$ compresses.
\end{enumerate}

\subsubsection{Future Exhibition Modes}

\begin{itemize}
\item \textbf{W9 (casual / quick):} Lower skill ceiling but valid for practice. Best at 2--4 players.
\item \textbf{W15 (tactical depth):} High skill expression (skillIndex $\sim$2.80 /12p), suitable for unrated tournaments or challenge modes.
\item \textbf{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.
\end{itemize}

\subsubsection{Go-Out Objective}

This study used \textbf{points only}. Go-out exhibits higher variance (Section 7.2), suggesting:
\begin{itemize}
\item Skill/luck under go-out is reported in Section~\ref{sec:goout-module-balance} as a separate module-matrix instrument (not pooled with points).
\item W12/2--4p may remain optimal for points TEI; large-fleet go-out (8+ players) still shows high $S$ on the go-out instrument but race variance is a separate TEI-calibration concern.
\end{itemize}

\section{Module Balance (Points): A 274{,}500-Game Competitive-Integrity Study}
\label{sec:module-balance}

Section~\ref{sec:luck-skill-boards} used the \textbf{baseline} slice of this \textbf{points} campaign to show that W12 is the right \emph{board} for rating. The full points matrix answers the product question: which \emph{optional modules} preserve that skill signal, and which should be barred from TEI? Go-out module forks are evaluated separately in Section~\ref{sec:goout-module-balance}; we do not pool $S$ averages across objectives.

\subsection{Design questions}
\begin{itemize}
\item Does any single module collapse skill expression relative to baseline?
\item Does stacking modules (``all'') destroy discrimination, or compound depth?
\item Is Module Epsilon (drafting) the skill upgrade it appears to be?
\item Can Module Zeta (squadrons) enter the rated pool?
\end{itemize}

\subsection{Method}
\label{sec:module-instrument}

We collected \textbf{500 Commander self-play games} on each of \textbf{549 configuration cells} --- Warp factor $\{9,12,15,18\}$ $\times$ every legal fleet size $\times$ module configs (baseline, Alpha--Mu, Official Warp 12, ``all'', and Zeta on eligible fleets only) --- for \textbf{274{,}500 games} under the \textbf{points} objective, using the same \texttt{LuckSkillMetricsSampler} as Section~\ref{sec:luck-skill-instrument}. (Earlier drafts that counted Zeta on ineligible fleets as 570 cells are superseded.)

\textbf{Module ranking instrument (distinct from §8 composites).}
For each cell we average the raw telemetries, then score four absolute pass/fail indicators (implemented in \texttt{collect-luck-skill-modules.ts}):

\begin{enumerate}
\item Legal moves / turn $\geq 3.0$ --- enough branching that play is not almost forced.
\item Constrained-tile fraction $> 0.5$ --- a majority of hand tiles have a narrow legal attachment (pressure / planning).
\item Move-value spread $\geq 2.0$ --- heuristic scores still separate best from worst candidates.
\item Unique pips in hand $\geq 5.0$ --- enough pip diversity that connectivity choices remain non-trivial.
\end{enumerate}

The integer \textbf{skill-indicator count} $S \in \{0,1,2,3,4\}$ is the primary ranking key. Cell taxonomy: skill-dominant if $S \geq 3$, mixed if $S = 2$, luck-dominant if $S \leq 1$. Module averages of $S$ drive product recommendations (Promote vs Warped), not the continuous \texttt{skillIndex} of Section~\ref{sec:luck-skill-boards}. 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 \texttt{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.

\subsection{Results: most modules preserve the ceiling}
\input{../tools/nn/tables/table4-module-ranking.tex}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\textwidth]{../tools/nn/figures/figure11-module-skill-ranking.png}
\caption{\textbf{Points instrument.} Module skill ceiling across Warp factors and fleet sizes. Nearly every module sits at or above the baseline Promote line (2.5). Epsilon is the sole collapse (Warped/party). Zeta remains high-skill (Promote; Squad TEI, never FFA).}
\label{fig:module-ranking}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.78\textwidth]{../tools/nn/figures/figure12-module-warp-heatmap.png}
\caption{\textbf{Points instrument.} Mean skill indicators by module and Warp factor. Epsilon is red across the board; the Official preset and single-module variants stay skill-stable, especially on W12+.}
\label{fig:module-heatmap}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.95\textwidth]{../tools/nn/figures/figure14-module-metric-profiles.png}
\caption{Decision-quality profiles for rating-relevant modules. Epsilon trails on every axis; Iota leads on legal moves, constrained tiles, and move-value spread.}
\label{fig:module-profiles}
\end{figure}

Key observations:
\begin{itemize}
\item \textbf{Baseline and most single modules} average \textbf{2.89/4} indicators --- skill-dominant in 34/38 cells.
\item \textbf{Iota (Double Down)} is the only clear skill \emph{upgrade}: \textbf{3.00/4}, skill-dominant in \textbf{38/38} cells. On W12 it lifts move-value spread by $+0.26$ to $+0.86$ pips versus baseline depending on fleet size.
\item \textbf{Official Warp 12} remains competitive at \textbf{2.82/4} (one luck-leaning cell: W9/4p), justifying the rated preset.
\item \textbf{``All modules''} stress-test scores \textbf{2.95/4} when Zeta is eligible or omitted --- stacking does \emph{not} destroy discrimination under Commander play.
\item \textbf{Zeta} on eligible fleets averages \textbf{2.94/4} (16/17 skill-dominant) --- shared trails keep pressure high.
\end{itemize}

\subsection{The drafting paradox: Epsilon as a party module}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.95\textwidth]{../tools/nn/figures/figure13-epsilon-collapse.png}
\caption{Epsilon collapse versus baseline, Iota, and Official across all Warp factors. Drafting never recovers the skill ceiling that pack-and-pass seems to promise.}
\label{fig:epsilon-collapse}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.9\textwidth]{../tools/nn/figures/figure15-w12-module-fleet-curves.png}
\caption{Warp 12 fleet curves for rating-relevant modules. Epsilon is the unique trough at every fleet size; Iota and Official track near the skill ceiling.}
\label{fig:w12-module-curves}
\end{figure}

Intuition says drafting should \emph{increase} skill: captains choose their hands. Empirically, Epsilon averages \textbf{1.08/4} indicators and is luck-dominant in \textbf{27/38} cells (0/4 on every W9 fleet). Relative to baseline it shows:
\begin{itemize}
\item Legal moves: $\sim$1.30 vs $\sim$2.09
\item Constrained tiles: 36\% vs 57\%
\item Move-value spread: 2.08 vs 3.19
\item Unique pips in hand: 5.0 vs 7.7
\end{itemize}

\textbf{Interpretation:} Drafting front-loads luck into the deal and produces more coherent personal hands. Mid-game branching then \emph{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 \textbf{party / social} module --- the requisition ritual is the entertainment --- and a poor competitive one.

Figure~\ref{fig:epsilon-deficit} maps the deficit cell-by-cell; Epsilon never recovers baseline skill indicators on any Warp/fleet cell we collected. Figure~\ref{fig:hand-pressure} shows the same squeeze on constrained-tile fraction and unique pips --- the two mid-game pressure gauges most diagnostic of Warped play.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.88\textwidth]{../tools/nn/figures/figure16-epsilon-deficit-heatmap.png}
\caption{Epsilon skill-indicator deficit versus baseline across Warp factors and fleet sizes (negative $=$ worse than pack-and-pass). The collapse is wide, not a single bad fleet.}
\label{fig:epsilon-deficit}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\textwidth]{../tools/nn/figures/figure20-hand-pressure-bars.png}
\caption{Hand-pressure bars for rating-relevant modules. Left: constrained-tile fraction. Right: unique pips in hand. Epsilon sits alone at the bottom of both axes.}
\label{fig:hand-pressure}
\end{figure}

\subsection{Iota and outcome mix}
Iota (Double Down) is the dual product win: Figure~\ref{fig:iota-lift} shows its W12 move-value-spread lift versus baseline (+0.26 to +0.86 depending on fleet). Figure~\ref{fig:outcome-mix} stacks skill-/mixed-/luck-dominant cell counts; Iota is all skill-dominant, while Epsilon is mostly luck. Figure~\ref{fig:legal-vs-spread} places each cell in (legal moves, move-value spread) space --- Epsilon clusters low; Iota/baseline/Zeta occupy the skillful cloud.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.85\textwidth]{../tools/nn/figures/figure17-iota-spread-lift-w12.png}
\caption{Iota move-value-spread lift on Warp~12 (fleet sizes 2--8). Double Down widens discriminating choices without collapsing branching.}
\label{fig:iota-lift}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\textwidth]{../tools/nn/figures/figure18-module-outcome-mix.png}
\caption{Skill / mixed / luck outcome mix by module (fraction of configuration cells). Promote modules are skill-dominated bars; Epsilon is mostly luck.}
\label{fig:outcome-mix}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.88\textwidth]{../tools/nn/figures/figure19-legal-vs-spread-scatter.png}
\caption{Per-cell scatter of mean legal moves vs move-value spread for baseline, Iota, Official, Zeta, and Epsilon. Epsilon occupies the lower-left Warped pocket.}
\label{fig:legal-vs-spread}
\end{figure}

\subsection{Zeta: skillful team play, Squadron TEI (never FFA)}
Zeta is the dual of Epsilon on the skill instrument: \textbf{2.94/4} indicators on eligible fleets (16/17 skill-dominant). Shared trails and bridge seating preserve decision pressure. It is \emph{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 (\texttt{squadRating}), gated by \texttt{SQUADRONS\_RATING\_CALIBRATED} (now \texttt{true} after 2v2 ordering calibration). Crew nights never pollute the FFA human ladder.

\subsection{Product recommendations}
\begin{itemize}
\item \textbf{Rated (Promote):} Official Warp 12; baseline; Alpha--Delta, Eta, Theta, Iota, Lambda, Mu (own-trail fracture); Zeta on rated Warp~12 writes \textbf{Squad TEI} only.
\item \textbf{Warped / party:} Epsilon --- exhibition only; label as luck-leaning social play.
\item \textbf{Already Warped (RULES):} Kappa (intentional score inversion).
\item \textbf{Do not merge} Epsilon-enabled boards into rated FFA TEI; keep exhibition ledgers separate when Warped modules run.
\end{itemize}

\section{Go-out Module Balance: A Separate 255{,}500-Game Instrument}
\label{sec:goout-module-balance}

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 \textbf{separate instrument}: same sampler and $S\in\{0..4\}$ indicators, but \textbf{not} an apples-to-apples comparison of module means to Section~\ref{sec:module-balance}. We never plot forked modules on a shared points/go-out taxonomy bar except where noted below.

\subsection{Method (go-out)}
\textbf{511 cells} $\times$ 500 Commander games = \textbf{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 (\texttt{figure21}--\texttt{figure28}, Table~\ref{tab:goout-module-ranking}).

\input{../tools/nn/tables/table5-goout-module-ranking.tex}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\textwidth]{../tools/nn/figures/figure21-goout-module-skill-ranking.png}
\caption{\textbf{Go-out instrument only.} Module skill ceiling under go-out forks. Do not compare bar heights to Figure~\ref{fig:module-ranking} as a single ranking.}
\label{fig:goout-module-ranking}
\end{figure}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.78\textwidth]{../tools/nn/figures/figure22-goout-module-warp-heatmap.png}
\caption{\textbf{Go-out instrument.} Mean skill indicators by module and Warp factor under go-out.}
\label{fig:goout-module-heatmap}
\end{figure}

\subsection{Results (go-out)}
\begin{itemize}
\item Most go-out configs remain skill-dominant (baseline and most singles $\approx$ 2.97/4).
\item \textbf{Iota} still tops the go-out instrument at 3.00/4 (38/38 skill-dominant).
\item Forked modules (Surge, Dig, Momentum, Hot Potato) do \emph{not} collapse $S$ under Commander play.
\item \textbf{Kappa (Hand Exchange)} stays Warped by product policy despite a high $S$ (2.89/4) --- exhibition / non-FFA, parallel to points Kappa's Warped designation for a different mechanical reason.
\item Stacked ``all'' is slightly softer (2.82/4; more mixed cells) but not luck-dominant.
\end{itemize}

\subsection{Deliberate contrast: shared module IDs only}
Figure~\ref{fig:objective-module-contrast} is the \emph{only} dual-objective module plot. It includes modules whose \textbf{rules are shared} across objectives (baseline, Iota, Official, Zeta, Gamma, Lambda, Mu) and \textbf{excludes} forks (Beta/Delta/Eta/Theta/Kappa). The point is compare/contrast of instruments on comparable rules --- not a merged taxonomy.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.95\textwidth]{../tools/nn/figures/figure29-points-vs-goout-shared-modules-contrast.png}
\caption{Compare/contrast only: average skill indicators for shared module IDs under the points vs go-out instruments. Forked modules omitted.}
\label{fig:objective-module-contrast}
\end{figure}

\section{Discussion}

\subsection{What Calibration Teaches}
\begin{itemize}
\item \textbf{Points} behaves like a smooth skill ladder --- good fit for OpenSkill $\mu$ spacing.
\item \textbf{Go-out} behaves like a stochastic race --- ordering survives, $|\Delta\mu|$ magnitudes don't.
\item \textbf{Table size} erodes heads-up skill signal --- focus tests essential.
\item \textbf{House rules} mostly reshape legality --- heuristics gated at runtime suffice for DTI.
\item \textbf{Commander heuristics are a ceiling in 2p points} --- ISMCTS~\cite{cowling2012ismcts} parity is confirmation, not failure; expectimax extracts the residual edge via explicit tree search.
\item \textbf{Search value is mode-dependent} --- expectimax for 2p, ISMCTS for multi-player chaos.
\item \textbf{Neural Class II can replace heuristics without a second lobby tier} --- keep $\sigma=$\texttt{commander}, update \texttt{rulesProfileId} + Commander anchor $\mu$.
\item \textbf{Fair-share $\neq$ $\Delta\mu$ bump} --- translating fleet-mean $\Omega$/Commander ratio with Elo-style $400 \log_{10}(\text{fs})$ overstates anchors when most rated matches are 2--4p; temper for the rating context you ship.
\item \textbf{Imitation nets (Class I*) plateau at the teacher;} $\Omega$ succeeds by targeting search visit distributions (Path B), not Commander picks, following principles similar to AlphaZero's self-play approach~\cite{silver2017alphazero}.
\item \textbf{Larger fleets increase skill, not noise} --- baseline cells of the 274.5K-game points matrix show skill index rises with player count ($r > 0.84$ for W12/15/18), contradicting the ``more players = crapshoot'' intuition.
\item \textbf{W12 is empirically optimal for TEI} --- highest baseline skill in 2--4p range, steepest fleet size gradient ($r = 0.875$), best discriminator of player ability.
\item \textbf{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).
\item \textbf{Team play is skillful and rates on Squad TEI} --- Module Zeta preserves skill (2.94/4); rated crew sectors update \texttt{squadRating}, never FFA \texttt{humanRating}.
\item \textbf{Iota is the rare module that raises the ceiling} --- Double Down is the only single module with 38/38 skill-dominant cells.
\end{itemize}

\subsection{Design Recommendations}
\begin{itemize}
\item Never merge points and go-out TEI.
\item Show percentile on go-out boards.
\item Don't expose lookahead / $\Omega$+ as a rating-affecting toggle without $\Delta_{\text{search}}$ or marking unrated.
\item Retune weights selectively (popular hosted configs), not full combinatorial grid.
\item Recalibrate Commander $\mu$ when Class II \textbf{implementation} changes; do not rewrite stored human ratings.
\item Prefer one strong rated tier over ``Commander + Omega + Class I*'' confusion.
\item Anchor TEI exclusively on W12; treat W9/15/18 as exhibition using the same Class IV--II opponents.
\item Do not soften OpenSkill updates for large fleets --- skill expression increases, not variance.
\item Mark Epsilon \textbf{Warped / party} in the product; promote Iota and Official for rated presets; treat Zeta as skill-promote with live Squad TEI (never FFA).
\end{itemize}

\subsection{Limitations}
\begin{itemize}
\item Heuristic agents, not equilibrium solvers.
\item Calibration seed and game count sensitivity.
\item No human champion study yet.
\item Module study used points objective and Commander seats only --- go-out and mixed human/AI may differ.
\item Legacy ineligible Zeta cells exist in the dataset; filtered for Zeta claims.
\item W18 non-monotonicity at 17p/18p suggests potential edge cases at extreme configurations.
\item §8 continuous composites and §9 binary indicators share sampler hardware but are not interchangeable scales; do not treat a cell's \texttt{skillIndex} and its $S/4$ count as the same quantity.
\item Composite weights and indicator thresholds are fixed heuristic guards, not cross-validated predictors of human TEI.
\end{itemize}

\section{Conclusion}

TEI and self-play calibration provide a \textbf{practical, honest skill ladder} for a game too messy for classical solving. Points and go-out should be treated as \textbf{two calibration targets} on one engine. \textbf{Class I*} and Fleet Admiral benches show that \textbf{no single algorithm wins every mode}: Commander heuristics are near-optimal in 2p points (ISMCTS~\cite{cowling2012ismcts} $\sim$51\%), expectimax extracts a $\sim$64\% edge there via explicit tree search, and ISMCTS outperforms greedy seats in 4p go-out ($\sim$31\% vs $\sim$23\%). \textbf{Class $\Omega$} shows that a pure self-play net can \textbf{replace} heuristic Class II without a fourth lobby tier --- but \textbf{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 \textbf{274{,}500-game points module study} (549 cells; Section~\ref{sec:module-balance}) is the authoritative skill/luck instrument for TEI taxonomy. From its \textbf{baseline} Warp$\times$fleet slice:

\begin{enumerate}
\item \textbf{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 ($r = 0.84$--$0.89$ for W12/15/18). W18/18p exhibits 1.74$\times$ the skill of W18/2p, with only 1.21$\times$ the luck --- the \textit{highest} skill/luck ratio of any configuration tested.

\item \textbf{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 ($r = 0.875$), making it the best discriminator of player ability. This justifies restricting TEI rating to W12 while offering W9/15/18 as exhibition modes.

\item \textbf{Hand entropy increases with Warp factor, but decision complexity stays constant.} Larger tile sets create more diverse hands (W9: 2.09 bits $\to$ W18: 2.66 bits entropy) but do not increase branching factor (mean legal moves $\sim$1.8--2.2 across all configs). This suggests Mexican Train's tactical depth scales with tile diversity, not combinatorial explosion.
\end{enumerate}

Across the full module matrix the product constraints are:

\begin{enumerate}
\item \textbf{Most modules are rating-safe.} Baseline, Official Warp 12, and the Alpha--Mu singles (except Epsilon) preserve $\sim$2.8--3.0 skill indicators.
\item \textbf{Epsilon is Warped/party.} Drafting collapses skill to 1.08/4 --- keep it social, never on TEI.
\item \textbf{Zeta is skill-promote with live Squad TEI.} Squadrons preserve skill (2.94/4); rated Warp~12 crew sectors update \texttt{squadRating} only.
\end{enumerate}

The right product move is \textbf{one neural Class II, tempered OpenSkill anchors, unrated search as hard mode}, not more named tiers --- plus a clear \textbf{Promote vs Warped} module taxonomy grounded in the skill instrument. Superhuman Mexican Train remains a \textbf{research program} (belief-state search + Path A value + human validation), not required for an excellent commercial experience.

\section*{Acknowledgments}

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 
\url{https://github.com/digitaldefiance/warp12}.

\appendix

\section{Figure List}

All figures are generated from empirical data and located in \texttt{tools/nn/figures/}.

\begin{enumerate}
\item \textbf{Cross-factor skill index comparison (Section 8)} --- W12 exhibits highest skill expression in 2--4p balanced range.
\item \textbf{Fleet size effects by Warp factor (Section 8)} --- W12 shows steepest gradient ($r = 0.875$), most sensitive to player count.
\item \textbf{Decision complexity heatmap (Section 8)} --- Constant branching factor ($\sim$2 moves/turn) across all configurations.
\item \textbf{Hand entropy vs near-optimal play (Section 8)} --- Weak correlation ($r = 0.009$) suggests orthogonal dimensions.
\item \textbf{Skill vs luck balance (Section 8)} --- W18/18p has highest skill/luck ratio (8.10) of any configuration.
\item \textbf{TEI ladder visualization (Section 5)} --- OpenSkill $\mu\pm\sigma$ AI anchors and TEI grade presentation (E/V/C/I/P).
\item \textbf{Calibration matrix heatmap (Section 7)} --- 2{,}000-game win rates; points clarity vs go-out compression.
\item \textbf{AI bench results comparison (Section 7)} --- Class I* parity, Fleet Admiral wins (expectimax 64\%), $\Omega$ fair-share by fleet size, fair-share hazard.
\item \textbf{Architecture diagrams (Section 4)} --- Policy stack, Class I* MLP, Class $\Omega$ policy/value heads, Fleet Admiral routing.
\item \textbf{Points vs go-out divergence (Section 3)} --- $|\Delta\mu|$ anchor vs implied gaps; weaker-side win rates.
\item \textbf{Module skill ranking (Section 9)} --- 274.5K-game points Promote vs Warped taxonomy; Epsilon collapse; Zeta skill-promote. Go-out forks in Section~\ref{sec:goout-module-balance}.
\item \textbf{Module $\times$ Warp heatmap (Section 9)} --- Skill indicators by module and Warp factor.
\item \textbf{Epsilon collapse panels (Section 9)} --- Drafting vs baseline/Iota/Official across W9--W18.
\item \textbf{Module metric profiles (Section 9)} --- Legal moves, constrained tiles, spread, unique pips.
\item \textbf{W12 module fleet curves (Section 9)} --- Rating-relevant modules across 2--8 captains.
\item \textbf{Epsilon deficit heatmap (Section 9)} --- Cell-level skill-indicator deficit vs baseline.
\item \textbf{Iota spread lift on W12 (Section 9)} --- Move-value-spread gain from Double Down.
\item \textbf{Module outcome mix (Section 9)} --- Skill / mixed / luck cell fractions by module.
\item \textbf{Legal moves vs spread scatter (Section 9)} --- Per-cell depth cloud; Epsilon Warped pocket.
\item \textbf{Hand-pressure bars (Section 9)} --- Constrained tiles and unique pips for key modules.
\end{enumerate}

\section{Tables}

% Include the generated LaTeX tables here
\input{../tools/nn/tables/table1-summary-stats.tex}
\input{../tools/nn/tables/table2-hypothesis-tests.tex}
\input{../tools/nn/tables/table3-correlation-matrix.tex}
% table4-module-ranking.tex is included in Section 9 body

\section{Code Map}

\begin{table}[h]
\centering
\small
\begin{tabular}{@{}ll@{}}
\toprule
\textbf{Concern} & \textbf{Location} \\
\midrule
Skill presets & \texttt{libs/engine/src/lib/ai/skill.ts} \\
Heuristics & \texttt{libs/engine/src/lib/ai/heuristics.ts} \\
Self-play & \texttt{libs/engine/src/lib/ai/self-play.ts} \\
Calibration & \texttt{libs/engine/src/lib/ai/ai-elo-calibration.ts} \\
Optimizer & \texttt{libs/engine/src/lib/ai/ai-weight-optimizer.ts} \\
Fleet Admiral / ISMCTS & \texttt{libs/engine/src/lib/ai/fleet-admiral.ts}, \texttt{ismcts.ts} \\
Expectimax preset & \texttt{resolveFleetAdmiralExpectimaxLookahead()} in \texttt{fleet-admiral.ts} \\
Parallel bench & \texttt{libs/engine/src/lib/ai/bench-fleet-admiral-parallel.ts} \\
Class I* policy & \texttt{libs/engine/src/lib/ai/class1-star-policy.ts} \\
Class I* features & \texttt{libs/engine/src/lib/ai/feature-encoder.ts} \\
Class I* training & \texttt{tools/nn/} (\texttt{collect}, \texttt{train.py}, \texttt{bench}) \\
Class $\Omega$ agent / search & \texttt{libs/engine/src/lib/ai/omega-agent.ts}, \texttt{omega-search-agent.ts} \\
$\Omega$ collect / bench & \texttt{collect-omega-trajectories.ts}, \texttt{bench-omega.ts} \\
Human TEI update & \texttt{apps/Warp12/src/firebase/stats-service.ts}, \texttt{libs/engine/.../rating/} \\
OpenSkill anchors / grades & \texttt{anchors.ts}, \texttt{tei-grade.ts}, \texttt{update-\{ffa,team,vs-ai\}.ts} \\
Rules profile / AI tiers & \texttt{warp12-official-v1} / \texttt{v2} in \texttt{rules-profile.ts} \\
Luck/skill metrics & \texttt{libs/engine/src/lib/ai/luck-skill-metrics.ts} \\
Luck/skill collection & \texttt{tools/nn/collect-luck-skill-single-config.ts} \\
Module analysis & \texttt{tools/nn/collect-luck-skill-modules.ts}, \texttt{analyze-module-results.ts} \\
Statistical analysis & \texttt{tools/nn/process-luck-skill-data.py}, \texttt{test-hypotheses.py} \\
Figure generation & \texttt{create-figures.py}, \texttt{create-paper-figures.py}, \texttt{create-module-figures.py} \\
Rules spec & \texttt{RULES.md} \\
Module report & \texttt{docs/MODULE-ANALYSIS.md} \\
OpenSkill calib log & \texttt{docs/openskill-calibration-log.md} \\
\bottomrule
\end{tabular}
\end{table}

\section{Reproducibility}

\subsection{Self-Play Calibration}
\begin{verbatim}
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
\end{verbatim}

\subsection{Fleet Admiral Benchmarks}
\begin{verbatim}
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
\end{verbatim}

\subsection{Class I* Training}
\begin{verbatim}
yarn class1-star:pipeline:deep
yarn class1-star:pipeline:go-out
yarn class1-star:pipeline:deepblue
\end{verbatim}

\subsection{Skill/Luck and Module Matrices (points + go-out, separate)}
\begin{verbatim}
# 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
\end{verbatim}

All data and scripts are available in the \texttt{warp12-engine} package and \texttt{tools/nn/} directory.

\section{Target Venues}

\begin{table}[h]
\centering
\begin{tabular}{@{}ll@{}}
\toprule
\textbf{Venue} & \textbf{Fit} \\
\midrule
\textbf{AIIDE} & Best fit --- game AI + evaluation \\
\textbf{IEEE CoG} & Strong --- agents + competition \\
\textbf{FDG} & Game design + dual objective angle \\
\textbf{CHI PLAY} & Advisor / TEI integrity angle \\
\textbf{arXiv cs.AI} & White paper / preprint \\
\bottomrule
\end{tabular}
\end{table}

% ==============================================================================
% REFERENCES
% ==============================================================================

\bibliographystyle{plain}
% \bibliography{tei-paper}  % Uncomment when tei-paper.bib is ready

% TODO: Create tei-paper.bib with citations for:
% - Mexican Train / domino game AI literature (limited, cite what exists)
% - MCTS/ISMCTS foundational papers (Browne et al., Cowling et al.)
% - AlphaZero / AlphaGo (Silver et al.)
% - Elo rating systems (Elo 1978, Glicko, TrueSkill)
% - Self-play in games (Tesauro's TD-Gammon, etc.)
% - Multi-player game theory (if applicable)

\begin{thebibliography}{99}

% Placeholder references - TODO: Replace with actual citations

\bibitem{browne2012mcts}
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).
\textit{A Survey of Monte Carlo Tree Search Methods}.
IEEE Transactions on Computational Intelligence and AI in Games, 4(1):1--43.

\bibitem{silver2017alphazero}
Silver, D., Schrittwieser, J., Simonyan, K., et al. (2017).
\textit{Mastering the game of Go without human knowledge}.
Nature, 550(7676):354--359.

\bibitem{elo1978rating}
Elo, A.E. (1978).
\textit{The Rating of Chessplayers, Past and Present}.
Arco Publishing, New York.

\bibitem{cowling2012ismcts}
Cowling, P.I., Powley, E.J., and Whitehouse, D. (2012).
\textit{Information Set Monte Carlo Tree Search}.
IEEE Transactions on Computational Intelligence and AI in Games, 4(2):120--143.

\bibitem{frank1996determinization}
Frank, I., and Basin, D. (1996).
\textit{Search in Games with Incomplete Information: A Case Study Using Bridge Card Play}.
Artificial Intelligence, 100(1-2):87--123.

\bibitem{glickman1999glicko}
Glickman, M.E. (1999).
\textit{Parameter Estimation in Large Dynamic Paired Comparison Experiments}.
Applied Statistics, 48(3):377--394.

\bibitem{herbrich2006trueskill}
Herbrich, R., Minka, T., and Graepel, T. (2006).
\textit{TrueSkill™: A Bayesian Skill Rating System}.
Advances in Neural Information Processing Systems, 19:569--576.

\bibitem{wenglin2011}
Weng, R.C., and Lin, C.-J. (2011).
\textit{A Bayesian Approximation Method for Online Ranking}.
Journal of Machine Learning Research, 12:267--300.

\bibitem{silver2018alphazero}
Silver, D., Hubert, T., Schrittwieser, J., et al. (2018).
\textit{A General Reinforcement Learning Algorithm that Masters Chess, Shogi, and Go through Self-Play}.
Science, 362(6419):1140--1144.

\bibitem{bowling2015heads}
Bowling, M., Burch, N., Johanson, M., and Tammelin, O. (2015).
\textit{Heads-up Limit Hold'em Poker is Solved}.
Science, 347(6218):145--149.

\bibitem{doubleighteen2024}
Digital Defiance (2024).
\textit{DoubleEighteen: Open-Source Domino Tile Rendering Library}.
\url{https://github.com/digitaldefiance/double-eighteen}

\bibitem{tesauro1995tdgammon}
Tesauro, G. (1995).
\textit{Temporal Difference Learning and TD-Gammon}.
Communications of the ACM, 38(3):58--68.

% TODO: Add citations for:
% - Domino game AI (if any exist)
% - Glicko/TrueSkill rating systems
% - Multi-player game equilibria
% - Belief-state reasoning in card games
% - Explainable AI / interpretable heuristics
% - Product-oriented AI design

\end{thebibliography}

\end{document}
