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:
co-authored by
Claude Opus 5.5
parent
a0cf9be214
commit
6f576940b7
@@ -76,3 +76,18 @@ test("verify_stage_copies_module_levels", async () => {
|
||||
assert.ok(existsSync(join(stage(plans[2], "ts"), "levels", "fixture-level.json")));
|
||||
assert.ok(!existsSync(join(stage(plans[1], "ts"), "levels")));
|
||||
});
|
||||
|
||||
test("verify_stage_copies_module_cards_up_to_the_module", async () => {
|
||||
// Module-local cards (Module 10's SpellGrid cards) reach that module and later ones only.
|
||||
process.env.COURSE_ROOT = root;
|
||||
const { planVerification, stage } = await import("../verify-references.mjs");
|
||||
const { existsSync } = await import("node:fs");
|
||||
const plans = planVerification(moduleDirs(), 3);
|
||||
for (const lang of ["rust", "ts"]) {
|
||||
assert.ok(!existsSync(join(stage(plans[0], lang), "cards", "module-fixture.json")), lang);
|
||||
assert.ok(existsSync(join(stage(plans[1], lang), "cards", "module-fixture.json")), lang);
|
||||
const later = stage(plans[2], lang);
|
||||
assert.ok(existsSync(join(later, "cards", "module-fixture.json")), lang);
|
||||
assert.ok(existsSync(join(later, "cards", "test-fixture.json")), lang);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user