Feature-level wiring gaps found by importing the six LaserLlama Alternate classes through the real import path and comparing each feature's declared resource spend against its enriched limitedUses / linked modifiers.
Class resource definition problems are tracked separately, as is sheet exposure.
1. Alternate Barbarian Rage never spends the Rage pool (P0)
Side by side with the SRD baseline:
SRD Barbarian "Rage" limitedUses = {"type":"class_resource","classResourceKey":"rage"}
Alternate Barbarian "Rage" limitedUses = undefined
Alternate Barbarian "Rage" linked characteristics = ["damage_resistance"]
The rage resource itself is produced correctly (2 to 6 uses, unlimited at 20). The feature just never deducts from it, so raging is free.
2. Six dead resource keys point at pools the owning class does not have (P0)
Each of these silently no-ops, because the referenced key is not owned by the class:
| Class / feature |
References |
Class actually owns |
| Alternate Fighter / Relentless |
superiority_dice |
exploit_dice |
| Alternate Monk / Way of the Shadow Arts, Cloak of Shadows |
focus_points |
alternate_monk_ki_points |
| Alternate Ranger / Monster Slayer, Knowledge of the Hunt |
quarry_dice |
quarry_die (looks like a plain _die / _dice typo) |
| Alternate Ranger / Buccaneer |
wild_shape |
n/a |
| Alternate Rogue / Psiknife (4 features) |
psi_points |
n/a |
| Alternate Sorcerer / Sorcery Incarnate |
sorcery_points unprefixed |
alternate_sorcerer_sorcery_points |
A validator asserting that every referenced classResourceKey is owned by the class would catch all six at import time and prevent the next one.
3. Roughly 150 features name a resource spend in their text with no wiring attached
Counts per class, for features whose prose names a spend but which have no limitedUses and no resolved class resource:
| Class |
Features naming a spend with no wiring |
| Alternate Monk |
50 |
| Alternate Sorcerer |
49 |
| Alternate Barbarian |
18 |
| Alternate Fighter |
13 |
| Alternate Ranger |
12 |
| Alternate Rogue |
10 |
A 9-feature sample was hand-checked and 7 were unambiguously real spends (literal "expend 1 Ki", "spend 2 Ki" phrasing), so roughly three quarters of these are genuine misses rather than false positives from the detector.
Named base-class offenders worth fixing first because every character of that class hits them: Cunning Strike (Rogue, level 5), Mystic Techniques (Monk), Metamagic (Sorcerer), Magical Flux (Sorcerer).
Reproducing
Import the Drive JSON for a class through prepareImportedContent (not just applyImportEnrichmentPresets — the existing laserllama-*-import.test.ts files stop before the step where several of these surface), then inspect each feature's limitedUses and linked modifier classResourceKey against its description text.
Feature-level wiring gaps found by importing the six LaserLlama Alternate classes through the real import path and comparing each feature's declared resource spend against its enriched
limitedUses/ linked modifiers.Class resource definition problems are tracked separately, as is sheet exposure.
1. Alternate Barbarian Rage never spends the Rage pool (P0)
Side by side with the SRD baseline:
The
rageresource itself is produced correctly (2 to 6 uses, unlimited at 20). The feature just never deducts from it, so raging is free.2. Six dead resource keys point at pools the owning class does not have (P0)
Each of these silently no-ops, because the referenced key is not owned by the class:
superiority_diceexploit_dicefocus_pointsalternate_monk_ki_pointsquarry_dicequarry_die(looks like a plain_die/_dicetypo)wild_shapepsi_pointssorcery_pointsunprefixedalternate_sorcerer_sorcery_pointsA validator asserting that every referenced
classResourceKeyis owned by the class would catch all six at import time and prevent the next one.3. Roughly 150 features name a resource spend in their text with no wiring attached
Counts per class, for features whose prose names a spend but which have no
limitedUsesand no resolved class resource:A 9-feature sample was hand-checked and 7 were unambiguously real spends (literal
"expend 1 Ki","spend 2 Ki"phrasing), so roughly three quarters of these are genuine misses rather than false positives from the detector.Named base-class offenders worth fixing first because every character of that class hits them:
Cunning Strike(Rogue, level 5),Mystic Techniques(Monk),Metamagic(Sorcerer),Magical Flux(Sorcerer).Reproducing
Import the Drive JSON for a class through
prepareImportedContent(not justapplyImportEnrichmentPresets— the existinglaserllama-*-import.test.tsfiles stop before the step where several of these surface), then inspect each feature'slimitedUsesand linked modifierclassResourceKeyagainst itsdescriptiontext.