Files
summercms/.planning/notes/wavepath-framework-asks-division.md
Jakub Zych 4fb9f142df docs(roadmap): reorder — demo at 20, Płytarium cutover 20→30, chat polish 19.2→31
New Phase 20 is a public demo instance on sm-demo-app with every shared
plugin. Phases 21-29 stay off the roadmap until their goals firm up.
The cutover (closing v1.0) moves to 30; WavePath work starts at 31 with
the former 19.2, Horoskopia follows at 36-40. Seeds, notes and the
30-CONTEXT now point at the new numbers.
2026-10-18 23:16:08 +02:00

3.5 KiB

title, date, context
title date context
How the WavePath framework asks divide between SummerCMS and WavePath 2026-10-11 /msd-explore on the WavePath hand-off list `/media/nvme/dev/jz/wavepath.org/.planning/notes/summercms-framework-asks-for-wavepath.md`. Seed `SEED-261007-0tb`.

How the WavePath framework asks divide between SummerCMS and WavePath

WavePath's agent wrote a list of what it needs from SummerCMS (section A) and what it will do itself (section B). Section B stays on the WavePath side as its migration milestone. Section A lands here as the 19.x phases, all before the Płytarium cutover (Phase 20).

Decisions

Updated 2026-10-18 (.planning/notes/2026-10-18-roadmap-reorder-demo-release-wavepath.md): the Płytarium cutover is now Phase 30, after a demo instance at Phase 20. Chat parity against WavePath's clients moved from 19.2 to Phase 31 and opens the WavePath phases (31 to 35). The other 19.x phases still land before the cutover. Phase numbers below are as of 2026-10-11.

  • The 19.x block comes before the cutover. Chat first, then chat polish, then the other framework and user-plugin asks. Phase 20 waits for 19 to 19.6. The WavePath migration milestone opens after Phase 20.
  • Chat is ported from the WavePath copy, with root_id threading and thread_summaries. This settles the open chat-source question for Phase 19.
  • The seed's trigger is now "Phase 20 complete". The WavePath milestone no longer waits for the Horoskopia port.

Where each ask lands

Ask Where
A9: chat and chatchannels Phase 19
A9: chatbots, chatvideo (LiveKit, reconcile job), forum, herald (web push), userfriends Phase 19.1
Chat parity against WavePath's clients Phase 19.2, now Phase 31
A3 cookie refresh and CORS, A6 cache and Redis surf.Store, A8 S3 option, /api-docs, Turnstile Phase 19.3 (summercms.go)
A1 OIDC provider Phase 19.4 (wristband)
A2 social login Phase 19.5 (sm-user-plugin)
A4 2FA, A5 device flow Phase 19.6 (sm-user-plugin)
A7 summer import:winter Phase 20, now Phase 30 (D-02 runner), with the WavePath stress cases below

Corrections to the hand-off list

  • The user plugin is already shared. sm-user-plugin (git.golem15.com/golem15/sm-user-plugin) is its own repo, checked out by both fonoteka.go and sm-bm-app. Phases 19.5 and 19.6 add to it directly. Both consuming apps must still build after each change.
  • Plugin-registrable token scopes (A8) are dropped for now. sm-user-plugin already mints scoped tokens (MintAPIToken, HasScope). Its allowed list (read, write, ai) is a static package variable. WavePath's wave.scope.public:* scopes belong to its own wave_token guard and golem15_wavepath_api_tokens table, which section B ports on the WavePath side. Add a RegisterAPITokenScope hook only if WavePath confirms that its user-plugin tokens carry custom scopes.

import:winter stress cases from WavePath (for Phase 30, formerly 20)

  • The source is MariaDB. That is the same MySQL wire protocol, but check type coercion.
  • About 90 tables, including large chat and channel message tables. Batching must handle them.
  • APP_KEY-encrypted columns go through the Laravel-decrypt hook.
  • Zero-knowledge encryption-key blobs are copied byte for byte and never decoded.
  • system_files across 16 attaching models, and 9 system_settings rows.

Scope reminder

The WavePath backend is about 350 routes, about 90 tables and 164 migrations across wavepath and its shared plugins. The PHP routes are not frozen, so re-count when the milestone opens.