Files
summercms/.planning/phases/12-p-ytarium-api-collections-and-albums/12-DISCUSSION-LOG.md
2026-09-28 01:28:25 +02:00

2.9 KiB

Phase 12: Płytarium API — Collections and Albums - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-09-28 Phase: 12-p-ytarium-api-collections-and-albums Areas discussed: Route boundary, Parity evidence, Invitations & mail, Search & security test


Todo cross-reference

Option Description Selected
Fold only if Discogs lands here Decide with the route boundary ✓
Leave for Phase 14 Keep pending

Outcome: Discogs cover-price deferred → todo not folded.

Route boundary

Question Options Selected
Reservations (wishlist-only in PHP) Move to Phase 13 / Keep in 12 Move to Phase 13
Discogs cover-price Pull minimal Discogs in / Defer to 14 Defer to 14
sync/stats/value/missing/bulk All five / Only what Nuxt calls All five
match/apply-release/recognize/import Phase 14 / Phase 12 Phase 14
cover_urls on create Seam wired in 14 / Port CoverImporter now Port CoverImporter now
Public share surface Collection side in 12 / All public routes in 13 All public routes in 13

Notes: API-01 and success criterion 1 need rewording; CoverImporter uses the existing fetchguard GET.

Parity evidence

Question Options Selected
New recordings Nuxt flows + error cases / Flows only / Existing only Nuxt flows + error cases
Centrifugo publications Record for album flows / Reuse P11 Record for album flows
Token-group twins Same handler, own fixtures / Route-table only Same handler, own fixtures
Uploads Replay + blob assertions / Go tests only Replay + blob assertions

Invitations & mail

Question Options Selected
Mail sending River job in transaction / Inline after commit River job
Accept notification Port write now / Seam until 13 Port write now
No-account invitations Existing-account path only / Full path now Existing-account path only

Search & security test

Question Options Selected
Re-gate shape Mirror Scout exactly / Candidates then SQL paginate Mirror Scout exactly
SQL LIKE on Postgres ILIKE escaped / Research decides ILIKE escaped
Leak test cases (multi) Stale doc; Mis-scoped doc; Deleted/revoked; Token frozen All four
Typesense in tests Fake engine driver / Real container Fake engine driver

Claude's Discretion

Handler layout, DTO structs and fuzz enumeration, job kind names, fake engine shape, record-vs-Go-test for impractical error cases, plan count and split.

Deferred Ideas

Reservations and public routes → Phase 13; Discogs/AI routes → Phase 14; register-via-invitation → Phase 13; notifications API → Phase 13.