Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/agent-memory/art-director/MEMORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [Art Bible Map](reference_art-bible-map.md) — section map + key rules (palette, shape hierarchy, UI frame-tier system) for design/art/art-bible.md
18 changes: 18 additions & 0 deletions .claude/agent-memory/art-director/reference_art-bible-map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: reference-art-bible-map
description: Location and section map of the project's art bible — check before any visual-direction consultation to cite correct section numbers.
metadata:
type: reference
---

`design/art/art-bible.md` — "What the Gods Left Behind" (Gótico Pixelado Sagrado), ~485 lines, 9 sections, v1.0 as of 2026-07-23, owned by art-director.

Section map (verify line numbers still match before citing — file may grow):
1. Visual Identity Statement — Principle A (Legado es Luz, gold reserved for permadeath-derived), Principle B (scale), Principle C (camera holds gaze on death), reference anchors (Blasphemous 2 / Dark Souls / Hollow Knight)
2. Mood & Atmosphere — per game-state (Preparación, Clímax, Muerte/Sacrificio, Salón Conmemorativo, Transición de Era, Victoria) — 2.2 established the "screen-edge stained-glass crack" motif for kaiju attacks, reusable for any kaiju-telegraph HUD work
3. Shape Language — 3.1 archetypal silhouettes (tropa=vertical astilla uniform, héroe=silueta interrumpida via ONE asymmetric element, kaiju=low/wide horizon-breaker, esbirros=kaiju-family angular flattened), 3.3 UI is fully diegetic (no neutral HUD layer, tradeoff noted), 3.4 eye-priority hierarchy (kaiju > hero > troops > environment)
4. Color System — 4.1 the 7-color palette (6 muted + Oro Reliquia `#F4C542`/`#FFE9A8` exclusive to permadeath-derived elements), 4.2 semantic assignments (Sangre Vieja=active cost/health, Acero Violeta-Ceniza=threat/kaiju/dread, Hueso=living player ally, gold=earned/legendary only), 4.4 UI palette (health bar Hueso→Sangre Vieja drain, selection outline = Acero thin contour no fill, ability-ready gold ONLY for relic-derived abilities), 4.5 colorblind-safety table (gold's redundant channels: bloom/pulse + particle VFX + frame-shape change — never hue alone)
7. UI/HUD Visual Direction — 7.1 two-track typography (Tallada display / Clara numeric — numerics MUST use Clara during combat), 7.2 icon tiers (base=flat silhouette, relic-derived=gold leaded-line detail inside silhouette, panel=full stained-glass, status/debuff=flat max-contrast never gold), 7.3 animation feel (glass/wood-metal physicality, no elastic/bounce easing — reads as arcade), 7.4 frame ornamentation tiers 0-3 (0=no frame/cool marker, 1=simple leaded rect+Hueso ready-edge, 2=leaded+corner tracery+gold only when ready, 3=full stained-glass saturated gold, reserved for Memorial/relic panels only — no 5th tier allowed), 7.5 UX mitigations already agreed (threshold-triggered diegetic events for multi-hero health reading in Climax, distinct rare chime for relic-ability-ready vs. base-ability, opt-in high-contrast accessibility toggle deferred to design/ux/accessibility-requirements.md)
5-6, 8-9: character design direction, environment language, asset standards (naming `[category]_[name]_[variant]_[size]`, Aseprite→lossless PNG, Nearest filtering, no mipmaps on pixel sprites), reference direction (Blasphemous 2/Dark Souls/Hollow Knight/Shadow of Colossus/Godzilla/Pacific Rim — each with explicit "extract this, avoid that" pairs, see 9.7-9.8 anti-redundancy table)

Useful for: any UI/HUD, VFX, or character-visual consultation on this project — the 7-color palette and 7.4 frame-tier system in particular recur across almost every HUD-adjacent design question.
1 change: 1 addition & 0 deletions .claude/agent-memory/game-designer/MEMORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [Input silent-discard pattern](project_input-silent-discard-pattern.md) — input.md discards ambiguous input with zero feedback cue; check sibling GDDs for same gap.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: project_input-silent-discard-pattern
description: Cross-cutting design gap found in input.md — ambiguous/suppressed states resolve by silently discarding player input with zero rejection feedback, undermining Pillar 1's trust promise. Worth re-checking in sibling GDDs.
metadata:
type: project
---

During the `/design-review` of `design/gdd/input.md` (2026-08-19), found that "silently discard, no queueing" is used as the default resolution strategy for *every* ambiguous or suppressed input state in the document: `DEATH_HOLD` suppression (all input), mid-action device switch (input on the non-active device), and pause-during-`BLESSING_SELECT` cancellation. None of these paths define a rejection cue (sound, visual flash, haptic pulse) — the player has no way to distinguish "the game intentionally ignored this input" from "the game is lagging/broken."

**Why this matters**: "What the Gods Left Behind"'s Pillar 1 (Sacrificio con Peso) requires every hero death to read as a legitimate player decision, never a technical accident — input.md's own Player Fantasy section stakes this explicitly ("la entrada del jugador debe ser tan confiable que... el jugador nunca pueda culpar al control"). A discard-with-zero-feedback pattern is exactly the kind of ambiguity that could make a death-adjacent moment feel like a technical accident, especially during `DEATH_HOLD` — the single highest-stakes moment in the whole input system — where a player instinctively mashing buttons in the moment of loss gets total silence back.

**How to apply**: When reviewing `permadeath.md`, `reliquias-bendiciones.md`, `control-y-seleccion-de-unidades.md`, or `ui-hud.md` (none had GDDs yet as of 2026-08-19 per input.md's provisional notes), check whether they inherit this same silent-discard pattern for their own ambiguous/suppressed states, and whether any of them define the missing rejection-feedback cue as a shared contract. Flag it again if still unaddressed — this is a systemic gap, not a one-off.

See also [[input-gdd-review-2026-08-19]] if a fuller memory of that review is written later.
1 change: 1 addition & 0 deletions .claude/agent-memory/performance-analyst/MEMORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [Input GDD perf gaps](project_input_gdd_perf_gaps.md) — AC 22 unfalsifiable, no Input budget row, gamepad cursor undesigned/unbudgeted (review 2026-08-19)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: project-input-gdd-perf-gaps
description: Performance gaps found in design/gdd/input.md AC 22 (latency gate) and missing Input budget category, from 2026-08-19 review
metadata:
type: project
---

Reviewed `design/gdd/input.md` (Sistema de Input, "pendiente de review" as of 2026-08-19) for performance issues. Key open gaps as of that review:

- **AC 22** ("≤1 frame / ≤16.6ms latency, 0 eventos caídos, medido en 60s") has no stated instrumentation strategy for detecting *dropped* events — you can't measure the absence of a signal without an independent record of physical OS events (timestamp diffing or synthetic input injection). No test harness for this is described anywhere in the doc, and Dependencies explicitly says Input has zero upstream deps. This makes AC 22 currently unfalsifiable as a BLOQUEANTE gate.
- The GDD doesn't specify whether intent-signal emission happens synchronously inside `_input`/`_unhandled_input` or via a deferred call — this determines whether "same frame" is guaranteed by construction or just asserted.
- The project's standard Frame Time Budget report table (Gameplay Logic / Rendering / Physics / AI / Audio) has **no Input row**, despite Input carrying a hard latency AC. Escalated as a gap for `technical-director` to decide: fold into Gameplay Logic, or add a dedicated category.
- `technical-preferences.md` calls for an explicitly-designed gamepad cursor/selection system for console (not a straight remap), but `input.md` doesn't design it at all — so its render/update cost per frame is currently unknown and unbudgeted. Worth checking whether a later revision of input.md (or a new GDD) addresses this before implementation.

**Why**: input.md is Foundation-tier and gates Pilar 1 (Sacrificio con Peso) — a hero must never die from a dropped/laggy input. These gaps block a clean performance sign-off.

**How to apply**: If input.md comes back for review/implementation sign-off, check whether the AC 22 instrumentation approach and the Input budget-category question were resolved before treating the BLOQUEANTE gate as satisfied. Check for a gamepad-cursor design (this doc or a new one) before console input work starts.
5 changes: 5 additions & 0 deletions .claude/agent-memory/qa-lead/MEMORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- [Project Overview](project_overview.md) — game pillars that override default story-type gating for save/permadeath work
- [Save/Persistence GDD Status](project_save-persistence-status.md) — undesigned downstream systems; Temporizador↔Guardado reciprocity gap found 2026-08-09
- [Troop System AC Status](project_troop-system-ac-status.md) — sistema-de-tropas.md AC draft status, Combate/Daño & Kaiju blockers, 2 undocumented dependency gaps
- [Heroes System AC Status](project_heroes-system-ac-status.md) — sistema-de-heroes.md AC written & approved; AC-H11/H25/H29 blocked on Permadeath & Kaiju GDDs
- [Input System AC Status](project_input-system-ac-status.md) — input.md AC17 vs. permadeath.md AC-P07c pause contradiction; AC22 not headlessly automatable; AC19-21 unclassified
83 changes: 83 additions & 0 deletions .claude/agent-memory/qa-lead/project_heroes-system-ac-status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
name: project-heroes-system-ac-status
description: Status of Sistema de Héroes GDD's Acceptance Criteria and which ACs are blocked on undesigned Permadeath / Encuentro con Kaiju, as of 2026-08-06
metadata:
type: project
---

`design/gdd/sistema-de-heroes.md` is the Pilar-1-eje GDD (hero permadeath / relic-quality
formula). As of 2026-08-06 its Acceptance Criteria section (AC-H01–AC-H32, Dado/Cuando/Entonces
format) was drafted, approved by the user, and written to the file.

Same pattern as [[project-troop-system-ac-status]] and [[project-save-persistence-status]]:
several ACs are blocked on undesigned downstream GDDs and are only verifiable today via a
mocked contract at Sistema de Héroes' own boundary:
- **AC-H11** (`DYING → DEAD` only after the sustained beat releases) — blocked on Permadeath,
which owns the beat timing. Sistema de Héroes only owns entering/holding `DYING`.
- **AC-H25** (serialized death beats when two heroes die same frame — no two simultaneous
`DEATH_HOLD`s) — blocked on Permadeath, which owns serialization. Sistema de Héroes only
owns snapshotting each hero's D/T/P independently (that part, AC-H24, IS testable today).
- **AC-H29** (~30s tactical-decision window before an inevitable death changes the D/T/P
outcome — Test de Diseño 1) — blocked on Encuentro con Kaiju, which owns encounter design
and the kaiju timer. Verifiable today only with a mock encounter exposing the same hooks.

Distinction worth preserving (mirrors the troop-system note): when a GDD *exposes* a contract
at its own boundary vs. *consumes/controls* a downstream system's behavior, the exposure side
is testable now even if the consumer is undesigned. **AC-H12** (Sistema de Héroes exposes the
full death-circumstance payload — hero_id, hero_name, relic_category, snapshotted D/T/P — to
Permadeath) is fully testable today via a mock listener, even though AC-H11/AC-H25 (what
Permadeath *does* with the beat timing) are not.

**Why**: Sistema de Héroes is the load-bearing system for Pilar 1 (Sacrificio con Peso) — the
`relic_quality` gate formula (D as gate, T/w_stakes and P/w_purpose as bonuses) is the
mechanical proof that intention, not circumstance alone, determines legacy quality. The
negative-agency test (AC-H13/H14: D=0 caps quality at 0.10 regardless of T/P) is the single
most safety-critical unit test in this GDD — any refactor of the relic_quality formula should
re-run it first.

**How to apply**: when Permadeath or Encuentro con Kaiju GDDs get authored, circle back to
`sistema-de-heroes.md` to backfill AC-H11, AC-H25, and AC-H29 against the real contracts (not
mocks), and confirm Permadeath's own GDD satisfies the exposure contract Sistema de Héroes
already committed to in AC-H12 (hero_id/hero_name/relic_category/D-T-P snapshot). Also check
whether Forja de Legado (also undesigned) needs to confirm it consumes the relic_quality→tier
mapping (AC-H19/AC-H20 boundaries) unchanged.

**2026-08-07 adversarial pass — additional findings not yet actioned in the GDD file:**

1. **AC-H21 belongs in the blocked-AC list too, and isn't tagged.** AC-H21 tests the
destination-match rule that decides `D` ("orden emitida con destino X pero murió en otro
lugar → D=0") — but the Dependencies table assigns *providing* the D classification to
Combate/Daño (OQ-2, undesigned). AC-H21 is only verifiable today via a mock Combate/Daño
that happens to implement exactly this destination-match rule — same structural risk as
AC-H11/H25/H29. It should carry a **(bloqueado)** tag and be added to this file's backfill
list, keyed to OQ-2, not just OQ-3/OQ-4. By contrast AC-H13/H16-H20/H22 are fine unblocked —
they test the `relic_quality` formula given D/T/P as opaque inputs, which is source-agnostic.

2. **AC-H23 doesn't test joint-extreme knob combinations, and there's a real bug hiding here.**
`relic_quality` at D=1,T=1,P=1 reduces algebraically to exactly
`base_deliberate + w_stakes + w_purpose` (the `base_accidental` terms cancel). At the
**joint minimum** of each knob's individually-clamped safe range (0.30 + 0.20 + 0.15 =
0.65), Tier 3 Legendaria (needs ≥0.70) becomes **mathematically unreachable even in the
best possible circumstance** — confirmed by hand calc, not yet caught by any AC. At the
**joint maximum** (0.50 + 0.40 + 0.30 = 1.20), the outer `clamp(...,0,1)` silently
saturates, flattening the intended distinction between "good" and "perfect" circumstances.
The Tuning Knobs "Enforcement" text only clamps individual knob values, not the sum — this
is a genuine spec gap (route to game-designer/systems-designer: decide whether to normalize
the three weights to always sum to 1.00, or reject config load if sum drifts too far) before
a new AC-H23b (joint-minimum reachability) / AC-H23c (joint-maximum saturation) can be
written definitively. This matches what systems-designer's parallel review is independently
checking on the troop/kaiju side — coordinate findings before either GDD gets a fix.

3. **AC-H32 is now stale and should be split, not just refreshed.** UI Requirements
(U-1..U-7) are fully written as of this file's last read — the "placeholder, advisory not
gate" note under AC-H32 no longer applies. Split into AC-H32a (3-state discrete tier
transition, U-2), AC-H32b (visibility threshold gating — testable structurally today via a
mock threshold even though OQ-6's exact number is still open), AC-H32c (freeze-on-DYING,
U-4 — Integration tier, ties to the AC-H15 snapshot), AC-H32d (no editorializing text
present, U-5). Also: **U-6** (selection marker visually differentiates hero vs. troop) has
**no covering AC at all** — AC-H07 only tests selection *priority* logic, not the marker's
visual differentiation. Gap to close when AC-H32 gets rewritten.

4. **Core Rule 4 (irreversibility) has a coverage gap.** AC-H27 only tests irreversibility
through a crash/reload. No AC tests an in-session attempt to act on a `DEAD` hero (heal
target validation, order issuance, etc.) being rejected/no-op. Propose AC-H27b.
Loading