By all appearances, this should be working. The hp heal as normal, the particle effect fires off, but there is something missing that makes the defensive bonus not show up. When you defend in combat the bonus appears as a unit enchantment - this is not showing up. I thught perhaps the reason why is the spell thinks the casting unit is the "salted pork" but that doesn't make sense since the particle effect fires off. Perhaps there is some hidden combat code that applies the enchantment effect.
<GameItemType InternalName="SaltedPork">
<DisplayName>Salted Pork</DisplayName>
<Description>A rare type of salted pork that works wonders for a weary soul. Eat it to heal 20 points of damage while defending.</Description>
<ShopValue>30</ShopValue>
<Image>Ability_Defend_Icon.png</Image>
<IconFG>Ability_Defend_Icon.png</IconFG>
<SpellType>Tactical</SpellType>
<SpellClass>Defensive</SpellClass>
<SpellSubClass>Buff</SpellSubClass>
<SpellTargetType>Self</SpellTargetType>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>CurHealth</Attribute>
<Value>20</Value>
<Provides>Heals 20 Hit Points</Provides>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_Defense_Blunt</StrVal>
<Duration>1</Duration>
<UpdateDurationAtTurnStart>1</UpdateDurationAtTurnStart>
<Effect>Y_Defend_Particle</Effect>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Tactical_Auto_Defense_Boost]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc]]]></Expression>
</Calculate>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_Defense_Cutting</StrVal>
<Duration>1</Duration>
<UpdateDurationAtTurnStart>1</UpdateDurationAtTurnStart>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Tactical_Auto_Defense_Boost]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc]]]></Expression>
</Calculate>
</GameModifier>
<GameModifier>
<ModType>Unit</ModType>
<Attribute>AdjustUnitStat</Attribute>
<StrVal>UnitStat_Defense_Pierce</StrVal>
<Duration>1</Duration>
<UpdateDurationAtTurnStart>1</UpdateDurationAtTurnStart>
<Calculate InternalName="Calc" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Tactical_Auto_Defense_Boost]]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Calc]]]></Expression>
</Calculate>
</GameModifier>
<IsAvailableForSovereignCustomization>0</IsAvailableForSovereignCustomization>
<RarityDisplay>Common</RarityDisplay>
<IsUsable>1</IsUsable>
<UsableInBattle>1</UsableInBattle>
<ArtDef>SaltedPork_ArtDef</ArtDef>
<GameItemTypeArtDef InternalName="SaltedPork_ArtDef">
<GameItemTypeModelPack InternalName="SaltedPork_Default">
<IconFile>SaltedPork_Item.png</IconFile>
<MapParticle>T_Heal_Particle</MapParticle>
<TintR>79</TintR>
<TintG>48</TintG>
<TintB>20</TintB>
<SFX>Eating</SFX>
<GameItemTypeModel>
</GameItemTypeModel>
</GameItemTypeModelPack>
</GameItemTypeArtDef>
</GameItemType>