docs(12-04): update state and roadmap progress after plan 12-04

This commit is contained in:
Jakub Zych
2026-10-02 14:44:17 +02:00
parent 3cf2b38a8c
commit 37595fb6b2
2 changed files with 16 additions and 10 deletions

View File

@@ -613,7 +613,7 @@ Plans:
4. Artists/genres/styles lookup endpoints used by the Albums UI pass the parity diff.
5. A request-DTO-level fuzz over every write endpoint asserts unknown and server-owned keys are never persisted (inherits the HTTP half of Phase 5 criterion 3; the HTTP layer does not exist until Phase 6/12).
**Plans**: 3/5 plans executed
**Plans**: 4/5 plans executed
Plans:
@@ -627,7 +627,7 @@ Plans:
- [x] 12-03-PLAN.md — Household and invitations: InvitationService, transactional mail job with encrypted token, notifications write path, members, accept, 409 guard, nuxt-collections flow
**Wave 4** *(blocked on Wave 3 completion)*
- [ ] 12-04-PLAN.md — Albums, search and lookups: full album write path, covers through fetchguard, uploads, bulk/stats/value/missing/sync, Scout-exact search recount, lookups, nuxt-albums flow, created/updated goldens
- [x] 12-04-PLAN.md — Albums, search and lookups: full album write path, covers through fetchguard, uploads, bulk/stats/value/missing/sync, Scout-exact search recount, lookups, nuxt-albums flow, created/updated goldens
**Wave 5** *(blocked on Wave 4 completion)*
- [ ] 12-05-PLAN.md — Unit tests last: D-18 leak test with D-19 totals, route-table scope test, request-DTO fuzz, T-12 threat tests, coverage, check-phase12.sh, security review and validation sign-off
@@ -747,7 +747,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 →
| 11. Jobs, realtime and search infrastructure | 8/8 | In Progress| |
| 11.1. SummerCMS documentation for humans and AI agents | 7/7 | In Progress| |
| 11.2. summercms.io Alpha 0.1 landing page on SummerCMS | 3/3 | In Progress| |
| 12. Płytarium API — Collections and Albums | 3/5 | In Progress| |
| 12. Płytarium API — Collections and Albums | 4/5 | In Progress| |
| 13. Płytarium API — wishlist, notifications, CSV, credentials, public routes | 0/TBD | Not started | - |
| 14. Domain jobs and external integrations | 0/TBD | Not started | - |
| 15. Cutover | 0/TBD | Not started | - |

View File

@@ -4,16 +4,16 @@ milestone: v1.0
current_phase: 12
current_phase_name: Płytarium API — Collections and Albums
status: executing
stopped_at: Completed 12-03-PLAN.md
last_updated: "2026-10-02T12:36:15.774Z"
stopped_at: Completed 12-04-PLAN.md
last_updated: "2026-10-02T12:44:01.203Z"
last_activity: 2026-10-02
last_activity_desc: Phase 12 execution started
state_head: 66497635906aea588e28ba6d34afc6576423a662
state_head: 3cf2b38a8c84fc1251599679b9ab16f5b321566d
progress:
total_phases: 21
completed_phases: 10
total_plans: 101
completed_plans: 99
completed_plans: 100
milestone_name: milestone
---
@@ -29,7 +29,7 @@ See: .planning/PROJECT.md (updated 2026-09-16)
## Current Position
Phase: 12 (Płytarium API — Collections and Albums) — EXECUTING
Plan: 4 of 5
Plan: 5 of 5
Status: Ready to execute
Last activity: 2026-10-02 — Phase 12 execution started
@@ -154,6 +154,7 @@ Progress: [██████░░░░] 60%
| Phase 12 P01 | 39 min | 4 tasks | 57 files |
| Phase 12 P02 | 46 min | 3 tasks | 119 files |
| Phase 12 P03 | 36 min | 3 tasks | 72 files |
| Phase 12 P04 | 82 min | 3 tasks | 226 files |
## Accumulated Context
@@ -446,6 +447,11 @@ Recent decisions affecting current work:
- [Phase 12]: Invitation mail is a conga Enqueue River job on the invite transaction with the token as lagoon.Encrypted ciphertext; the worker skips superseded or non-pending invitations
- [Phase 12]: Every resolver caller maps errors through writeResolveError (404 page, 409 pending-invitation page, else opaque 500)
- [Phase 12]: Route parity cases needing an invitation token seed it on both sides as secret:invite; flows read a PHP-minted token from the log mailer (php_parity.sh serve-mail, invite-token)
- [Phase 12]: 12-04: slugs and artist name keys port Laravel Str::slug/Str::ascii (czeslaw-niemen, rb), non-Latin scripts dropped
- [Phase 12]: 12-04: album search engine ids are re-gated by access and active collection only, as Scout's query callback; filters stay engine-side
- [Phase 12]: 12-04: sync versions compare at whole seconds so PHP's base64 cursor round-trips; albums/value prints exact sums like sprintf('%.2f')
- [Phase 12]: 12-04: GORM callback handles are used through a NewDB session (cleanSession); WithContext keeps the write's bind variables
- [Phase 12]: 12-04: parity album state uses fixed ids/timestamps on both sides; recorded query strings are restored from the spec
### Pending Todos
@@ -494,6 +500,6 @@ Items acknowledged and carried forward from previous milestone close:
## Session Continuity
Last session: 2026-10-02T11:18:14.401Z
Stopped at: Completed 12-03-PLAN.md
Last session: 2026-10-02T12:44:00.552Z
Stopped at: Completed 12-04-PLAN.md
Resume file: None