Non-blocking nits deferred during the species-epic (#1518) + engine builds. A checklist of small, independent items. - [ ] `serialize/proficiencies.ts` `mergeItemWeaponProficiencies` comment still says "class/race/feat" — should be "class/feat" after #1682 retired `RACE_PROFICIENCY_GRANTS`. - [ ] Add a regression test for **2024 Alert = proficiency-bonus-scaled initiative** (the latent bug #1691's schema centralization silently fixed — no test covers it). - [ ] `#1689 resolveChosenIncreases` silently ignores `chooseSpecs[1..n]` — handle multiple `choose` specs (no wave-1 content uses >1, latent only). - [ ] `#1689 validateSpeciesSkillChoice` uses an inverted `Fail | {ok?}` discriminant vs the `PhaseResult<T>` house shape — align it. - [ ] `#1689 reference.ts` `traitChoices`/`chooseSkillsOf`/`chooseCantripOf` are per-request inner closures — hoist to module level. - [ ] `#1683` casting-ability source is double-computed in `collectSingleClassGranted` — thread it through the return value. - [ ] `#1676` add a belt-and-suspenders "armor-clear does not refund the Bladesong pool" assertion to the equip-clear test. - [ ] `#1684` `seededSpeciesAnchor` ordering nit (see PR #1707 review). All independent; pick up piecemeal.
Non-blocking nits deferred during the species-epic (#1518) + engine builds. A checklist of small, independent items.
serialize/proficiencies.tsmergeItemWeaponProficienciescomment still says "class/race/feat" — should be "class/feat" after Species model (4/8): trait content + the new species-granted sheet section (darkvision visible, Dragonborn ancestry traits); retire RACE_PROFICIENCY_GRANTS #1682 retiredRACE_PROFICIENCY_GRANTS.#1689 resolveChosenIncreasessilently ignoreschooseSpecs[1..n]— handle multiplechoosespecs (no wave-1 content uses >1, latent only).#1689 validateSpeciesSkillChoiceuses an invertedFail | {ok?}discriminant vs thePhaseResult<T>house shape — align it.#1689 reference.tstraitChoices/chooseSkillsOf/chooseCantripOfare per-request inner closures — hoist to module level.#1683casting-ability source is double-computed incollectSingleClassGranted— thread it through the return value.#1676add a belt-and-suspenders "armor-clear does not refund the Bladesong pool" assertion to the equip-clear test.#1684seededSpeciesAnchorordering nit (see PR feat(species): prune flat Race model + race-name create path + character wipe (#1684) #1707 review).All independent; pick up piecemeal.