fix: module 10 review round 1 (module-local SpellGrid cards, cast target check, CLI without panic hook)

- SpellGrid cards move to course/10-spellgrid/cards; start-module and
  verify-references stage course/cards plus module-local cards up to the module,
  so M5-M9 workspaces get exactly the pre-M10 card set.
- cast() rejects a chosen-target spell without a target (checkCast/checkPlay);
  new test_10_targeted_spell_needs_target.
- Rust CLI pre-validates instead of swapping the global panic hook.
- Catalog: CRIER noun; DEATHRATTLE/BATTLECRY note on lexicon vs catalog role.
- Lesson: design note on mid-movement reparse.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Lucas Winther
2026-10-29 05:11:09 +01:00
co-authored by Claude Opus 5.5
parent a0cf9be214
commit 6f576940b7
34 changed files with 295 additions and 79 deletions
+11 -2
View File
@@ -411,7 +411,8 @@
"role": "meta",
"text": "a trigger type, so DEATHRATTLE IS DOUBLE doubles deathrattles",
"source": "https://github.com/utilForever/baba-is-auto/blob/main/Documents/rule-language.md",
"game": "spellgrid"
"game": "spellgrid",
"note": "Lexicon role: SpellGrid's words.json lists it as a noun, so it can be the subject of a rule. The catalog keeps role meta: it names the engine's own trigger, which the coupling audit must not flag (only role-noun words are audited)."
},
{
"name": "Powder Keg",
@@ -548,6 +549,13 @@
"text": "Tin Knight's noun (a SpellGrid minion on the grid)",
"game": "spellgrid"
},
{
"name": "CRIER",
"kind": "word",
"role": "noun",
"text": "Town Crier's noun (a SpellGrid minion on the grid)",
"game": "spellgrid"
},
{
"name": "Town Crier",
"kind": "card",
@@ -563,6 +571,7 @@
"kind": "word",
"role": "meta",
"text": "a trigger type, so BATTLECRY IS DOUBLE doubles battlecries (the Module 10 Expansion Drop)",
"game": "spellgrid"
"game": "spellgrid",
"note": "Lexicon role: SpellGrid's words.json lists it as a noun, so it can be the subject of a rule. The catalog keeps role meta: it names the engine's own trigger, which the coupling audit must not flag (only role-noun words are audited)."
}
]