docs(03-02): complete tenant-scoped genre counts plan
Tasks completed: 2/2 - Count only albums visible in the active collection - Match PHP filter, validation, ordering and JSON shape SUMMARY: .planning/phases/03-first-vertical-slice-genres-end-to-end/03-02-SUMMARY.md Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3,14 +3,14 @@ gsd_state_version: 1.0
|
||||
milestone: v1.0
|
||||
milestone_name: milestone
|
||||
status: executing
|
||||
stopped_at: Completed 03-01-PLAN.md
|
||||
last_updated: "2026-09-17T18:06:03.849Z"
|
||||
stopped_at: Completed 03-02-PLAN.md
|
||||
last_updated: "2026-09-17T18:14:02.630Z"
|
||||
last_activity: 2026-09-17
|
||||
progress:
|
||||
total_phases: 15
|
||||
completed_phases: 2
|
||||
total_plans: 13
|
||||
completed_plans: 10
|
||||
completed_plans: 11
|
||||
percent: 13
|
||||
---
|
||||
|
||||
@@ -26,11 +26,11 @@ See: .planning/PROJECT.md (updated 2026-09-16)
|
||||
## Current Position
|
||||
|
||||
Phase: 03 (first-vertical-slice-genres-end-to-end) — EXECUTING
|
||||
Plan: 2 of 4
|
||||
Plan: 3 of 4
|
||||
Status: Ready to execute
|
||||
Last activity: 2026-09-17
|
||||
|
||||
Progress: [████████░░] 77%
|
||||
Progress: [█████████░] 85%
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
@@ -54,6 +54,7 @@ Progress: [████████░░] 77%
|
||||
|
||||
*Updated after each plan completion*
|
||||
| Phase 03 P03-01 | 17 min | 2 tasks | 52 files |
|
||||
| Phase 03 P03-02 | 5 min | 2 tasks | 8 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
@@ -87,6 +88,9 @@ Recent decisions affecting current work:
|
||||
- [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
|
||||
- [Phase 03]: lagoon.OrderBy takes a caller allow-list so the framework never hardcodes Fonoteka table names; the handler passes PHP PolishOrder::ALLOWED_COLUMNS — summercms.go must stay app-agnostic; PolishOrder columns live at the Fonoteka call site
|
||||
- [Phase 03]: Duplicate non_empty query keys last-win, matching PHP parse_str; invalid then 1 is accepted, 1 then invalid is 422 — PHP parse_str last-wins confirmed with php -r; Go uses vals[len(vals)-1]
|
||||
- [Phase 03]: Invalid stored context is rewritten to the lowest-ID accessible kind=collection row; auto-provisioning stays out of this slice — Plan 03-02 ports only the JWT default resolve path; CollectionProvisioner is Phase 12
|
||||
|
||||
### Pending Todos
|
||||
|
||||
@@ -108,6 +112,6 @@ Items acknowledged and carried forward from previous milestone close:
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-09-17T18:04:55.976Z
|
||||
Stopped at: Completed 03-01-PLAN.md
|
||||
Last session: 2026-09-17T18:13:51.817Z
|
||||
Stopped at: Completed 03-02-PLAN.md
|
||||
Resume file: None
|
||||
|
||||
Reference in New Issue
Block a user