Putting BonusFor.? tags on the hero does not make any sense to me. How would HL know which class or classes the tag was meant for. I am pretty sure you should be assiging the BonusFor.? tag to the class itself.
Code:
doneif (hero.tagis[source.WiSRules] + hero.tagis[source.WiSWeapons] = 0)
~ We're an NPC, and subject to feat taxes, so we're done
doneif (hero.tagis[WiSRules.PayFeatTax] <> 0)
~ Check if we're a Tempered Champion
doneif (hero.tagis[ClassVary.arPalTmpCh] = 0)
perform hero.childfound[arPalTmpCh].linkage[varies].assign[BonusFor.wsTempChamp]
Also instead of even using "BonusFor.?" each feat makes a tag called fInclude.? where ? is the Unique ID of the feat. So if I wanted to allow the choice of the Dodge feat as a bonus feat to a class I could just assign the tag fInclude.fDodge to the class.