Warn when masterfeat expansion silently drops unobtainable feats #31

Merged
archvillainette merged 1 commits from feat/class-feat-masterfeat-accessibility-validator into main 2026-07-06 11:20:47 +00:00
Owner

classFeatExpansionCanUseFeat excludes ALLCLASSESCANUSE=0 feats from class feat table masterfeat expansion. When such a feat also has no MinLevelClass, no class can ever obtain it — a data bug that previously failed silently (Spell Focus vanishing from the wizard table, Favored Enemy from ranger, proficiencies from commoner).

New validateClassFeatMasterfeatAccessibility warns for exactly that case; exclusions with an explicit MinLevelClass (deliberate class restrictions, e.g. fighter weapon specialization) and ALLCLASSESCANUSE=1 feats stay silent. No keys are hardcoded — everything is derived from the datasets.

Verified: new test + full go test ./internal/topdata/ pass; against live sow-topdata data it flagged 36 real drops (all fixed by the companion sow-topdata PR, after which it reports 0).

🤖 Generated with Claude Code

`classFeatExpansionCanUseFeat` excludes `ALLCLASSESCANUSE=0` feats from class feat table masterfeat expansion. When such a feat also has no `MinLevelClass`, no class can ever obtain it — a data bug that previously failed silently (Spell Focus vanishing from the wizard table, Favored Enemy from ranger, proficiencies from commoner). New `validateClassFeatMasterfeatAccessibility` warns for exactly that case; exclusions with an explicit `MinLevelClass` (deliberate class restrictions, e.g. fighter weapon specialization) and `ALLCLASSESCANUSE=1` feats stay silent. No keys are hardcoded — everything is derived from the datasets. Verified: new test + full `go test ./internal/topdata/` pass; against live sow-topdata data it flagged 36 real drops (all fixed by the companion sow-topdata PR, after which it reports 0). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
archvillainette added 1 commit 2026-07-06 10:59:52 +00:00
Warn when masterfeat expansion silently drops unobtainable feats
build-binaries / build-binaries (pull_request) Successful in 2m14s
test-image / build-image (pull_request) Successful in 34s
test / test (pull_request) Successful in 1m23s
34c950073b
classFeatExpansionCanUseFeat excludes ALLCLASSESCANUSE=0 feats from
class feat table masterfeat expansion. When such a feat also has no
MinLevelClass, no class can ever obtain it — a data bug that previously
failed silently (e.g. Spell Focus vanishing from the wizard table).

New validator warns for exactly that case; deliberate exclusions with
an explicit MinLevelClass stay silent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
xtul approved these changes 2026-07-06 11:11:46 +00:00
archvillainette merged commit cec3466779 into main 2026-07-06 11:20:47 +00:00
archvillainette deleted branch feat/class-feat-masterfeat-accessibility-validator 2026-07-06 11:20:47 +00:00
Sign in to join this conversation.