3.7 KiB
Phase 15: Journal plugin - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
Date: 2026-10-06 Phase: 15-journal-plugin Areas discussed: PHP source of truth, what ships this phase, public HTTP, where it boots
PHP source of truth
| Option | Description | Selected |
|---|---|---|
Fonoteka's pin 02110eb |
Newest master; API, tags, search, security fixes | ✓ |
grzybyfunkcjonalne.pl pin 2ad25e0 |
What the first blog runs today; no API/tags | |
| GitHub master at plan time | Moving target |
User's choice: Fonoteka's pin, then freeze at 02110eb, read from the Fonoteka path on disk.
Notes: All three checkouts are github.com/golem15com/wn-journal-plugin. Binding surface is the full tree (models, YAML, permissions, commands, API shapes). PHPUnit tests are a behavioral spec. Locales en+pl. PHP is read-only this phase, but an urgent pre-migration PHP upgrade is allowed and forces a re-pin. Embed the admin SVG.
What ships this phase
| Option | Description | Selected |
|---|---|---|
| Single-locale now | No translate plugin | |
| Minimal translate seam in this phase | Extra scope | |
Insert sm-translate-plugin before Journal |
New phase, not extra Journal scope | ✓ |
User's choice: Insert translate as its own phase before 15. Journal then depends on it so fields stay translatable. Notes: Cabana markdown field this phase (not textarea). Typesense setting off by default, wired to Phase 11 when enabled. Import/export CLI+admin in; Pages menu items and report widget deferred.
Public HTTP
| Option | Description | Selected |
|---|---|---|
Full /_journal/api/v1 |
Public reads + writes | ✓ |
| Public reads only | Writes later | |
| No public HTTP | Admin+models only |
User's choice: Full API. Writes use Phase 9 backend Bearer.
Notes: User first thought sm-user-plugin tokens were Apparatus admin tokens. Clarified: frontend user.api_token exists; backend PersonalApiToken / g15_ is still a todo. User then confirmed backend Bearer. Proof is API.md + mapped PHPUnit tests, not tide. Same 120/min buckets and _journal/api/* CORS.
Where it boots
| Option | Description | Selected |
|---|---|---|
| In-module testhost | No new app | (superseded) |
sm-journal-dev-app |
Disposable host | |
| Mount in an existing app | fonoteka / summercms.io | |
sm-grzybyfunkcjonalne-app |
Empty repo, proof host | ✓ |
User's choice: "we'll start fast" — git@git.golem15.com:golem15/sm-grzybyfunkcjonalne-app.git is the proof that Journal is migrated.
Notes: Phase 15 proves mount, migrate, admin, API. Site HTML/views stay Phase 16. Local app at summercms/sm-grzybyfunkcjonalne-app/. Mounts journal + translate + user. Journal remote already created and public. Checkout-location question was skipped; sibling of summercms.go used as default. Testhost-deps question was skipped, then superseded by the grzyby app decision.
Claude's Discretion
- Markdown field identifiers and docs/OpenAPI/
dist/bundling - Plan count and split (unit tests last; plan-count checkpoint)
- Exact
sm-grzybyfunkcjonalne-appwiring files - How Winter components are pointed at Phase 16
- Security-review agent (plugin API + public HTTP + permissions)
- Local
sm-journal-plugincheckout path (skipped question → sibling ofsummercms.go)
Deferred Ideas
- Insert
sm-translate-pluginbefore Phase 15 - Phase 16 site/views
- Pages menu item types, report widget, sitemap plugin,
g15_admin tokens, extra locales, WYSIWYG/redactor