docs(roadmap): add phases 17, 18, 19 and 19.1 for core plugin ports

This commit is contained in:
Jakub Zych
2026-10-07 20:10:27 +02:00
parent 19fffd34d1
commit b3ca53cbc1

View File

@@ -30,6 +30,10 @@ Decimal phases appear between their surrounding integers in numeric order.
- [ ] **Phase 14.2: Local Fonoteka frontend on local SummerCMS backend** - vue-fonoteka-app locally against fonoteka.go
- [ ] **Phase 15: Journal plugin** - Port Golem15.Journal to sm-journal-plugin
- [ ] **Phase 16: grzybyfunkcjonalne.pl on reusable blog views** - First blog on SummerCMS
- [ ] **Phase 17: Blog companions** - Port sitemap, menu and FAQ as shared plugins, with a framework menu-item type registry
- [ ] **Phase 18: Payment Gateway** - Port Golem15.PaymentGateway and its Stripe operator, with Horoskopia as the acceptance consumer
- [ ] **Phase 19: Chat and ChatChannels** - Port Golem15.Chat and Golem15.ChatChannels on lighthouse
- [ ] **Phase 19.1: Chat satellites** - Port chatbots, chatvideo, forum, herald and userfriends
- [ ] **Phase 20: Płytarium cutover** - Parity harness green, both real clients run unchanged in production
## Phase Details
@@ -918,6 +922,89 @@ Plans:
Plans:
- [ ] TBD (run $gsd-plan-phase 16 to break down)
### Phase 17: Blog companions
**Goal:** The sitemap, menu and FAQ plugins run on SummerCMS as shared `sm-*-plugin` repos, so a blog site can manage its menus, FAQs and sitemap in the admin again instead of hardcoding them in the Nuxt app.
**Mode:** mvp
**Depends on:** Phase 15, Phase 16
**Repos:** `sm-sitemap-plugin`, `sm-menu-plugin`, `sm-faq-plugin` (new, under `git.golem15.com/golem15/`, see `.planning/notes/core-plugins-own-repos.md`); `summercms.go` for the menu-item type registry; `sm-journal-plugin` for an additive registration of its item types; `sm-grzybyfunkcjonalne-app` to move its FAQ and menu into the plugins
**Port sources:** `Golem15.Sitemap` at `/media/nvme/dev/golem15/fonoteka/plugins/golem15/sitemap`; `Golem15.Menu` and `Golem15.Faq` at `/media/nvme/dev/golem15/grzybyfunkcjonalne.pl/plugins/golem15/{menu,faq}`. Todos: `sitemap-plugin-port.md`, `menu-plugin-port.md`, `faq-plugin-port.md`. Inventory: `.planning/notes/core-plugin-port-inventory.md`.
**Requirements**: TBD
**Success Criteria** (what must be TRUE):
1. The three plugins port their PHP schema, models, admin screens and import commands 1:1, each in its own repo with a README.
2. The framework has a typed successor of the `pages.menuitem.listTypes`, `getTypeInfo` and `resolveItem` events. Journal registers its item types through it, and both menu and sitemap consume it.
3. `sitemap.xml` and `sitemap.xsl` match the PHP output, including the `frontend_url` domain rewrite and hreflang. Menu and FAQ expose public read APIs that a Nuxt layer can consume.
4. grzybyfunkcjonalne.pl reads its menu and FAQ from the plugins instead of app config.
5. The new code has unit tests, delivered in the phase's last plan.
**Plans:** 0 plans
Plans:
- [ ] TBD (run $gsd-plan-phase 17 to break down)
### Phase 18: Payment Gateway
**Goal:** `Golem15.PaymentGateway` and its Stripe operator run on SummerCMS as shared plugins whose contracts let Horoskopia's horoscope plugin create orders, take payments and react to payment events, as it does on PHP.
**Mode:** mvp
**Depends on:** Phase 15
**Repos:** `sm-paymentgateway-plugin` and `sm-pgstripe-plugin` (new, under `git.golem15.com/golem15/`); `summercms.go` only if a framework feature is missing
**Port sources:** `Golem15.PaymentGateway` v2.6.0 and `Golem15.PGStripe`, at `/media/nvme/dev/golem15/horoskopia.eu/plugins/golem15/{paymentgateway,pgstripe}` (starter submodule `wn-paymentgateway-plugin`, branch `upgrade`). Acceptance consumer: Horoskopia's `horoscope` plugin, which uses `Order`, `OrderFactory`, `Cart`/`Item`/`Details`, `Settings` and `Payment`.
**Splits:** Stripe subscriptions (`Golem15.PaymentGatewaySubscriptions`, 5.5k LOC, used by Horoskopia and four other projects) and any further Stripe add-ons go into decimal phases 18.1, 18.2 and so on if the Phase 18 discussion decides they do not fit.
**Requirements**: TBD
**Success Criteria** (what must be TRUE):
1. Payment (Created, Sent, Accepted, Rejected, Canceled, Refunded) and Order (12 states, all refund paths) state machines port with the PHP transitions, and use exact decimal money.
2. Payment operators register at build time through a Go interface that succeeds `core/Operator` and the `paymentgateway.booted` config push. Cash, manual transfer and Stripe operators are implemented. The `_paymentgateway/{operator}/{mode?}/{result?}` notification route keeps its PHP behavior.
3. The Order and Payment events, their mail templates, the admin screens (orders, payments, settings) and the scheduled cancel/finish/update commands are ported. Plugin contracts (tables, event names, config keys) stay non-breaking.
4. A host test proves the order-create, Stripe-pay and order-paid flow that Horoskopia relies on.
5. The new code has unit tests, delivered in the phase's last plan.
**Plans:** 0 plans
Plans:
- [ ] TBD (run $gsd-plan-phase 18 to break down)
### Phase 19: Chat and ChatChannels
**Goal:** `Golem15.Chat` and `Golem15.ChatChannels` run on SummerCMS as shared plugins, with realtime delivery through `lighthouse`, ready for the Wavepath port.
**Mode:** mvp
**Depends on:** Phase 11
**Repos:** `sm-chat-plugin` and `sm-chatchannels-plugin` (new, under `git.golem15.com/golem15/`); `summercms.go` only if `lighthouse` is missing a feature
**Port sources:** `/media/nvme/dev/jz/wavepath.org/plugins/golem15/{chat,chatchannels}`. Wavepath is the heaviest user. Check its copy (with `root_id` threading) against the starter's before choosing the source.
**Requirements**: TBD
**Success Criteria** (what must be TRUE):
1. The chat schema, models, adapters (context-agnostic groups), jobs, commands and routes port 1:1. ChatChannels plugs into chat through the same adapter contract.
2. Realtime broadcasts and channel authorization go through `lighthouse` (publisher, `Authorizer` per namespace). No WebSockets plugin is ported.
3. Public API payloads match PHP for the routes Wavepath's clients call.
4. The new code has unit tests, delivered in the phase's last plan.
**Plans:** 0 plans
Plans:
- [ ] TBD (run $gsd-plan-phase 19 to break down)
### Phase 19.1: Chat satellites
**Goal:** The remaining shared plugins that Wavepath's app plugin requires run on SummerCMS: chatbots, chatvideo, forum, herald and userfriends.
**Mode:** mvp
**Depends on:** Phase 19
**Repos:** one `sm-*-plugin` repo each, under `git.golem15.com/golem15/`
**Port sources:** `/media/nvme/dev/jz/wavepath.org/plugins/golem15/{chatbots,chatvideo,forum,herald,userfriends}`
**Requirements**: TBD
**Success Criteria** (what must be TRUE):
1. Each plugin ports its schema, models, routes and events 1:1 against its PHP original.
2. Herald (Web Push) has a decision note naming its VAPID/Web Push dependency before code lands. Chatbots is wired to `sm-golem-plugin` where the PHP original calls Golem.
3. Userfriends is checked against fonoteka first, so there is one shared copy.
4. The new code has unit tests, delivered in the phase's last plan.
**Plans:** 0 plans
Plans:
- [ ] TBD (run $gsd-plan-phase 19.1 to break down)
### Phase 20: Płytarium cutover
**Goal**: The parity harness is green on every manifest route and `vue-fonoteka-app` and `fonoteka-mcp` run unchanged against the Go backend in daily use in production — the Płytarium definition of done.
@@ -937,7 +1024,7 @@ Plans:
## Progress
**Execution Order:**
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 14.1 → 14.2 → 15 → 16 → 20
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 → 14.1 → 14.2 → 15 → 16 → 17 → 18 → 19 → 19.1 → 20
(Phase 2 depends on Phase 1's command kernel; the two are no longer parallel.)
| Phase | Plans Complete | Status | Completed |
@@ -962,6 +1049,10 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 →
| 14.2. Local Fonoteka frontend on local SummerCMS backend (INSERTED) | 0/TBD | Not started | - |
| 15. Journal plugin | 4/4 | Complete | 2026-10-06 |
| 16. grzybyfunkcjonalne.pl on reusable blog views | 0/TBD | Not started | - |
| 17. Blog companions | 0/TBD | Not started | - |
| 18. Payment Gateway | 0/TBD | Not started | - |
| 19. Chat and ChatChannels | 0/TBD | Not started | - |
| 19.1. Chat satellites | 0/TBD | Not started | - |
| 20. Płytarium cutover | 0/TBD | Not started | - |
## Backlog