0003: Ability identity
Status: Accepted
Context
The prototype records abilities on the stack as card table entries:
#14 Triggered Ability from Sowing Mycospawn (125847), ability of #2, PlayerA
#15 Triggered Ability from Sowing Mycospawn (125847), ability of #2, PlayerAThis shows that an ability exists and where it came from, but not which ability it is. Sowing Mycospawn has two different cast triggers (search for a land; if kicked, exile target land), and the file cannot tell them apart.
MTGOSDK (checked at v1.7.0) exposes an ability on the stack as a GameCard with its own Id, a SourceId pointing at its source, and RulesText, documented as "the rules text for this card or ability on the stack". MTGO's wording may differ from current Oracle text.
Decision
- Every ability on the stack has its own instance ID, linked to the instance of its source. Mana abilities, which never go on the stack, also get instance IDs (see decision 0006).
- The ability's kind is recorded: triggered, activated, loyalty, or mana.
- The ability's rules text is recorded as the source reports it. The text identifies the ability for readers and is not required to match Oracle wording exactly.
- Writers MUST include the rules text when the source provides it. When the source does not, the ability is explicitly marked as having unknown text. Writers MUST NOT reconstruct the text from the card name or an external database and present it as reported.
Rules basis
Checked against the Comprehensive Rules effective 2026-09-25.
- 113.1c: an activated or triggered ability on the stack is an object. It needs its own instance ID, separate from its source.
- 405.1: when an ability is activated or triggers, it goes on the stack without any card associated with it. It has no card name, so it has to be identified some other way.
- 602.2a: an activated ability on the stack "has the text of the ability that created it, and no other characteristics." The ability's text is its defining characteristic, which is why the text identifies it.
- 113.3b, 113.3c, 605.1a, 606.1: activated, triggered, mana, and loyalty abilities are distinct categories with different rules, so the kind is recorded.
- 113.1a, 113.10: abilities can be granted to objects by other effects. An index into the source card's printed abilities cannot describe these.
Alternatives rejected
- Ability index ("ability 2 of Sowing Mycospawn"). Rejected: Oracle wording and ability order change over time, and an index cannot describe abilities granted by other objects (equipment, Liquimetal Coating, and so on).
- Requiring Oracle text. Rejected: sources report their own wording, and forcing a lookup adds a dependency on an external database to every writer.
- Kind and source only (the prototype). Rejected: cannot tell apart two abilities of the same kind from the same source.
Consequences
- The card table grammar needs fields for kind, source instance, and quoted rules text, plus a defined unknown-text marker.
- Parsers that need Oracle-level identity have to match the text themselves. The spec does not promise that it is stable across sources.