Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
d21292f
feat(02-01): record real WCL fixtures for public demo report
alexandermayes Sep 8, 2026
d77e865
test(02-01): turn recorded WCL shapes into query, type and rate-limit…
alexandermayes Sep 8, 2026
3435abd
docs(02-01): complete record-fixtures-and-contracts plan
alexandermayes Sep 8, 2026
ea26db0
docs(02-01): update state and roadmap for record-fixtures-and-contrac…
alexandermayes Sep 8, 2026
15e0247
feat(02-02): end-to-end Timeline tab — engine, route, hook, log
alexandermayes Sep 8, 2026
8e60659
feat(02-02): instrument Timeline tab with PostHog, harden non-happy p…
alexandermayes Sep 8, 2026
929675f
docs(02-02): complete cast-timeline plan
alexandermayes Sep 8, 2026
47c5091
feat(02-03): add scripts/regen-game-data.mjs, the wago.tools era-pinn…
alexandermayes Sep 8, 2026
e552d0f
test(02-03): prove generated game data reproduces every pinned ID-to-…
alexandermayes Sep 8, 2026
e8b40c0
docs(02-03): complete wago.tools game-data regeneration pipeline plan
alexandermayes Sep 8, 2026
955c956
feat(02-04): healer sees effective HPS, overheal and uptime vs top he…
alexandermayes Sep 8, 2026
f1a516f
feat(02-04): raid overview reads healer metrics through the shared he…
alexandermayes Sep 8, 2026
835beea
docs(02-04): complete healer metrics plan
alexandermayes Sep 8, 2026
ab9a9fe
feat(02-05): derive idle-gap threshold and death marker from player c…
alexandermayes Sep 8, 2026
41579ae
feat(02-05): filter chips, windowed rendering, and truncation notice …
alexandermayes Sep 8, 2026
9a7c7c4
docs(02-05): complete cast timeline idle/death/filters plan
alexandermayes Sep 8, 2026
188024f
feat(02-06): generate wago-verified consumable names per era
alexandermayes Sep 8, 2026
6e2a889
feat(02-06): compose generated maps into cla-constants, TBC-first col…
alexandermayes Sep 8, 2026
622064b
docs(02-06): generate docs/GAME-DATA-AUDIT.md, re-run regeneration fo…
alexandermayes Sep 8, 2026
59599e3
docs(02-06): add plan summary
alexandermayes Sep 8, 2026
7523a4f
docs(02-06): complete runtime cutover to generated game data plan
alexandermayes Sep 8, 2026
787f930
docs(02-06): record plan deviations in defect ledger
alexandermayes Sep 8, 2026
968a12b
test(02-07): add failing tests for healer suggestion rules
alexandermayes Sep 8, 2026
348165a
feat(02-07): three healer suggestion rules gated off the DPS active-t…
alexandermayes Sep 8, 2026
6693d1a
feat(02-07): label the healer suggestion category and measure adoption
alexandermayes Sep 8, 2026
bf45fbb
docs(02-07): complete healer suggestion rules plan
alexandermayes Sep 8, 2026
df1b966
docs(02-07): complete healer suggestion rules plan
alexandermayes Sep 8, 2026
3dd99c8
test(02-08): behavioural + snapshot coverage for cla-engine and raid-…
alexandermayes Sep 8, 2026
e27d7d5
test(02-08): scripted-fetch coverage of wcl-client token refresh, ret…
alexandermayes Sep 8, 2026
ff676c2
docs(02-08): make a red test suite an explicit deploy blocker in the …
alexandermayes Sep 8, 2026
2b1a68d
docs(02-08): complete regression-net plan
alexandermayes Sep 8, 2026
58242be
docs(02-09): run Task 1 of the Phase 2 OPS-01 gate — local checks, SE…
alexandermayes Sep 8, 2026
ae515c3
docs(02-09): record Task 2 deploy-route decision — preview-first, PR #15
alexandermayes Sep 8, 2026
bee5740
docs(02-09): run preview deploy for Task 3, record SSO-blocked automa…
alexandermayes Sep 8, 2026
4b07e9c
docs(02-09): close Phase 2 OPS-01 gate with post-deploy evidence and …
alexandermayes Sep 8, 2026
d8d89c9
docs(02-09): complete Phase 2 ship-gate plan
alexandermayes Sep 8, 2026
397dd50
docs(02-09): complete Phase 2 ship-gate plan
alexandermayes Sep 8, 2026
eb7c74a
docs(02): add code review report
alexandermayes Sep 8, 2026
06a11f7
test(02): persist human verification items as UAT
alexandermayes Sep 8, 2026
f286a11
docs(02): add phase verification report (human_needed 4/5)
alexandermayes Sep 8, 2026
b5058ce
test(02): complete UAT - 1 passed, 0 issues
alexandermayes Sep 8, 2026
e28557f
docs(phase-02): complete phase execution
alexandermayes Sep 8, 2026
f1d74f4
docs(phase-02): transition — evolve PROJECT.md, refresh STATE.md cont…
alexandermayes Sep 8, 2026
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
19 changes: 15 additions & 4 deletions .planning/PROJECT.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ A player pastes a Warcraft Logs URL and instantly gets **accurate**, actionable
- ✓ GDPR consent layer: Google Privacy & Messaging (TCF v2.2) gates PostHog capture and session replay for EEA/UK visitors; non-EEA unaffected (MONY-01) — Phase 1
- ✓ `/privacy` and `/terms` pages (individual operator, California law, contact info@lootlistplus.com) — Phase 1 (quick task 260906-kzw)
- ✓ OPS-01 ship gate as a repeatable document (`docs/OPS-01-SHIP-GATE.md`) with `seo-invariants` local-vs-prod diff; Phase 1 gate closed with GSC + PostHog evidence — Phase 1
- ✓ Per-fight cast Timeline tab: ordered cast log with idle-gap rows, death marker, per-ability filter chips, windowed rendering and truncation notice, behind a paginated/rate-limited/cached `/api/timeline` (ACC-03) — Phase 2
- ✓ Healer-relevant analysis: effective HPS / overheal % / uptime from one shared helper on both the player card and the raid Healer Breakdown, plus healer-only suggestion rules thresholded against top healers (ACC-04) — Phase 2
- ✓ Game data as generated truth: `npm run regen-game-data` wago.tools pipeline, three era modules with Classic/TBC-first collision precedence, `lib/cla-constants.ts` a thin re-export, `docs/GAME-DATA-AUDIT.md` as the standing review artifact (ACC-01) — Phase 2
- ✓ Regression net: recorded WCL fixtures drive tests for `cla-engine`, `raid-overview-engine`, `wcl-client`, timeline and healer engines (14 files / 135 tests); a red suite now blocks a deploy in the OPS-01 gate (ACC-02) — Phase 2
- ✓ Phase 2 shipped to production (`dpl_5bwk1fJJNuZXkoC5poPGFZQpGy6c`) after a preview sweep; PR #15 open for review — Phase 2

### Active

Expand All @@ -55,7 +60,8 @@ A player pastes a Warcraft Logs URL and instantly gets **accurate**, actionable
- [ ] Ship first monetization — ads as default plan; evaluate low-effort alternatives before committing

**Product quality:**
- [ ] Improve analysis accuracy (top priority per user) and expand tool capabilities
- [ ] Expand tool capabilities beyond the Phase 2 accuracy work (per-player share image bakes in the healer percentile basis — a `costly` decision to revisit in Phase 3)
- [ ] Close the Phase 2 code-review findings: CR-01 healer suggestions fire when `hasHealing` is false (wrong recommendation, live), WR-01 timeline "player not in fight" check is report-scoped not fight-scoped, WR-02 StrictMode double-fires `timeline_filter_used`, WR-03 stale precedence comment in `game-data.test.ts` (`.planning/phases/02-accuracy-analysis-depth/02-REVIEW.md`)

**Ecosystem & community:**
- [ ] Connect LootList+ ↔ ParseForge (cross-promotion between the two sites)
Expand Down Expand Up @@ -83,8 +89,8 @@ A player pastes a Warcraft Logs URL and instantly gets **accurate**, actionable
- Site-wide CTR is structurally misleading (navigational impressions dominate) — never treat it as a health metric; segment first
- Title template appends " | ParseForge" (13 chars) — child page titles must stay under ~47 chars; always render pages to verify, don't eyeball metadata
- **Next keyword candidate**: `wow log analyzer` (392 impr/28d, pos 3.5, tool intent) — segment before building
- **Known concerns** (from CONCERNS.md): CSP still report-only; core engines (cla, raid-overview, wcl-client) largely untested. *(Resolved Phase 1: PostHog EU consent flow now gated by the Google CMP.)* Deferred from Phase 1: formal ASVS security review — gsd security tooling not installed; per-plan STRIDE registers exist
- **Manual follow-ups after Phase 1**: paste `https://parseforge.gg/privacy` into AdSense → Privacy & messaging → message site settings; re-check PostHog event definitions (`theme_changed`, `consent_resolved`) at the Phase 2 gate; `git push origin main` (unpushed phase forces sequential execution)
- **Known concerns** (from CONCERNS.md): CSP still report-only. *(Resolved Phase 1: PostHog EU consent flow now gated by the Google CMP. Resolved Phase 2: core engines now under a fixture-driven regression net.)* Deferred from Phases 1 and 2: formal ASVS security review — gsd security tooling not installed in this profile; per-plan STRIDE registers exist
- **Manual follow-ups after Phase 2**: paste `https://parseforge.gg/privacy` into AdSense → Privacy & messaging → message site settings (still open); PostHog event definitions (`timeline_viewed`, `timeline_error`, `timeline_filter_used`, `analysis_complete`, `theme_changed`, `consent_resolved`) — confirmed by the developer at the Phase 2 UAT, but the PostHog MCP connection returns `INVALID_API_KEY` and its active project is LootList+ App, so re-wire it before the Phase 3 gate; GSC shows `/` and `/analyze/*` as "Crawled – currently not indexed" with pre-deploy crawl dates — request recrawl of the Phase 2 build and watch `/` specifically; `origin/main` is at `55d2010` (pre-Phase-2) and Phase 2 lives on PR #15 (`growth/phase-2-accuracy-depth`) — merge or push to restore parallel worktree execution; two game-data ids (96264, 96294) flagged for human review in `.planning/WINDOWS.md`
- **Feedback source today**: owner's personal Discord (uncomfortable) — motivates the community requirement

## Constraints
Expand Down Expand Up @@ -112,6 +118,11 @@ A player pastes a Warcraft Logs URL and instantly gets **accurate**, actionable
| Class-attribute theming via next-themes, tokens enforced by `theme-parity` + `token-audit` scripts | Machine-checkable DSGN-01 so the Phase 7 redesign can't regress hardcoded colours | ✓ Good (Phase 1) |
| Preview deploy before every prod deploy when no real-browser pass happened | Agents can't drive a browser; a preview lets the developer eyeball before visitors do | ✓ Good (Phase 1) |
| Defer the formal ASVS security review for Phase 1 | Security tooling absent from this gsd-core profile; STRIDE registers exist per plan | — Pending (install tooling, run `/gsd-secure-phase 01`) |
| Record real WCL responses as committed fixtures before building on assumed shapes (Phase 2 Wave 0) | RESEARCH.md carried five unverified API-shape assumptions; recording once fed both the timeline and the regression net, and corrected A3 (scoped healing table has per-ability `overheal` but no `activeTime`) | ✓ Good (Phase 2) |
| Era precedence for generated game data is Classic/TBC-first, not later-era-wins | Client builds reuse numeric IDs across eras (806 enchant + 295 gem collisions); later-wins silently corrupted pinned pairs 3003/2667/32196 | ✓ Good (Phase 2) — 130/178 consumable names are explicit sourced overrides |
| One healer-metrics helper feeds both the player card and the raid overview | D-08: two surfaces must never disagree; parity is asserted by test and was confirmed live in production | ✓ Good (Phase 2) |
| Preview-first deploy plus push + PR before shipping Phase 2 | Regenerated game-data names had the least automated coverage; PR #15 makes the regen diff reviewable (D-12) | ✓ Good (Phase 2) — prod `dpl_5bwk1fJJNuZXkoC5poPGFZQpGy6c` |
| Defer the formal ASVS security review for Phase 2 (same as Phase 1) | `gsd-secure-phase` still not installed in this profile; per-plan STRIDE registers exist | — Pending (install tooling, run `/gsd-secure-phase 02`) |

## Evolution

Expand All @@ -131,4 +142,4 @@ This document evolves at phase transitions and milestone boundaries.
4. Update Context with current state

---
*Last updated: 2026-09-07 after Phase 1*
*Last updated: 2026-09-08 after Phase 2*
16 changes: 8 additions & 8 deletions .planning/REQUIREMENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ Requirements for this milestone. Each maps to roadmap phases.

### Accuracy & Capabilities

- [ ] **ACC-01**: Game-data accuracy re-audit via the wago.tools regeneration workflow (no hand-typed ID maps)
- [ ] **ACC-02**: Test coverage added for the untested engines (`cla-engine`, `raid-overview-engine`, `wcl-client`)
- [ ] **ACC-03**: User can view a per-fight cast timeline (closes table-stakes gap vs competitors)
- [ ] **ACC-04**: Healer-specific analysis improved (healer metrics beyond raw HPS)
- [x] **ACC-01**: Game-data accuracy re-audit via the wago.tools regeneration workflow (no hand-typed ID maps)
- [x] **ACC-02**: Test coverage added for the untested engines (`cla-engine`, `raid-overview-engine`, `wcl-client`)
- [x] **ACC-03**: User can view a per-fight cast timeline (closes table-stakes gap vs competitors)
- [x] **ACC-04**: Healer-specific analysis improved (healer metrics beyond raw HPS)

### Community & Cross-Promotion

Expand Down Expand Up @@ -103,10 +103,10 @@ Which phases cover which requirements. Updated during roadmap creation.
| MONY-01 | Phase 1 | Complete |
| MONY-02 | Phase 4 | Pending |
| MONY-03 | Phase 4 | Pending |
| ACC-01 | Phase 2 | Pending |
| ACC-02 | Phase 2 | Pending |
| ACC-03 | Phase 2 | Pending |
| ACC-04 | Phase 2 | Pending |
| ACC-01 | Phase 2 | Complete |
| ACC-02 | Phase 2 | Complete |
| ACC-03 | Phase 2 | Complete |
| ACC-04 | Phase 2 | Complete |
| COMM-01 | Phase 5 | Pending |
| COMM-02 | Phase 5 | Pending |
| OPS-01 | Phase 1 | Phase 1 gate closed 2026-09-06 — docs/OPS-01-SHIP-GATE.md (standing gate, re-run every phase) |
Expand Down
24 changes: 12 additions & 12 deletions .planning/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ ParseForge is a live product with real organic traffic, so this milestone ships
Decimal phases appear between their surrounding integers in numeric order.

- [x] **Phase 1: Foundation — Themes & Consent** - Token audit unlocks a dark/light toggle; consent layer gates ads and PostHog replay (completed 2026-09-06)
- [ ] **Phase 2: Accuracy & Analysis Depth** - Verified game data, tested engines, cast timeline, healer metrics
- [x] **Phase 2: Accuracy & Analysis Depth** - Verified game data, tested engines, cast timeline, healer metrics (completed 2026-09-08)
- [ ] **Phase 3: Share Loop** - Roast/award cards, per-player permalinks, share CTA that survives later phases
- [ ] **Phase 4: Ads Live** - AdSense in reserved, consent-gated slots that never crowd the core flow
- [ ] **Phase 5: Community & Cross-Promotion** - Dedicated Discord, LootList+ two-way links, auto-posted reports
Expand Down Expand Up @@ -92,33 +92,33 @@ Plans:
4. `cla-engine`, `raid-overview-engine`, and `wcl-client` have automated tests that fail when analysis output changes — a regression safety net in place before the redesign touches anything.
5. New timeline and healer surfaces ship with PostHog events and pass the GSC verification pass (OPS-01 gate).

**Plans**: 9 plans
**Plans**: 9/9 plans executed
**UI hint**: yes

Plans:
**Wave 1**

- [ ] 02-01-PLAN.md — Wave 0: record real WCL fixtures, then the query, type and rate-limit contracts the phase builds on
- [x] 02-01-PLAN.md — Wave 0: record real WCL fixtures, then the query, type and rate-limit contracts the phase builds on

**Wave 2** *(blocked on Wave 1 completion)*

- [ ] 02-02-PLAN.md — Cast timeline tracer: open the Timeline tab and read your casts in order, end to end
- [ ] 02-03-PLAN.md — wago.tools regeneration pipeline: script, overrides layer, three generated era modules
- [x] 02-02-PLAN.md — Cast timeline tracer: open the Timeline tab and read your casts in order, end to end
- [x] 02-03-PLAN.md — wago.tools regeneration pipeline: script, overrides layer, three generated era modules

**Wave 3** *(blocked on Wave 2 completion)*

- [ ] 02-04-PLAN.md — Healer metrics: effective HPS, overheal and uptime from one shared helper on both surfaces
- [ ] 02-05-PLAN.md — Timeline depth: idle gaps, death marker, filter chips, virtualisation, truncation notice
- [ ] 02-06-PLAN.md — Cut cla-constants over to generated data and emit docs/GAME-DATA-AUDIT.md
- [x] 02-04-PLAN.md — Healer metrics: effective HPS, overheal and uptime from one shared helper on both surfaces
- [x] 02-05-PLAN.md — Timeline depth: idle gaps, death marker, filter chips, virtualisation, truncation notice
- [x] 02-06-PLAN.md — Cut cla-constants over to generated data and emit docs/GAME-DATA-AUDIT.md

**Wave 4** *(blocked on Wave 3 completion)*

- [ ] 02-07-PLAN.md — Healer-specific suggestions relative to top-healer values; DPS-shaped rules gated off
- [ ] 02-08-PLAN.md — Engine regression tests for cla-engine, raid-overview-engine and wcl-client
- [x] 02-07-PLAN.md — Healer-specific suggestions relative to top-healer values; DPS-shaped rules gated off
- [x] 02-08-PLAN.md — Engine regression tests for cla-engine, raid-overview-engine and wcl-client

**Wave 5** *(blocked on Wave 4 completion)*

- [ ] 02-09-PLAN.md — OPS-01 gate close-out and approval-gated production deploy
- [x] 02-09-PLAN.md — OPS-01 gate close-out and approval-gated production deploy

**Notes**: Accuracy is the project's stated core value ("a wrong recommendation is worse than no recommendation"), so it precedes monetization and redesign. The engine tests here are what make Phase 7's redesign safe to attempt.

Expand Down Expand Up @@ -224,7 +224,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. Foundation — Themes & Consent | 9/9 | Complete | 2026-09-06 |
| 2. Accuracy & Analysis Depth | 0/9 | Planned | - |
| 2. Accuracy & Analysis Depth | 9/9 | Complete | 2026-09-08 |
| 3. Share Loop | 0/TBD | Not started | - |
| 4. Ads Live | 0/TBD | Not started | - |
| 5. Community & Cross-Promotion | 0/TBD | Not started | - |
Expand Down
Loading
Loading