The input includes the grid, active piece, hold, next five pieces, level, score, lines, pieces, combo, back-to-back status, canHold, mode, tick and state hash. Every adapter receives the same candidate after-clear grids, score deltas, line deltas and top-out flags. Duplicate physical outcomes are deduplicated. Local adapters have no private simulation context. Return JSON only.
type Answer = {
stateHash: string;
choice: Array<{
x: number;
rotation: 0 | 1 | 2 | 3;
p: number;
}>;
noul?: { hold: number };
score?: { risk: number };
costUsd?: number;
};Choice. A probability distribution over legal placements. Probabilities must be finite, in [0, 1], and sum to one. The highest probability wins. Ties resolve by x, then rotation.
Noul. An optional hold probability. Above 0.5, hold takes precedence over placement.
Score. An optional probability of top-out within the next ten locked pieces. Calibration uses mean squared error (Brier score). This is optional, policy-dependent forecasting, not classifier accuracy. Forecasts without a resolved outcome at the game cap are omitted.
Duplicate placements, illegal positions, malformed probabilities and empty choices are rejected, including with a hold request. Free-form chat is never an action.