Content slice of epic #1517 — the "not class-specific" bucket. Depends on F1 #1710 + F2 #1711. Parallel with the per-class slices.
Why
Many spells sit on 3+ class lists (Detect Magic, Dispel Magic, Cure Wounds, Revivify, Lesser Restoration, …). Authoring them inside each class's slice would duplicate the Spell row and risk divergent transcriptions. Per the epic's row-ownership rule, every PHB'14 spell on 3+ class lists is authored here exactly once, with membership fanned out to all its classes.
Scope
Acceptance criteria
Relevant code
backend/prisma/seed/spells.ts, SpellClass (F2 #1711), backend/src/routes/catalog/spells.ts, PHB'14 spell lists.
Dependencies
Part of #1517. Depends on F1 #1710 + F2 #1711. The per-class slices reference this for their 3+-list spells (membership only, no re-authoring).
Why
Many spells sit on 3+ class lists (Detect Magic, Dispel Magic, Cure Wounds, Revivify, Lesser Restoration, …). Authoring them inside each class's slice would duplicate the
Spellrow and risk divergent transcriptions. Per the epic's row-ownership rule, every PHB'14 spell on 3+ class lists is authored here exactly once, with membership fanned out to all its classes.Scope
EDITION_2014Spellrows for every PHB'14 spell that appears on 3+ class lists (levels 0–9), full PHB'14 text + aPHB'14 p.NNcitation on each.SpellClassmembership for each across every class it appears on in PHB'14.spell-fork-reseedcoverage for the new rows; seed helper fns cyclomatic ≤4.Acceptance criteria
GET /api/spells?class=<c>&edition=EDITION_2014, authored exactly once (no per-class duplicate row).PHB'14 p.NN; both suites + seed guards green.Relevant code
backend/prisma/seed/spells.ts,SpellClass(F2 #1711),backend/src/routes/catalog/spells.ts, PHB'14 spell lists.Dependencies
Part of #1517. Depends on F1 #1710 + F2 #1711. The per-class slices reference this for their 3+-list spells (membership only, no re-authoring).