The Live Boundary

While the game is live,
DeckLogic describes. It never chooses.

From the moment you see your opening hand until the match is over, DeckLogic will tell you what is true. It will not tell you what to do. Not softly, not as a hint, not as a number that only means one thing.

Why draw the line here

A tracker that counts your outs is doing arithmetic you are allowed to do at the table. A tool that says attack with these three is playing your deck for you. Both can be built from the same log file, which is exactly why the distinction has to be stated rather than assumed.

Two things follow from choosing the first one. It keeps DeckLogic on the right side of the line the MTG judge program already draws for digital events — tracking software is fine so long as it surfaces no private information — and the community's own rough test, whether you could have done it with pen and paper, lands in the same place. And it keeps the skill yours. A coach who plays your turns for you has not taught you anything.

None of the analysis is thrown away. The decision engine, the mulligan simulator and the per-action grading all still run — they just publish after the game is durably over, into post-game review, where the answer is a lesson instead of an instruction.

What DeckLogic shows during a live match

Match identity and lifecycle

Which match this is, which game of it, whose account is playing, and the format — plus the result once the game is actually over.

8 fields on the wire

status match_id game_number won won_known oppo_name format_name current_account_name

Turn and resource facts

Public, countable state you could write on paper yourself: turn, phase, priority, life totals, card counts, mana spent, and cumulative combat damage.

20 fields on the wire

true_turn_number active_player priority_owner phase user_life oppo_life user_hand oppo_hand user_library oppo_library user_mana_spent_total oppo_mana_spent_total cum_combat_dmg_to_oppo cum_combat_dmg_to_user cum_user_creatures_killed_combat cum_oppo_creatures_killed_combat prev_delta_life prev_delta_board oppo_life_start_of_turn transient

Board and zone tracking

What is on the battlefield and in the public zones, plus your own deck-tracking and descriptive land-capable draw outlook: the bookkeeping and arithmetic a careful player already does by hand.

28 fields on the wire

user_board oppo_board user_lands oppo_lands user_tapped_lands oppo_tapped_lands user_non_creatures oppo_non_creatures user_attacking_creatures oppo_attacking_creatures user_creature_power oppo_creature_power library_tracker draw_probabilities land_outlook user_graveyard user_exile user_hand_cards oppo_graveyard oppo_exile oppo_hand_cards user_command_zone oppo_command_zone user_board_instances oppo_board_instances user_static_intel oppo_static_intel cast_companion

Approved transparent calculations

Arithmetic over the facts above, shown as a number rather than an instruction: current win expectancy and its history, aggregate luck, the bounded resource-luck severity and its observed driver, draw quality, and whether lethal damage is present on board — never which attack produces it.

15 fields on the wire

crack_back_danger user_lethal_on_board luck_score last_draw_quality win_expectancy win_expectancy_available win_expectancy_source we_history leverage_history key_factors user_mulligans oppo_mulligans user_starting_deck_size oppo_starting_deck_size resource_luck

Archetype identification

A named estimate of what the opponent is playing, always with its confidence and clearly-aggregate representative decklist contents — an identification, not a plan against it.

5 fields on the wire

oppo_archetype oppo_archetype_probs oppo_off_meta_pct oppo_open_colors oppo_representative_cards

Explicit reveals

Cards the game itself revealed to you, including a match-long record of everything the opponent has shown across the games of this match. DeckLogic repeats and remembers what Arena already showed; it never infers an unrevealed card, ranks what it lists, or says anything about what to do with it.

3 fields on the wire

oppo_revealed_cards oppo_library_revealed oppo_match_dossier

Debug instrumentation

Developer diagnostics, empty unless explicitly enabled, carrying no analysis of the game.

1 field on the wire

heat_frame

Mana reality check

MANA-1. What this game's mana did compared with the expectation for the player's own decklist: how many of the cards seen were lands against the hypergeometric expectation, how many turns the untapped sources failed to cover the cheapest card in hand, how many turns reached as many sources as the turn number, and the governed early-turn denominator/on-curve pair used by resource luck. Separate raw counts and one percentile over the player's own list — it states the observation and stops. It never says what to play, what to hold, whether to keep a hand, or why the player is losing, and when card selection or an unknown decklist makes the sample untrustworthy it reports that instead of a precise figure.

1 field on the wire

mana_reality

What it refuses to do

Never during a matchWhere it goes instead
Keep-or-mulligan verdicts

No keep/mulligan recommendation, no scored opening hand, no percentile telling you how good the seven you are holding is.

6 identifiers the test suite blocks

mulligan_advice user_mulligan_keep_we user_mulligan_mull_we user_mulligan_percentile user_mulligan_suggestion user_mulligan_factors

Mulligan evidence — including the simulated keep and mulligan win expectancies — is recorded and released in post-game review.
Attack, block, cast, hold, target and sequencing choices

No recommended line, no suggested attackers or blockers, no cast-or-hold prompt, no targeting or mana-sequencing guidance — and no phrasing that turns a fact into an instruction.

14 identifiers the test suite blocks

decision_advice combat_insights recommended_attackers Hold back HOLD BACK Attack with you need you should find a find an hold back attack with block with answer right now

The decision engine still runs, and its ranked alternatives appear as decision evidence once the match is durably concluded.
Threat ranking and risk tagging

No ordered list of what to answer first, and no per-permanent "this one is in danger" tag on the battlefield.

3 identifiers the test suite blocks

oppo_threats_now oppo_threats_next at_risk

Board and threat analysis is available in post-game review of the same game.
Claims about hidden information

No guesses at the opponent's hand, no bluff detection, no "they are representing removal". Cards Arena reveals are reported; nothing else is inferred.

7 identifiers the test suite blocks

predicted_interactions oppo_bluff_warning BLUFF RADAR representing watch out play around could be holding

Read and interaction analysis, computed with the benefit of the full revealed game, belongs to post-game review.
Matchup role and clock framing

No "you are the beatdown", no turns-to-kill clock, no race maths telling you whether to sprint or stabilise.

6 identifiers the test suite blocks

pace_role pace_action user_clock oppo_clock user_swing_damage oppo_swing_damage

Matchup-role evidence is written to the coaching ledger and surfaced after the match.
Sideboard guidance between games

DeckLogic generates no draft, sealed or deckbuilding advice during between-game sideboarding, because that is inside the match. Reading back your own recorded drafts is not advice, and stays available at any time.

1 identifier the test suite blocks

sideboard_tips

Sideboard axes are recorded as evidence and reviewable, with your own saved sideboard plans, outside the match.
Grading the play you just made

No live "great play", no "you missed lethal", no per-action win-percentage swing shown while you can still act on it.

6 identifiers the test suite blocks

wpa_events missed_lethal_count GAME CHANGER Solid Play DEFINING MOMENT MISSED LETHAL

Per-action win-probability-added grading is exactly what post-game review is for, and it is computed for every game.
Judgements about you

No tilt alerts and no commentary on how long you took to act. Mid-match is the worst possible moment to tell a player they are playing badly.

3 identifiers the test suite blocks

tilt_detected last_priority_pause_ms TILT ALERT

Session-level trends, including tilt guards and stop-loss prompts, live in the session surfaces between matches.
Sparring rehearsal output

SPAR-1. No simulated game against a modelled opponent may run or be shown during a match. Rehearsing the position you are actually in — playing out the next few turns against an archetype and reading the result — is a recommended line by another name, and calling it a simulation does not make it a fact.

4 identifiers the test suite blocks

spar_report spar_rehearsal spar_transcript sparring_session

Sparring is a between-matches surface: pick a deck and an opponent archetype, rehearse the matchup as many times as you like, and read the aggregate report. Every entry point refuses while a match is live and fails closed on unknown status.

Words DeckLogic will not say during a match

ADV-7. The two lists above cover the data DeckLogic sends to the screen, field by field. They cannot cover a sentence. DeckLogic also writes words while a game is running — the announcer's play-by-play and colour lines, the event log beside the tracker, the spectator view, and the optional local-AI rewording of an announcer line — and a line that reads "attack now" is an instruction no matter what data it was built from. These are the shapes those words may never take. A test writes out every sentence DeckLogic can produce during a match and fails the build if one of them matches, and a rewording that matches is thrown away in favour of the plain line it was built from.

Matched on whole words, ignoring capitals and punctuation. The imperatives count only at the start of a sentence, so "User cast a spell" is a report of what happened while "Cast it now" is an instruction. The advisory phrases and the ranking words count anywhere in the sentence. The same test also applies every phrase listed in the table above, so those are not repeated here.

127 shapes the test suite blocks

Imperatives, at the start of a sentence

always answer attack avoid block bounce cast chump concede counter discard don't exile hold keep kill leave let make mull mulligan never play prioritise prioritize race remember remove sacrifice scoop stabilise stabilize stop swing take tap target trade try untap use wait

Advisory phrasing, anywhere

advice advise advised advises aim to answer it answer that be sure to board in board out bring in cast it chump block consider don't forget focus on go for it hold it for hold on to hold onto i would i'd if i were you keep the hand keep this hand let it resolve look for make sure mulligan the hand mulligan this need to recommend recommendation recommended recommends save it for should have should've shouldn't have side in side out suggest suggested suggestion suggests swap in the line here the play here trade with try to wait for worth attacking worth holding worth keeping you can just you have to you must you ought to you shouldn't you want to you'd better your best bet

Words that rank one option above another

best keep best line best option best play best target better line better play better to biggest threat correct line correct play first priority highest priority least important most dangerous most important optimal line optimal play priority target right play strongest play top priority worst keep

How you can tell this is real

The two lists above are not marketing copy that happens to sit next to the code. They are generated from src-tauri/src/mtga/live_assistance_taxonomy.json — the same file the test suite reads to decide what is allowed on the live wire. If a developer adds a field to a live payload without adding it to that file, the build fails. If they add it to that file without regenerating this page, the build also fails. The page and the enforcement cannot quietly diverge, in either direction.

What that gate does not cover is this prose. A test can compare identifiers; it cannot read English and judge whether a paragraph is honest. So the wording around the lists is written and reviewed by a person, and we would rather say so than imply a machine is checking something it cannot.

Both files are public: the taxonomy and the suite that enforces it.

Edges worth naming

There is no toggle

No setting, entitlement, stream layout, phone view, spectator link or accessibility path re-enables live advice. There is no "pro mode". A feature that is ambiguous fails closed to post-game.

Draft advice is different

Pick and deckbuilding recommendations are the point of the Limited assistant, and a draft is not a match. But they suppress during between-game sideboarding, because that is inside the match.

Safe Mode is a separate thing

Tournament Safe Mode is an opt-in switch that hides much more, for organizer-run events. This boundary is not a mode — it applies with Safe Mode off, and Safe Mode cannot loosen it.

Win expectancy is a number, not a nudge

You see the current percentage and its history. You do not see the swing your last play caused, or the swing a different play would have caused, until the match is over.