Parent: #713.
Problem
SAGE has 134 supported functional definitions and a generated, freshness-checked list of 36 excluded mechanic families. The compatibility report is honest, but there is no active issue turning the largest blockers into a prioritized next engine tranche.
The goal is not to create 36 speculative mechanic issues. It is to choose a small group of primitives by measurable card payoff, implement them through real cards, and regenerate the report after each lands.
Candidate families
Use crates/sage-engine/data/exclusions.json and the M19 card pool to measure payoff. Obvious candidates include:
- General replacement/prevention effects
- Equipment and non-Aura attachments
- Modal spells and X costs
- Cost modification and richer activation/additional costs
- Control-changing and untap/skip-untap effects
- Broader trigger events/selectors
- Multi-face/copy mechanics
- Optional or conditional targeted effects
Scope
- Produce a small table mapping candidate primitive → blocked cards/families unlocked → architectural dependency/risk.
- Select the next tranche; open implementation issues only for selected primitives.
- Implement each primitive with representative real catalog cards and rules-text generation.
- Update schema documentation, protocol only where necessary, exclusions, and generated compatibility report.
- Preserve the pure-engine/server-policy/client boundary.
Acceptance criteria
Non-goals
- Claiming complete M19 or complete Magic coverage.
- Hand-authoring cards whose mechanics the IR cannot faithfully express.
- Creating one issue per exclusion before prioritization.
Parent: #713.
Problem
SAGE has 134 supported functional definitions and a generated, freshness-checked list of 36 excluded mechanic families. The compatibility report is honest, but there is no active issue turning the largest blockers into a prioritized next engine tranche.
The goal is not to create 36 speculative mechanic issues. It is to choose a small group of primitives by measurable card payoff, implement them through real cards, and regenerate the report after each lands.
Candidate families
Use
crates/sage-engine/data/exclusions.jsonand the M19 card pool to measure payoff. Obvious candidates include:Scope
Acceptance criteria
make compatremoves or narrows the corresponding exclusions.Non-goals