Skip to content

0004: Causality ​

Status: Accepted

Context ​

The prototype records cause only occasionally, as an extra free-text line that repeats a move:

2:02  Urza's Tower #11: battlefield -> exile, untapped
2:02  Sowing Mycospawn #2 exiled Urza's Tower #11

Most state changes have no cause. In the Sowing Mycospawn sequence, nothing links the fetched Stomping Ground to trigger #14, or the 2 life lost to Stomping Ground's replacement effect.

Decision ​

  1. Every event line can end with a cause reference introduced by by. A cause is one of:
    • an object: the instance ID of the spell, ability, or permanent whose effect (including static and replacement effects) caused the event, for example by #14;
    • a rule: a game rule from a fixed list defined in the spec (for example draw step, state-based actions, combat damage, cleanup), for example by rule:sba;
    • a player: an action the player takes directly (playing a land, conceding, mulliganing), for example by PlayerA.
  2. Unknown causes are explicit. If the source does not know the cause, the writer writes by ?. A missing by and by ? are not the same thing; the spec defines which events require a cause.
  3. Lines stay flat. Each event line is self-contained. Effects are not nested under the event that caused them; viewers may group them for display.
  4. Cause lines are not duplicated. The prototype's lines such as "Sowing Mycospawn #2 exiled Urza's Tower #11" are replaced by the cause on the move itself.
  5. Numeric changes show before and after values with their cause, for example life 19 -> 17 by #16.

Exact syntax is defined in the spec. The examples above are illustrative.

Rules basis ​

Checked against the Comprehensive Rules effective 2026-09-25.

  • 609.1: "An effect is something that happens in the game as a result of a spell or ability." Spells and abilities are the main causes, so causes reference their instance IDs.
  • 614.1, 614.1c: replacement effects, including "As [this permanent] enters . . ." effects, change events as they happen. They come from permanents, not from anything on the stack, so a permanent can be a cause (Stomping Ground's life payment).
  • 504.1, 510.2, 514.1, 514.2: drawing in the draw step, combat damage, and cleanup actions are turn-based actions that don't use the stack. 704.3: state-based actions are performed by the game itself. These need rule causes, because no object caused them.
  • 103.5: the mulligan is a player's own choice. Some events are caused by a player directly.

Alternatives rejected ​

  • Nesting effects under their cause. Rejected: breaks down when effects interleave or span several steps, and makes lines depend on their parent for meaning.
  • Separate cause lines (the prototype). Rejected: duplicates information and leaves most events unattributed.
  • Omitting unknown causes. Rejected: a parser cannot tell "unknown" from "writer forgot".

Consequences ​

  • The spec must define the cause grammar, the list of rule causes, and which event types require a cause.
  • Writers need cause information from their source, or must write by ?.