Refine genlocke epic with user flow, child features, and action items

Break down the genlocke tracking epic into 8 child beans with
checklists, dependency chains, and success criteria. Add CLAUDE.md
instruction for updating parent checklists on child completion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Julian Tabel
2026-02-09 08:47:49 +01:00
parent 6a36738b8b
commit 3a1aedda32
10 changed files with 439 additions and 35 deletions

View File

@@ -1,36 +1,89 @@
---
# nuzlocke-tracker-25mh
title: Genlocke tracking
status: draft
status: todo
type: epic
priority: normal
created_at: 2026-02-08T12:17:19Z
updated_at: 2026-02-08T12:17:19Z
updated_at: 2026-02-09T07:45:10Z
---
Track a **genlocke** — a series of linked nuzlocke runs, typically one per generation or region. The player picks one game per generation (e.g. FireRed instead of Red) and surviving Pokemon carry over between legs.
Track a **genlocke** — a series of linked nuzlocke runs, typically one per generation or region. The player picks one game per generation/region and surviving Pokemon carry over between legs.
## Context
## User Flow
A genlocke connects multiple nuzlocke runs into a single overarching challenge. Key aspects:
### 1. Create Genlocke
The user starts a new genlocke and gives it a name.
- **Leg ordering**: Each run is a "leg" in a defined sequence (usually Gen 1 → Gen 2 → ... or by region). The user chooses which game represents each leg.
- **Pokemon transfer**: Pokemon that survive one leg can be bred/traded into the next leg as eggs (typically hatch at level 1). This is the core mechanic that ties legs together.
- **Cumulative graveyard**: Deaths across all legs are tracked together — a Pokemon that dies in Gen 3 stays dead for the whole genlocke.
- **Overall progress**: Dashboard showing completion status across all legs, total deaths, surviving lineage, etc.
- **Flexible structure**: Some players do one game per generation, others do one per region, or even custom orderings. The system should be flexible.
### 2. Select Games (Legs)
The user picks which games to play, in order. The UI offers **preset templates** to speed this up, but the user can always customize:
## Possible data model
- **True Genlocke** — One original game per generation (Red/Blue/Yellow → Gold/Silver/Crystal → Ruby/Sapphire/Emerald → ...). Uses the original releases only.
- **Normal Genlocke** — Uses the latest remake or enhanced version for each region (FireRed/LeafGreen → HeartGold/SoulSilver → Emerald → Platinum → ...). This is the most common format.
- **Custom** — The user picks any games in any order. No restrictions on which games or how many.
- A `Genlocke` entity that groups multiple `NuzlockeRun` records in a defined order (leg number)
- Each run gets a `genlocke_id` + `leg_order` to place it in the sequence
- A `GenlockeTransfer` or similar to track which Pokemon carry over between legs (linking an encounter from leg N to a starter/gift encounter in leg N+1)
For the preset templates, the user still picks *which* game within each generation/region slot (e.g., FireRed vs LeafGreen for Gen 1). The template just determines which slots are shown. The user can add/remove/reorder legs after selecting a template.
## Potential child features
Games are grouped by **region** (not release generation) for the purpose of presets, since that's how genlocke players think about it (e.g., FireRed is a "Kanto" leg, not a "Gen 3" leg).
- Create/manage a genlocke (pick games for each leg, reorder)
- Genlocke dashboard (overall progress, cumulative stats)
- Transfer UI: after completing a leg, select surviving Pokemon to carry forward
- Lineage tracking: show a Pokemon's journey across multiple legs
- Genlocke-aware graveyard (deaths across all legs)
- Templates for common genlocke formats ("one per gen", "one per region")
### 3. Configure Rules
Two categories of rules are configured:
**Per-game nuzlocke rules** — The standard nuzlocke ruleset (first encounter only, permadeath, duplicates clause, level caps, etc.). These are set once and apply uniformly to all legs. Uses the existing `NuzlockeRules` interface.
**Genlocke-specific rules** — Overarching rules that govern how legs connect:
- **Keep HoF** (default) — Pokemon that enter the Hall of Fame at the end of a leg are transferred to the next leg as eggs (breed at level 1). This is the standard genlocke mechanic.
- **Retire HoF** — Pokemon that enter the Hall of Fame are retired. They (and their evolutionary families) become unavailable in future legs (added to a cumulative dupe list). This is also known as the "Gauntlet" rule. Increases difficulty by forcing new Pokemon each leg.
- Potentially more rules in the future (e.g., item carry-over restrictions, level scaling).
### 4. Sequential Run Progression
- When the genlocke is created, the **first leg** is automatically started as a new nuzlocke run.
- Each leg is a full nuzlocke run, tracked exactly like any standalone run (encounters, team, bosses, graveyard, etc.).
- When a leg is marked as **completed** (Hall of Fame), the next leg is started. A transfer step happens between legs where the user selects which surviving Pokemon to carry forward.
- When a leg is marked as **failed** (wipe), the genlocke itself is marked as failed (game over).
- The final leg's completion marks the entire genlocke as completed.
### 5. Genlocke Overview Page
A dedicated page showing:
- **Progress** — Which leg is active, which are completed, which are upcoming. Visual timeline or step indicator.
- **Configuration** — Selected games, rules, genlocke-specific rules.
- **Cumulative Stats** — Total encounters, total deaths, total HoF entries across all legs.
- **Lineage Tracking** — Show Pokemon that have carried over across multiple legs (their journey through the genlocke).
- **Cumulative Graveyard** — All deaths across all legs in one view.
## Data Model
### New entities:
- **`Genlocke`** — Top-level entity: name, status (active/completed/failed), genlocke rules (JSONB), created_at.
- **`GenlockeLeg`** — Join table linking a Genlocke to a NuzlockeRun: genlocke_id, run_id, leg_order. Defines the sequence.
### Changes to existing entities:
- **`NuzlockeRun`** — No schema changes needed. A run that's part of a genlocke is just a normal run that happens to be referenced by a GenlockeLeg. The genlocke-level rules are stored on the Genlocke, not duplicated per run.
### Transfer tracking:
- **`GenlockeTransfer`** — Records which Pokemon were carried between legs: from_leg_id, to_leg_id, encounter_id (the source encounter from the completed leg), to_encounter_id (the egg/gift encounter created in the next leg).
## Child Features (suggested breakdown)
1. **Genlocke creation wizard** — Multi-step UI: name → game selection (with presets) → rules → confirm
2. **Genlocke overview page** — Dashboard with progress, stats, configuration
3. **Leg progression** — Auto-start next leg when current completes, transfer step
4. **Transfer UI** — Select surviving Pokemon to carry forward between legs
5. **Lineage tracking** — Show a Pokemon's journey across legs
6. **Cumulative graveyard** — Deaths across all legs in one view
7. **Gauntlet/Retire HoF rule** — Enforce the "retire" mechanic with cumulative dupe list
## Success Criteria
- [ ] A user can create a new genlocke via a multi-step wizard (name, game selection with presets, rules)
- [ ] Games can be selected using True Genlocke, Normal Genlocke, or Custom presets, grouped by region
- [ ] Nuzlocke rules are configured once and applied uniformly to all legs
- [ ] Genlocke-specific rules (Keep HoF / Retire HoF) can be selected
- [ ] The first leg starts automatically upon genlocke creation
- [ ] Each leg is a full nuzlocke run, tracked identically to standalone runs
- [ ] Completing a leg triggers a transfer step where surviving Pokemon can be carried forward
- [ ] Failing a leg marks the entire genlocke as failed
- [ ] Completing the final leg marks the genlocke as completed
- [ ] A genlocke overview page shows progress, configuration, cumulative stats, lineage, and graveyard
- [ ] Transferred Pokemon appear as eggs (base form, level 1) in the next leg
- [ ] Pokemon lineage is trackable across multiple legs
- [ ] A cumulative graveyard shows all deaths across the entire genlocke
- [ ] The Retire HoF / Gauntlet rule correctly retires HoF Pokemon and adds their families to the dupe list