Part I explains what the solve is; this appendix is its ledger. Every statistic the project has measured about the shipped solutions — how big the game is, how much of it is solved, how tightly each spot is certified, how alike neighboring solutions are, how crisp optimal play is, and what it took to compute — collected on one page. Each figure is a dated entry in the project's benchmark log.
The game, counted
One subgame per (score, dealer assignment, turn-up class): 1,296 in all, each spanning 140,118 distinct deals once the lossless equivalences collapse the raw card combinatorics. Within a subgame the tree grows with how much of the raise ladder is still alive.
Except during mão de onze, the engine still permits the ordinary raise ladder. The solver removes a higher re-raise only once lower score + current stake ≥ 12: at that point the current hand already decides the match for either winner, so escalating adds no prize and no rational fold leverage. This is value-exact pruning, not a claim that those buttons are illegal. The diagonal endpoints are compact anchors: 0 × 0 → 2 × 2 also covers unequal scores such as 2 × 10 and the mirrored 10 × 2. The table shows what the solver keeps with vira 4, for one dealer orientation, across every abstract deal.
| subgame tier | score interaction | solver keeps | tree nodes | information sets |
|---|---|---|---|---|
| Mão de onze | 0 × 11 → 11 × 11 | — | 49.6M | 5.61M |
| Truco only | 9 × 9 → 10 × 10 | 1 → 3 | 352.3M | 39.5M |
| Through six | 6 × 6 → 8 × 8 | 1 → 3 → 6 | 1.11B | 129.1M |
| Through nine | 3 × 3 → 5 × 5 | 1 → 3 → 6 → 9 | 2.87B | 341.7M |
| Full ladder | 0 × 0 → 2 × 2 | 1 → 3 → 6 → 9 → 12 | 6.70B | 812.9M |
Exact vira-4 counts; other turn-up classes have not all been counted at every tier.
Those are the raw trees. The production tree also removes provably irrelevant branches — score-aware raise pruning plus proof-scoped prunes — cutting the deepest tier from 6.70B to 3.80B nodes (756.8M information sets) with no change in exactness. The shipped charts live in the two smallest tiers: an eleven root is a 49.6M-node tree, and a truco-band spot like 10×10 is a ~200M-node tree over 39.5M information sets.
What is actually solved
Exact strategies exist for 216 of 1,296 subgames: all 23 role-ordered score states where mão or pé is on 11, across all nine turn-up classes (207), plus 10 × 10 across all nine classes (9). The other 1,080 have not been solved as a full tabular grid.
The release behind that coverage stores 225 artifacts — one per (score, turn-up, dealer seat): every 11 × N score in both dealer orientations, plus 10 × 10 in one. The two counts differ by exactly the symmetric 11 × 11, whose two orientations are the same game with the seats renamed — nine artifacts covering nine subgames counted once. The Study Lab itself bundles a 15-chart subset of the release, all with vira 4.
What ships, and how it's certified
The current Study release carries 225 solved spots — the per-(score, turn-up, dealer) artifacts of the coverage above. Each spot ships with an exact self-certification: a genuine best response is computed against the exported strategy from both seats, and the average of the two gains is the spot's exploitability ε, on the scale where ε 0.01 ≈ 0.5 percentage points of match-win chance. By how the spot was produced:
| How the spot was solved | Spots | Raw ε (median / max) | Purified ε (median / max) | Per-node BR gap, pp (median / max) |
|---|---|---|---|---|
| Transferred from a neighbor, then warm-refined | 192 | 0.00124 / 0.00627 | 0.00046 / 0.00395 | 0.014 / 0.098 |
| Refined and exported directly | 5 | 0.00306 / 0.00424 | 0.00037 / 0.00148 | 0.029 / 0.166 |
| Solved natively (transfer rejected) | 28 | 0.00001 / 0.01685 | 0.00001 / 0.01683 | 2.551 / 12.591 |
Transfers had to clear hard gates — raw ε ≤ 0.01, purified ε ≤ 0.004, weighted mean per-node best-response gap ≤ 0.25 pp — or the worker discarded the candidate and solved the spot natively. Native solves converge much tighter globally (median ε 0.00001), but 28 of them carry broader per-node profiles — which is exactly what the lab's per-cell ≈ badges exist to surface.
How alike neighboring solutions are
Solve two neighboring subgames independently to convergence and compare them row by row. Two averages tell different stories: over all table rows, and weighted by how often play actually reaches each row. TV is total-variation distance — the share of probability mass that would have to move to turn one row's mix into the other's (0 = identical).
| Neighbors compared | Mean TV, all rows | Mean TV, by play | Best action agrees, rows | …by play |
|---|---|---|---|---|
| Score: 11×10 vs 11×9, same turn-up | 0.017 | 0.129 | 96.0% | 85.9% |
| Turn-up: 11×10, tc0 vs tc1 | 0.017 | 0.023 | 96.2% | 97.2% |
| Turn-up: 10×10, tc0 vs tc1 | 0.013 | 0.024 | 98.0% | 97.2% |
The asymmetry is the finding. Changing the turn-up class barely moves play anywhere: on-path distance stays near 0.02 and the root decision shifts by 0.005. Changing the score concentrates its whole effect exactly where play goes — the root accept/fold row moves by 0.196, depths 1–3 by 0.12–0.18, and only about half of play mass sits on effectively identical rows. A small, shallow, score-sensitive core carries roughly half of the played game.
How crisp optimal play is
Call a row pure when its biggest action takes more than 99% of the mix. Mixing dominates the tables — but not the played game:
| Solution | Pure, share of rows | Pure, share of play | Mean top-action weight (rows / play) |
|---|---|---|---|
| 11×10 tc0 (5.6M rows) | 20.4% | 56.1% | 0.609 / 0.873 |
| 10×10 tc0 (39.5M rows) | 26.8% | 52.4% | 0.655 / 0.836 |
Half-plus of actual play sits at (near-)pure decisions — the same rows that agree at 99.99%+ across neighboring solutions. The complement is just as real: roughly 45% of play mass is genuinely mixed, the part of optimal truco that resists crisp human rules. Tighten “pure” to 99.9% and on-path purity drops to 50.7% (11×10) and 39.3% (10×10) — crispness softens with the cutoff.
What it took to compute
The solver is synchronous CFR+, adopted after measuring a ~10× cut in iteration count at the same certified ε. The 225-spot release was built by four preemptible cloud workers in 3–4.5 hours each — transferring a neighbor's solution wherever the certificate allowed (85% of spots) and re-solving natively where it didn't — for on the order of $5 of compute. A truco-band warm solve now peaks at ~16 GiB and ~18 minutes; a chain of memory work brought the same job down from a 75-GiB machine class.
Certifying is cheap next to solving: one exact whole-game best response of the deepest tier — the full raise ladder from 0×0, 14.6 billion node visits — fits in 8.1 GiB and under three hours. The frontier is the deep solve itself: merely building the 0×0 tree in memory needs over 150 GiB, which is why the lattice below the shipped bands is approached bottom-up, subgame by subgame.