From 6aaaf59f4381607e0c93d62d264aa7554a608e91 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Sun, 18 Oct 2026 19:26:07 +0200 Subject: [PATCH] docs(phase-19.1): complete phase transition --- .planning/PROJECT.md | 7 ++++++- .planning/ROADMAP.md | 6 +++--- .planning/STATE.md | 32 +++++++++++++++++--------------- .planning/state.json | 8 ++++---- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md index 68849129..f7560130 100644 --- a/.planning/PROJECT.md +++ b/.planning/PROJECT.md @@ -55,6 +55,10 @@ Validated in Phase 8: OAuth2.1 authorization server - [x] Direct standard-library OAuth 2.1-style authorization server (`wristband`): RFC 8414 metadata, RFC 7591 dynamic registration, authorize with S256 PKCE and JWT-guarded consent, authorization_code and rotating refresh_token grants with replay lineage-kill, RFC 8707 resource handling, connected-app list/revoke, `fonoteka:oauth-client` operator command, and the `/me` bootstrap the unchanged fonoteka-mcp process uses - [x] Byte parity with recorded PHP across all nine OAuth routes and a 17-step MCP lifecycle; the real unmodified fonoteka-mcp completes discovery, DCR, PKCE, consent, token, tool call, refresh, replay rejection and revoke against the Go binary; `scripts/check-phase8.sh` is the sign-off gate (its Playwright UI matrix stage is a named carried-forward follow-up) +Validated in Phase 19.1: Chat satellites + +- [x] Shared plugins sm-chatbots-plugin, sm-chatvideo-plugin (LiveKit), sm-forum-plugin (breakwater-sanitized markdown), sm-herald-plugin (web push, SSRF-guarded) and sm-userfriends-plugin run on SummerCMS behind JWT APIs, with GDPR cascades on `user.Deleting`; `scripts/check-phase19.1.sh` is the fail-closed gate (UAT and security 2026-10-18) + ### Active Framework kernel @@ -172,6 +176,7 @@ Validated in Phase 18.1: Payment Gateway Subscriptions | Framework serves public uploads itself (`storage.uploads.serve`, opt-in) with nosniff, a sandboxing CSP and attachment disposition for non-images | Local runs need WinterCMS upload URLs without nginx; the hardening keeps uploaded HTML or SVG from running on the app origin (review WR-03) | ✓ Good (Phase 14.2) | | The opt-in request log (`http.access_log`) records method, matched pattern, status and duration, never the URL path | Share and invitation tokens travel in paths (review WR-01); an unported route shows as a 404 with an empty pattern | ✓ Good (Phase 14.2) | | Subscription state comes from Stripe, not the event snapshot (Phase 18.1, D-21 amended) | Out-of-order webhooks regressed rows; the job re-retrieves the subscription under a per-subscription advisory lock, and a portal `cancel_at` counts as cancel at period end | ✓ Good (Phase 18.1 UAT, 2026-10-16) | +| A soft (optional) plugin dependency still requires the provider module in `go.mod`; only `Requires()` omits it | A typed `Lookup` needs the package that declares the interface; optional means "skipped at Boot when absent", not "not compiled in" (`docs/plugins/extending.md`) | ✓ Good (Phase 19.1 UAT override, 2026-10-18) | ## Evolution @@ -191,4 +196,4 @@ This document evolves at phase transitions and milestone boundaries. 4. Update Context with current state --- -*Last updated: 2026-10-16 after Phase 18.1 completion* +*Last updated: 2026-10-18 after Phase 19.1 completion* diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index c1758ccc..7f66f82c 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -33,7 +33,7 @@ Decimal phases appear between their surrounding integers in numeric order. - [x] **Phase 17: Blog companions** - Port sitemap, menu and FAQ as shared plugins, with a framework menu-item type registry (completed 2026-10-13) - [x] **Phase 18: Payment Gateway** - Port Golem15.PaymentGateway and its Stripe operator, with Horoskopia as the acceptance consumer (completed 2026-10-14) - [x] **Phase 19: Chat and ChatChannels** - Port Golem15.Chat and Golem15.ChatChannels on lighthouse (completed 2026-10-17) -- [ ] **Phase 19.1: Chat satellites** - Port chatbots, chatvideo, forum, herald and userfriends +- [x] **Phase 19.1: Chat satellites** - Port chatbots, chatvideo, forum, herald and userfriends (completed 2026-10-18) - [ ] **Phase 19.2: Chat polish against WavePath clients** - Replay WavePath's chat traffic through `tide` against the ported chat plugins until green - [ ] **Phase 19.3: Framework transport and infrastructure for WavePath** - Cookie refresh, credentialed CORS, cache and Redis rate limits, S3 option, OpenAPI page, Turnstile - [ ] **Phase 19.4: OIDC provider on wristband** - Discovery, JWKS with key rotation, id_token, userinfo, consent and pairwise subjects @@ -1235,7 +1235,7 @@ Plans: 3. Already met: fonoteka's PHP userfriends tree equals Wavepath 182b514; fonoteka.go has no port and Wavepath's copy is the single source. 4. The new code has unit tests, delivered in the phase's last plan. -**Plans:** 6/6 plans executed +**Plans:** 6/6 plans complete Plans: **Wave 1** @@ -1434,7 +1434,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → | 18. Payment Gateway | 8/8 | Complete | 2026-10-14 | | 18.1. Payment Gateway Subscriptions | 9/9 | Complete | 2026-10-16 | | 19. Chat and ChatChannels | 7/7 | Complete | 2026-10-17 | -| 19.1. Chat satellites | 6/6 | In Progress| | +| 19.1. Chat satellites | 6/6 | Complete | 2026-10-18 | | 19.2. Chat polish against WavePath clients | 0/TBD | Not started | - | | 19.3. Framework transport and infrastructure for WavePath | 6/6 | In Progress| | | 19.4. OIDC provider on wristband | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 22b8e54f..37cc9d43 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,19 +1,20 @@ --- msd_state_version: "1.0" milestone: v1.0 -current_phase: "19.1" -current_phase_name: Chat satellites -status: executing -stopped_at: Completed 19.1-06-PLAN.md -last_updated: "2026-10-18T16:05:35.637Z" +current_phase: "19.2" +current_phase_name: Chat polish against WavePath clients +status: planning +stopped_at: Phase 19.1 complete, ready to plan Phase 19.2 +last_updated: "2026-10-18T17:25:43.450Z" last_activity: 2026-10-18 -last_activity_desc: "Completed quick task 261018-k9s: add the D-17 module in summercms.go (modules/breakwater); 19.1-02 forum plan unblocked" -state_head: 8553cd2afe2fd4f0fa4c41994eef7b4d7dc3edb9 +last_activity_desc: Phase 19.1 complete, transitioned to Phase 19.2 +state_head: f1ff2f940bc60281ec0f58cb07978516df7c1a8f progress: total_phases: 41 - completed_phases: 33 + completed_phases: 34 total_plans: 204 completed_plans: 204 + percent: 83 gsd_state_version: "1.0" milestone_name: milestone --- @@ -29,18 +30,18 @@ See: .planning/PROJECT.md (updated 2026-10-12) ## Current Position -Phase: 19.1 (Chat satellites) — EXECUTING -Plan: 6 of 6 -Status: Ready to execute -Last activity: 2026-10-18 — Completed quick task 261018-k9s: add the D-17 module in summercms.go (modules/breakwater); 19.1-02 forum plan unblocked +Phase: 19.2 — Chat polish against WavePath clients +Plan: Not started +Status: Ready to plan +Last activity: 2026-10-18 — Phase 19.1 complete, transitioned to Phase 19.2 -Progress: [████████░░] 80% +Progress: [████████░░] 83% ## Performance Metrics **Velocity:** -- Total plans completed: 95 +- Total plans completed: 101 - Average duration: 21 min - Total execution time: 104 min @@ -64,6 +65,7 @@ Progress: [████████░░] 80% | 14.2 | 4 | - | - | | 18.1 | 9 | - | - | | 19 | 7 | - | - | +| 19.1 | 6 | - | - | **Recent Trend:** @@ -957,5 +959,5 @@ Items acknowledged and carried forward from previous milestone close: ## Session Continuity Last session: 2026-10-18T14:01:53.356Z -Stopped at: Completed 19.1-06-PLAN.md +Stopped at: Phase 19.1 complete, ready to plan Phase 19.2 Resume file: None diff --git a/.planning/state.json b/.planning/state.json index 476d9a97..f07fbced 100644 --- a/.planning/state.json +++ b/.planning/state.json @@ -171,7 +171,7 @@ { "number": "19.1", "name": "Chat satellites", - "status": "in_progress" + "status": "complete" }, { "number": "19.2", @@ -211,8 +211,8 @@ ], "next": { "command": "/msd:progress --next", - "label": "Advance to the next step", - "reason": "Phase 19.1 of 41 · executing" + "label": "Advance to the next step (plan phase 19.2)", + "reason": "Phase 19.2 of 41 — needs a plan" }, - "updated_at": "2026-10-18T13:41:48.501Z" + "updated_at": "2026-10-18T17:25:43.481Z" }