Decksmith's pitch is that you can trust a number because you can check it —
not because we said so. This page says exactly what is modeled, what deliberately isn't,
and how to reproduce any figure the app shows you from its seed.
The claim, in one sentence
When Decksmith says "31.4% of opening hands can reach this goal," it means: out of a few
thousand opening hands dealt from your exact list — mulligans played, lands sequenced, rituals
chained, tutors resolved — that share of them has at least one legal line that reaches your
goal by the stated turn, found by exhaustively searching each hand's options through a real
sequencing engine.
How one hand becomes a data point
Deal. The deck is shuffled with a seeded random generator and seven cards are dealt.
The mulligan policy you chose is played out (first mulligan free, London bottoming), so what
gets classified is the hand you'd actually keep.
Classify — "exact mode." The kept hand is handed to an enumerator that explores every
distinct line the engine can legally take from it: which land to play, which rituals and rocks
to chain, every distinct target a tutor could fetch, whether burst mana is floated to hold up
protection. Each rung of your goal ladder is marked reachable or not. There is no
per-hand randomness in this step — the same hand always classifies the same way.
Tally. Rung counts across all sampled hands become the incidence percentages you see.
A flexible hand counts toward every rung it can reach, which is why incidence bars can sum
past 100%.
Two consequences worth understanding. First, the only randomness left in the headline number is
which hands got dealt — that's why a few thousand hands converge where a naive goldfish
simulator needs a hundred thousand. Second, "reachable" means could, with perfect
sequencing toward your goal — it's a ceiling on the hand, not a prediction of a distracted pilot.
A small share of pathological hands (multiple tutors compounding over every fetch target) would
explode the search. Those hands are cut off at a state cap and classified by the engine's greedy
heuristic instead — and the run reports that share as "heuristic fallback" in the stats grid,
so you always know how much of a result rests on it. Typically it is zero.
The compendium — and what happens to cards outside it
Card behavior comes from a hand-written, expert-verified compendium of 662 cEDH-relevant cards:
636 modeled to their real behavior, 24 recognized and deliberately inert (cards whose
value the goldfish frame can't express — see the gaps below). It is scoped to the competitive
meta on purpose: a curated set we actually verify beats a scraped database we can't.
Cards the compendium doesn't know never crash a run and never silently pretend. They
degrade to typed, costed, but inert cardboard — and the deck checker announces it:
"9 of your 100 cards are modeled generically — here's the list." You can override an unknown
card as a land, rock, or goal spell right in the checker. Honesty about limits is the product;
if the number would be built on cards we didn't model, you'll be told before you read the number.
What is deliberately NOT modeled
Every simulator has a frame. Ours is a goldfish: your deck, playing toward its goal,
with no opponents acting. That makes some things unmeasurable here, and we'd rather name them
than let you infer precision that isn't there:
Opponents. Nobody counters your ritual, wipes your board, or plays a
stax piece. Symmetrically, cards whose value depends on opponents acting —
Rhystic Study taxing three players, Mystic Remora feeding off their spells — can be checked
for resolving on time, but their payoff cannot be measured in this frame. That is
exactly why the Broken Trainer exists (below).
Blind draws beyond the line. Exact mode evaluates what the kept hand
can reach with the cards it can see and fetch. Lines that depend on unknown future draws
(cantrip chains into unknown gas) are a stated gap, not an estimate.
Commander casting in exact mode. The enumerator does not yet cast
commanders; commander-dependent goals run through the older heuristic playout only.
Turns beyond 3. The goal horizon is turns 1–3 — where cEDH openers
are decided. Nothing here says anything about turn 6.
The other 3 seats' pressure. Seat position is modeled (play/draw,
Gemstone Caverns), but threat assessment, politics, and interaction timing are not.
Reproducibility — check any number yourself
Every run draws a 32-bit master seed. Each sampled hand gets its own seed derived from it
before any work is dispatched, so hand #1,207 is the same hand whether the run used one
worker or sixteen. From that:
The audit transcript. Every finished run can be downloaded as JSON: the run settings,
the seed, per-rung incidence and exclusive counts, and sample openers with the exact line
the engine took, turn by turn. If a number surprises you, read the lines that produced it.
Saved runs persist their sample hands directly, so a loaded run re-renders exactly
what you saw — no re-simulation, no drift across machines.
Comparison mode runs both versions of your deck against the same dealt hands
(one seed, shared per-hand seeds). The delta you see can only come from your change — an
identical list on both sides reads exactly 0.0 with zero flipped hands. Its confidence
interval is computed over the hands that flipped (a paired test), which is why a 2-point move
on 2,000 hands can honestly read as real instead of drowning in independent-run noise.
Headline confidence intervals are 95% normal-approximation binomial over the sampled hands;
comparison CIs are paired over discordant hands. When a delta sits inside its own interval, the
app says "within the noise" rather than coloring it a win.
The test suite — what pins all of this down
The repository runs 74 automated tests on every push, and a deploy cannot happen unless they
pass. The load-bearing ones:
Golden runs: 11 pinned scenarios (threat-by-T2 across seats, mulligan policies,
protection-held goals, specific-card and commander goals) whose exact win counts are frozen.
Any engine change that moves a number fails the build until a human re-verifies and re-pins.
Invariants: identical seeds give identical runs; mulligans never lower a win rate;
guaranteed-mode never exceeds expected-mode; parallel and single-threaded classification agree
hand-for-hand.
Payment enumeration: tight-mana cases where a greedy payment would strand a color are
pinned against the full enumerator, so "protection held" can't be faked by a lucky payment order.
The Broken Trainer — calibrating what stats can't define
"Is this opening hand broken?" is a taste question, not a threshold. Instead of hard-coding one,
the Broken Trainer deals real hands, shows the engine's line and the
end-of-turn-2 board, and records human broken / not-broken / borderline verdicts. Every label is
stored reconstructably — raw hand, seed, deck, deal settings — so the feature set can be
redefined later and recomputed from scratch, forever. A small, readable logistic model (weights you
can sanity-check per axis: mana development, action density, payoff online, gas, protection) is fit
against those labels offline, and its agreement with the labeler is reported next to a
leave-one-out estimate — chasing accuracy past the labeler's own self-consistency is overfitting to
noise, and the tooling says so.
The 30-second glossary
Decksmith talks the way cEDH tables talk. If a word on a verdict reads as jargon, it's defined here.
cEDH
Competitive Commander — 4 players, 100-card singleton decks, everyone trying to win as fast and consistently as the format allows.
The 99
Your deck minus its commander(s), which start in the command zone rather than being shuffled in.
Opener / the opening seven
The seven cards you draw to start the game. Everything Decksmith measures starts from here.
Keep / mull(igan)
The first decision of every game: keep this hand, or shuffle it back and draw a new one (a mulligan) at a cost.
Bomb / threat
A card that warps the game when it resolves — the draw engines and win-enablers on the deck's modeled threat list (Necropotence, Ad Nauseam, Rhystic Study, and company).
Protection
A free counterspell (or the mana to cast one) held while your bomb resolves, so an opponent's answer doesn't just undo the whole turn.
Naked
The opposite: the bomb resolves with nothing held back to defend it. It works — unless someone answers it.
Goal ladder / rung
A goal expressed as ordered outcomes from best to worst — e.g. "Necropotence on turn 1 with protection" down to "turn 2, naked." Each step is a rung; a hand is credited with every rung it can reach.
Incidence
The headline number: the share of opening hands with at least one line to the goal. Overlapping — a hand that reaches two rungs counts for both.
Line
The exact play sequence that gets there — which lands drop, which rituals chain, what resolves on which turn. Every verdict shows one, so the number comes with receipts.
Exact mode
Decksmith doesn't goldfish randomly: it enumerates each opener's legal plays through a real sequencing engine and classifies the hand precisely. See "How one hand becomes a data point," above.
Modeled / inert / unknown
The compendium honesty scale: modeled cards behave like the real card; inert by design cards are recognized but deliberately do nothing (they don't affect fast starts); unknown cards are played as blank cardboard — and every result says so.
On the play / on the draw
Seat 1 plays first and skips its first draw; seats 2–4 draw. The odds differ, so Decksmith asks which seat you're simulating.
Broken start
An opener explosive enough to warp the table. Today: any bomb by turn 3. Tomorrow: calibrated from human judgment — that's what the Broken Trainer is for.
If you find a number that's wrong
That's the most valuable thing you can do with this page. Download the audit transcript for the
run, find the sample line that looks illegal or the count that looks off, and send it to us. The
transcript contains everything needed to reproduce your run bit-for-bit.