docs(roadmap): insert phase 14.1 for oauth identities and fonoteka me routes

This commit is contained in:
Jakub Zych
2026-10-03 19:35:52 +02:00
parent ed4d4c380c
commit 06d6fdc758
3 changed files with 26 additions and 5 deletions

View File

@@ -769,11 +769,30 @@ Plans:
**Wave 6** *(blocked on Wave 5 completion)*
- [ ] 14-06-PLAN.md — Unit tests last: PHP Discogs truth tables, full coverage, threat and edge tests, route table and fuzz, scripts/check-phase14.sh, security review, validation and requirement evidence
### Phase 14.1: OAuth identities and fonoteka me routes (INSERTED)
**Goal:** The three manifest routes no phase owned (14-CONTEXT D-09) are ported and pass the parity diff, so that no route is left `pending` before cutover. They are `GET /_fonoteka/api/v1/oauth-identities`, `DELETE /_fonoteka/api/v1/oauth-identities/{provider}` (social-login identities, deferred since Phase 7) and `GET /api/v1/fonoteka/me` (the full contract, not only the minimal Phase 8 D-20 version).
**Mode:** mvp
**Requirements**: TBD
**Depends on:** Phase 14
**Repos:** fonoteka.go (plus sm-user-plugin if the identities live in the user plugin)
**Success Criteria** (what must be TRUE):
1. `GET oauth-identities` lists the signed-in user's linked social identities exactly as PHP returns them.
2. `DELETE oauth-identities/{provider}` unlinks one identity with PHP's status codes and error shapes.
3. `GET /api/v1/fonoteka/me` matches the PHP response for fonoteka-mcp token callers.
4. All three manifest entries flip from `pending` to ported with recorded PHP cases, leaving zero pending routes.
**Plans:** 0 plans
Plans:
- [ ] TBD (run /gsd-plan-phase 14.1 to break down)
### Phase 15: Cutover
**Goal**: The parity harness is green on all 154 routes and `vue-fonoteka-app` and `fonoteka-mcp` run unchanged against the Go backend in daily use — the project's definition of done.
**Mode:** mvp
**Depends on**: Phase 2, Phase 8, Phase 9, Phase 10, Phase 12, Phase 13, Phase 14
**Depends on**: Phase 2, Phase 8, Phase 9, Phase 10, Phase 12, Phase 13, Phase 14, Phase 14.1
**Repos:** fonoteka.go, summercms.go
**Requirements**: API-09, QA-05
**Success Criteria** (what must be TRUE):
@@ -809,6 +828,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 →
| 12. Płytarium API — Collections and Albums | 5/5 | Complete | 2026-10-02 |
| 13. Płytarium API — wishlist, notifications, CSV, credentials, public routes | 6/6 | In Progress| |
| 14. Domain jobs and external integrations | 0/6 | Planned | - |
| 14.1. OAuth identities and fonoteka me routes (INSERTED) | 0/TBD | Not started | - |
| 15. Cutover | 0/TBD | Not started | - |
## Backlog

View File

@@ -5,12 +5,12 @@ current_phase: 14
current_phase_name: domain-jobs-and-external-integrations
status: executing
stopped_at: Phase 14 context gathered
last_updated: "2026-10-03T16:56:39.498Z"
last_updated: "2026-10-03T17:16:09.658Z"
last_activity: 2026-10-03
last_activity_desc: Phase 13 execution started
state_head: de5b01266b4919206905dd8174e7e50d4546726a
state_head: ed4d4c380cf50b6d683fd221a29166e550deae25
progress:
total_phases: 21
total_phases: 22
completed_phases: 11
total_plans: 118
completed_plans: 112
@@ -181,6 +181,7 @@ Progress: [██████░░░░] 60%
- Phase 11.3 deferred to the backlog as Phase 999.1 (2026-10-02): the Journal plugin and delivering Płytarium take priority
- Phase 12.1 inserted after Phase 12: User plugin admin screens (sm-user-plugin): Users, User Groups, Organisations admin, before Phase 15 cutover
- Phase 12.2 inserted after Phase 12: Admin form fields: date picker, file upload and relation-manager create/update/delete with Winter-like deferred binding (RelationController parity); framework only, ships as tag v0.1.1; blocks a downstream project on v0.1 (URGENT)
- Phase 14.1 inserted after Phase 14: OAuth identities (GET/DELETE oauth-identities) and GET /api/v1/fonoteka/me: the 3 orphan pending routes (14-CONTEXT D-09), so Phase 15 can reach all routes green (URGENT)
### Decisions

View File

@@ -94,5 +94,5 @@
"label": "Advance to the next step",
"reason": "Phase 14 of 21 · executing"
},
"updated_at": "2026-10-03T16:56:39.517Z"
"updated_at": "2026-10-03T17:16:08.905Z"
}