docs(11-07): record plan 11-07 progress, decisions and requirements

This commit is contained in:
Jakub Zych
2026-09-30 14:57:33 +02:00
parent 45fb00af1a
commit 4cc6fd7a42
3 changed files with 30 additions and 25 deletions

View File

@@ -24,9 +24,9 @@ Requirements for v1 (the Płytarium port). Each maps to roadmap phases. "User" b
- [x] **CLI-01**: The `summer` binary (cobra) discovers commands registered by plugins and offers rich output (spinner, progress bar, table, prompts) with non-TTY degradation, following the summer-bonfire design
- [x] **CLI-02**: Scaffolding commands generate a plugin, model, migration, command, job and admin controller with stubs that compile
- [x] **CLI-03**: Migration commands run up, status, and roll back the last migration of a named plugin
- [ ] **CLI-04**: Plugins register recurring commands (daily or interval) that a scheduler runs in-process or via `summer schedule:run`
- [x] **CLI-04**: Plugins register recurring commands (daily or interval) that a scheduler runs in-process or via `summer schedule:run`
- [ ] **CLI-05**: Płytarium commands are ported: oauth-client (create, list without reprinting secrets, add redirect URIs, set scope ceiling), prune-notifications, reindex with drop-old-index flag
- [ ] **CLI-06**: Queue worker runs in-process or via `summer queue:work`
- [x] **CLI-06**: Queue worker runs in-process or via `summer queue:work`
### Internationalization and mail (I18N)
@@ -85,19 +85,19 @@ Requirements for v1 (the Płytarium port). Each maps to roadmap phases. "User" b
### Background jobs (JOBS)
- [ ] **JOBS-01**: River runs on the shared *sql.DB with riverdatabasesql for transactional enqueue and riverpgxv5 for LISTEN/NOTIFY; job outcomes (complete, fail, skip) are recorded and queryable through a job manager service
- [x] **JOBS-01**: River runs on the shared *sql.DB with riverdatabasesql for transactional enqueue and riverpgxv5 for LISTEN/NOTIFY; job outcomes (complete, fail, skip) are recorded and queryable through a job manager service
- [ ] **JOBS-02**: CSV import write job and Discogs match job (240 s timeout) are ported; the match job re-enqueues itself with a delay on a Discogs rate-limit error instead of failing the batch
- [ ] **JOBS-03**: Wishlist digest coalesces notifications in a 30-minute window and deletes its queue row on completion
### Realtime (RT)
- [ ] **RT-01**: The websockets plugin publishes to the existing Centrifugo server (gocent) and issues connection and subscription JWTs with the same secret and claims, served at GET /api/realtime/token. *Note (D-12, D-16): the Centrifugo client is a hand-rolled `net/http` client in the framework package `lighthouse/centrifugo` rather than the originally named gocent library, and the publisher lives in that framework package rather than an app websockets plugin.*
- [ ] **RT-02**: A channel-namespace authorizer registry lets plugins register authorizers (collection, wishlist); the server re-validates on every subscribe and channel names never expose raw ids
- [ ] **RT-03**: A broadcastable model interface emits live patches with bulk-write suppression, separate from durable notifications
- [x] **RT-01**: The websockets plugin publishes to the existing Centrifugo server (gocent) and issues connection and subscription JWTs with the same secret and claims, served at GET /api/realtime/token. *Note (D-12, D-16): the Centrifugo client is a hand-rolled `net/http` client in the framework package `lighthouse/centrifugo` rather than the originally named gocent library, and the publisher lives in that framework package rather than an app websockets plugin.*
- [x] **RT-02**: A channel-namespace authorizer registry lets plugins register authorizers (collection, wishlist); the server re-validates on every subscribe and channel names never expose raw ids
- [x] **RT-03**: A broadcastable model interface emits live patches with bulk-write suppression, separate from durable notifications
### Search (SRCH)
- [ ] **SRCH-01**: Album documents sync to Typesense scoped by collection_id, behind a settings kill-switch, degrading gracefully when the DB or config is absent
- [x] **SRCH-01**: Album documents sync to Typesense scoped by collection_id, behind a settings kill-switch, degrading gracefully when the DB or config is absent
- [ ] **SRCH-02**: The reindex command asserts zero documents with collection_id 0 before and after, and can drop the legacy index
### Integrations (INTG)
@@ -167,9 +167,9 @@ Which phases cover which requirements. Updated during roadmap creation.
| CLI-01 | Phase 1 | Complete |
| CLI-02 | Phase 4 | Complete |
| CLI-03 | Phase 5 | Complete |
| CLI-04 | Phase 11 | Pending |
| CLI-04 | Phase 11 | Complete |
| CLI-05 | Phase 14 | Pending |
| CLI-06 | Phase 11 | Pending |
| CLI-06 | Phase 11 | Complete |
| I18N-01 | Phase 4 | Complete |
| I18N-02 | Phase 7 | Complete |
| I18N-03 | Phase 4 | Complete |
@@ -210,13 +210,13 @@ Which phases cover which requirements. Updated during roadmap creation.
| API-07 | Phase 13 | Pending |
| API-08 | Phase 14 | Pending |
| API-09 | Phase 15 | Pending |
| JOBS-01 | Phase 11 | Pending |
| JOBS-01 | Phase 11 | Complete |
| JOBS-02 | Phase 14 | Pending |
| JOBS-03 | Phase 14 | Pending |
| RT-01 | Phase 11 | Pending |
| RT-02 | Phase 11 | Pending |
| RT-03 | Phase 11 | Pending |
| SRCH-01 | Phase 11 | Pending |
| RT-01 | Phase 11 | Complete |
| RT-02 | Phase 11 | Complete |
| RT-03 | Phase 11 | Complete |
| SRCH-01 | Phase 11 | Complete |
| SRCH-02 | Phase 14 | Pending |
| INTG-01 | Phase 14 | Pending |
| INTG-02 | Phase 14 | Pending |