The same gate as the calibration page, applied to real student games instead of curated examples: 8 moves within 100cp, eval within ±200cp, material within 1 pawn, no opposite castling. This is what the funnel costs in practice — of 50 seeded-random middlegame positions survive it. Engine: koga /candidates, top-10 at 1000000 nodes, mover's perspective.
A middlegame position is strategic if the best move is at most 100 cp better than the 8th best move, and none of the exclusions below apply.
Passes the gate:
Tight-position count out of 50 for every (x, y) combination — darker = more positions qualify. Click a cell to set the sliders.
50 quiet middlegame positions sampled seeded-random (seed 20260707, max 1 per game) from real student games — bands 1400 / 1600 / 2000 of the tactic-xC corpus, Gate-0 eligibility (middlegame phase, no time trouble, no forced mate, no mate lines in the top-10). Evals are mover-POV, dumped 2026-07-07.
Thresholds and exclusions are imported from src/lib/positional/strategyGate.ts, the module the live Strategy tile and the peer baseline both call (metric revision 3), so this page cannot drift from the shipped gate.
Two honest limits. The tactic exclusion is applied by the live metric but is not re-derived here — this dump carries no koga classification, and inventing one would misstate the funnel; the counts below are therefore an upper bound on what the full gate admits. And these ladders were measured at 1000000 nodes / 10 PVs while the shipped gate runs at 100k / 8. Rendered by scripts/tacticXc/tightLadderRenderPage.ts.
· played Nxf4
· played hxg4
· played Bxc3
· played Qc8
· played e5
· played Qg4
· played cxd3
· played Qxd5+
· played Rxd5
· played Ng4+
· played dxe4
· played Qe2
· played Bc5+
· played Be7
· played O-O-O
· played Na2
· played a5
· played Qd6
· played Nh6
· played h4
· played Qxe5
· played g3
· played Qxe3
· played exd5
· played O-O
· played Qc2
· played Rfc1
· played Bd6
· played Qh6
· played Rxf8+
· played Nhg3+
· played h6
· played Nxc3
· played Ne4
· played Qxe3+
· played Nxd8
· played Qd5
· played Nd8
· played Qxd6+
· played Ne8
· played Nb6
· played Rxe4
· played Bd6
· played Kg7
· played hxg4
· played Qxe4
· played Rxd5
· played a6
· played Bxe4
· played Qe8