docs(03-01): complete boot JWT genre route plan

Tasks completed: 2/2
- Initialize the real app database through plugin migrations
- Serve the seeded genre list behind real cross-plugin JWT middleware

SUMMARY: .planning/phases/03-first-vertical-slice-genres-end-to-end/03-01-SUMMARY.md
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jakub Zych
2026-09-17 20:06:03 +02:00
parent 4ee4c4a2fc
commit 20bd8fe8fc
4 changed files with 200 additions and 22 deletions

View File

@@ -3,14 +3,14 @@ gsd_state_version: 1.0
milestone: v1.0
milestone_name: milestone
status: executing
stopped_at: Phase 3 context gathered
last_updated: "2026-09-17T16:39:57.961Z"
last_activity: 2026-09-17 -- Phase 3 planning complete
stopped_at: Completed 03-01-PLAN.md
last_updated: "2026-09-17T18:06:03.849Z"
last_activity: 2026-09-17
progress:
total_phases: 15
completed_phases: 2
total_plans: 13
completed_plans: 9
completed_plans: 10
percent: 13
---
@@ -21,16 +21,16 @@ progress:
See: .planning/PROJECT.md (updated 2026-09-16)
**Core value:** An existing WinterCMS-shaped app can be ported plugin by plugin to a single Go binary without its frontend noticing: the PHP version's API contract is the acceptance test.
**Current focus:** Phase 3 — first vertical slice — genres end to end
**Current focus:** Phase 03 — first-vertical-slice-genres-end-to-end
## Current Position
Phase: 3
Plan: Not started
Phase: 03 (first-vertical-slice-genres-end-to-end) — EXECUTING
Plan: 2 of 4
Status: Ready to execute
Last activity: 2026-09-17 -- Phase 3 planning complete
Last activity: 2026-09-17
Progress: [██████████] 100% of realized plans (9/9); 2/15 roadmap phases
Progress: [████████░░] 77%
## Performance Metrics
@@ -53,6 +53,7 @@ Progress: [██████████] 100% of realized plans (9/9); 2/15 ro
- Trend: -
*Updated after each plan completion*
| Phase 03 P03-01 | 17 min | 2 tasks | 52 files |
## Accumulated Context
@@ -83,6 +84,9 @@ Recent decisions affecting current work:
- [Phase 02]: Fresh PHP self-replay uses disposable MariaDB fonoteka_parity_* plus process-local hex credentials, never the developer DB or caller-supplied PHP_PARITY_TARGET — T-02-01 T-02-05: check-phase2.sh --fresh-php owns the origin and rejects PHP_PARITY_TARGET
- [Phase 02]: Client flows run on a second winter:up after dropping tables so they are not replayed after the mutating 154-route suite — D-16 and 02-03 seed-then-clients: keep route replay and Nuxt/MCP replay on disjoint schemas
- [Phase 02]: Capture-by-reference mismatch is a two-step share:item flow with a live token change on the second /show — D-11 D-13: contract tests exercise RecordFlow/ReplayFlow public APIs, not private helpers
- [Phase 03]: GORM and app services share one pgx-stdlib *sql.DB; the River LISTEN/NOTIFY pool is a Phase 11 seam and is not created in lagoon.Open — DATA-01: one shared pool now; dual-driver River listener deferred
- [Phase 03]: Generated app main stays framework-generic (lagoon.RuntimeCommands + surf.ServeCommand); fonoteka.go/app.Handler is the in-process boot seam for parity tests — summer build cannot import the app package; CLI serve and tests still assemble the same surf router
- [Phase 03]: Empty golem15.user.jwt.secret fails Boot; tests use a fixed test-only HS256 secret and do not issue tokens through a production API — D-11: missing secret must not fall back; token minting stays out of Phase 3
### Pending Todos
@@ -104,6 +108,6 @@ Items acknowledged and carried forward from previous milestone close:
## Session Continuity
Last session: 2026-09-17T15:47:07.650Z
Stopped at: Phase 3 context gathered
Resume file: .planning/phases/03-first-vertical-slice-genres-end-to-end/03-CONTEXT.md
Last session: 2026-09-17T18:04:55.976Z
Stopped at: Completed 03-01-PLAN.md
Resume file: None