docs: reconcile spec inconsistencies across all documentation
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s

- Fix incursion start day: 5→20 in GAME_BRIEFING.md (matches code constant)
- Fix fabricator discipline count: 2→5 in AGENTS.md
- Fix discipline counts: elemental.ts 22→21, advanced-regen.ts 14→15
- Fix equipment count: 50→43, remove shields, fix catalysts count
- Fix prestige upgrade count: add missing manaWell, manaFlow, pactBinding, pactInterferenceMitigation
- Remove x3 victory multiplier (no victory condition defined yet)
- Update pact persistence: pacts do NOT persist through prestige
- Update elemental matchup tables to match ultimate truth
- Update room type frequencies to match spire-climbing-spec
- Update guardian data tables to use formulas
- Update Tier 3 guardian elements to match guardian-data.ts code
- Add pactBinding + pactInterferenceMitigation to PRESTIGE_DEF constants
- Wire pactInterferenceMitigation into useGameDerived.ts
- Update spire-combat-spec.md Known Gaps table (DoT implemented, melee bypass bug)
- Update invoker-spec.md known issues (all resolved)
- Update golemancy-spec.md status (undergoing redesign)
- Update PrestigeTab test to expect 15 upgrades
- Create Gitea issues #285 (melee defense bypass), #286 (DoT verified), #287 (mana conversion gap)
This commit is contained in:
2026-06-05 14:07:22 +02:00
parent 69cc8b78d1
commit 6aed5c8d2b
10 changed files with 135 additions and 88 deletions
@@ -4,9 +4,10 @@
> configuration, summoning lifecycle, maintenance costs, room duration, combat
> behavior, and discipline interactions.
>
> **⚠ Spec-defined, implementation pending.** This spec is based on
> `docs/specs/spire-combat-spec.md` §9 and represents the intended design.
> The current code has golem data defined but disconnected from the combat pipeline.
> **⚠ Undergoing full redesign (see issue #268).** The golemancy system is being
> redesigned from predefined golem types to a component-based construction system
> (Core + Frame + Mind Circuit + Enchantments). The current data definitions exist
> but are disconnected from the combat pipeline.
---
@@ -190,10 +190,10 @@ The following inconsistencies exist in the codebase:
| Issue | Description |
|---|---|
| `pactBinding` upgrade | Referenced in `prestigeStore.doPrestige` but **not defined** in `PRESTIGE_DEF` constants |
| UI vs store mismatch | UI displays `prestigeUpgrades.pactCapacity` but store logic checks `pactBinding` |
| Pact persistence | `signedPacts` is persisted but also reset to `[]` on `startNewLoop` — pacts don't survive loops in current implementation |
| `pactInterferenceMitigation` | Used in `pact-utils.ts` but no prestige upgrade defines it |
| `pactBinding` upgrade | **RESOLVED** — Added to `PRESTIGE_DEF` in `prestige.ts` |
| UI vs store mismatch | **RESOLVED**`pactBinding` is now the canonical ID used everywhere |
| Pact persistence | **RESOLVED BY DESIGN** — Pacts intentionally do NOT persist through prestige (reset each loop). This is the correct behavior per design intent. |
| `pactInterferenceMitigation` | **RESOLVED** — Added to `PRESTIGE_DEF` in `prestige.ts`; `useGameDerived.ts` now passes it from prestige store |
---
+6 -6
View File
@@ -539,14 +539,14 @@ They are **in scope for the implementation this spec describes**:
| Feature | Where Defined | Status | This Spec's Requirement |
|---|---|---|---|
| Enemy armor reduction | `EnemyState.armor`, `MODIFIER_CONFIG.armored` | Data-only | Implement in `onDamageDealt` §5.2 |
| Enemy barrier absorption | `EnemyState.barrier`, `MODIFIER_CONFIG.mage/shield` | Data-only | Implement in `onDamageDealt` §5.2 |
| Enemy dodge roll | `EnemyState.dodgeChance`, `MODIFIER_CONFIG.agile` | Data-only | Implement in `onDamageDealt` §5.2 |
| Enemy armor reduction | `EnemyState.armor`, `MODIFIER_CONFIG.armored` | **Implemented** (spells/DoTs only; melee bypasses — see issue #285) | Implement in `onDamageDealt` §5.2 |
| Enemy barrier absorption | `EnemyState.barrier`, `MODIFIER_CONFIG.mage/shield` | **Implemented** (spells/DoTs only; melee bypasses — see issue #285) | Implement in `onDamageDealt` §5.2 |
| Enemy dodge roll | `EnemyState.dodgeChance`, `MODIFIER_CONFIG.agile` | **Implemented** (spells/DoTs only; melee bypasses — see issue #285) | Implement in `onDamageDealt` §5.2 |
| Mage barrier recharge | `MODIFIER_CONFIG.mage.barrierRechargeRate` | Data-only | Tick in `onDamageDealt` §5.2 |
| Guardian armor | `GuardianDef.armor` | Data-only | Add check to guardian pipeline §5.3 |
| DoT / debuff system | Spell/enchantment type defs | No runtime | Implement per §6 |
| DoT / debuff system | Spell/enchantment type defs | **Implemented**`dot-runtime.ts` complete and wired into combat tick | Verified working; curse amplification needs investigation (see issue #286) |
| Golemancy combat | Full golem data exists | Disconnected | Implement per §9 |
| Sword melee attacks | Weapon type exists | Not in combat tick | Add `meleeProgress` per §3.1 |
| Sword melee attacks | Weapon type exists | **Partial** — meleeProgress exists but bypasses enemy defenses (see issue #285) | Add `meleeProgress` per §3.1 |
| AoE target distribution | `SpellDefinition.aoe` flag | Partial | Implement per §3.2 |
| `elemMasteryBonus` | Stub in `calcDamage` | Hardcoded `1` | Future — leave as `1` for now |
| `guardianBonus` | Stub in `calcDamage` | Hardcoded `1` | Future — leave as `1` for now |
@@ -612,7 +612,7 @@ interface EnemyState {
| `src/lib/game/constants/elements.ts` | Element list, opposition cycle |
| `src/lib/game/constants/core.ts` | `HOURS_PER_TICK`, `INCURSION_START_DAY` |
| `src/lib/game/data/guardian-encounters.ts` | Guardian definitions |
| `src/lib/game/data/golems/` | Golem definitions (12 golems, tiers 14) |
| `src/lib/game/data/golems/` | Golem definitions (10 golems, tiers 14; undergoing redesign — see issue #268) |
| `src/lib/game/effects.ts` | `getUnifiedEffects` — merges all combat bonuses |
| `src/components/game/tabs/SpireCombatPage/SpireHeader.tsx` | In-game time display |
| `src/components/game/tabs/SpireCombatPage/RoomDisplay.tsx` | Room type, enemy state, active effects |