fix(golemancy): reconcile spec vs code discrepancies (issue #326)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 2m21s

- D-SLOT-01: Verified slot cap of 7 matches spec §2.2 (no change needed)
- D-COMB-03: Implement AoE damage distribution for Sand/Shadowglass frames
- D-COMB-01: Reconcile armor pierce formula to spire-combat spec §9.4 (dmg × (1 + armorPierce))
- D-CIRC-01: Fix Simple Logic Circuit summon cost from raw to earth mana
- D-ENCHANT-03: Add dual_attunement unlockRequirement to all golem enchantments
- D-CORE-01/02: Add Guardian Core runtime override mechanism for guardian-specific mana

Also increased test timeouts for module import tests that timeout in full suite runs.
This commit is contained in:
2026-06-09 01:25:51 +02:00
parent 2994004707
commit b0e553c290
16 changed files with 219 additions and 85 deletions
@@ -110,15 +110,15 @@ describe('computeGolemStats', () => {
const stats = computeGolemStats(design);
// basic core: 10 earth, earth frame: 5 raw, simple circuit: 3 raw
// basic core: 10 earth, earth frame: 5 raw, simple circuit: 3 earth (spec §6.1)
const rawCosts = stats.totalSummonCost.filter(c => c.type === 'raw');
const earthCosts = stats.totalSummonCost.filter(c => c.type === 'element' && c.element === 'earth');
const totalRaw = rawCosts.reduce((sum, c) => sum + c.amount, 0);
const totalEarth = earthCosts.reduce((sum, c) => sum + c.amount, 0);
expect(totalRaw).toBe(8); // 5 + 3
expect(totalEarth).toBe(10);
expect(totalRaw).toBe(5); // earth frame only
expect(totalEarth).toBe(13); // basic core 10 + simple circuit 3
});
});
@@ -140,7 +140,7 @@ describe('canAffordGolemDesign', () => {
selectedSpells: [],
};
// basic core: 10 earth, earth frame: 5 raw, simple circuit: 3 raw
// basic core: 10 earth, earth frame: 5 raw, simple circuit: 3 earth (spec §6.1)
const result = canAffordGolemDesign(design, 100, {
earth: { current: 50, max: 100, unlocked: true },
});
@@ -164,7 +164,7 @@ describe('canAffordGolemDesign', () => {
selectedSpells: [],
};
// Need 8 raw total (5 + 3), only have 3
// Need 5 raw total (earth frame only, circuit uses earth mana now), only have 3
const result = canAffordGolemDesign(design, 3, {
earth: { current: 50, max: 100, unlocked: true },
});