diff --git a/.planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md b/.planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md new file mode 100644 index 0000000..0a48ca8 --- /dev/null +++ b/.planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md @@ -0,0 +1,284 @@ +--- +phase: 16.2-plugin-provided-field-types-and-the-blog-editor-formwidget +plan: 05 +subsystem: release +tags: [release, uat, deploy, summercms-tag, journal, blog-editor, embeds, csp, grzybyfunkcjonalne] + +requires: + - phase: 16.2-01 + provides: pact.HasFormFieldTypes, meta.notices, the field upload route and admin SPA plugin fields (released as summercms v0.1.18) + - phase: 16.2-02 + provides: the Blog Editor formwidget and its editor corpus in sm-journal-plugin + - phase: 16.2-03 + provides: Journal post and category content on the Blog Editor, the editor-output policy extension and the strip-and-report save + - phase: 16.2-04 + provides: vue-journal-layer v0.2.0 (embed expansion) pinned by vue-grzybyfunkcjonalne-app main 465286a +provides: + - "summercms annotated tag v0.1.18 (tag object 04dc5bd, commit f1d8a75) on origin" + - "sm-journal-plugin main 9d5bfc4 on origin, go.mod requiring summercms v0.1.18" + - "sm-grzybyfunkcjonalne-app master 6f4f222 on origin: journal gitlink 9d5bfc4, vue-grzybyfunkcjonalne-app gitlink 465286a, README Blog Editor note, report-only CSP frame-src https://www.youtube-nocookie.com" + - "UAT (uat.grzybyfunkcjonalne.pl) running the Blog Editor release, with rollback copies of the previous binary and Nuxt output" +affects: [16.2-06, sm-journal-plugin, sm-grzybyfunkcjonalne-app, uat] + +actuals: + tokens: 9000 + tasks: 3 + commits: 0 +plan_head_before: f1d8a757fd5c1174f7f1959779602e2ad11b0de2 +plan_head_after: f1d8a757fd5c1174f7f1959779602e2ad11b0de2 +commits_note: "summercms.go got the tag only (no commit). Code commits live in the sibling repositories below." +plugin_commits_repo: ../sm-journal-plugin +plugin_head_before: c60abc6 +plugin_head_after: 9d5bfc4a3597be8ba4abee26d80dc2b81d343da8 +plugin_commits: 1 +host_commits_repo: ../sm-grzybyfunkcjonalne-app +host_head_before: 0b93ac2 +host_head_after: 6f4f22296b6295e2750e3d376bd0300c8031ba51 +host_commits: 1 + +tech-stack: + added: [] + patterns: + - "Restart-anchored log check: the Go log is filtered from the River client_id line the restart logged, read straight from /var/log/supervisor, instead of `supervisorctl tail` (which fails on UAT)" + +key-files: + created: [] + modified: + - ../sm-journal-plugin/go.mod + - ../sm-grzybyfunkcjonalne-app/plugins/golem15/journal + - ../sm-grzybyfunkcjonalne-app/vue-grzybyfunkcjonalne-app + - ../sm-grzybyfunkcjonalne-app/README.md + - ../sm-grzybyfunkcjonalne-app/deploy/nginx/grzybyfunkcjonalne-staging.conf + - ../sm-grzybyfunkcjonalne-app/scripts/check-deploy.sh + - ../sm-grzybyfunkcjonalne-app/DEPLOY.md + +key-decisions: + - "Human chose release-now at the Task 1 gate with the reply \"release v0.1.18\"; summercms v0.1.18 is published and a later defect gets v0.1.19" + - "On UAT the Nuxt rollback copy lives at /srv/grzybyfunkcjonalne/nuxt/.output.prev, not go/build/nuxt/.output.prev as the plan assumed" + - "The site-ok log check reads /var/log/supervisor/grzybyfunkcjonalne-go.log from the restart's River client_id anchor; `sudo supervisorctl tail` fails on UAT (ExpatError) and would pass vacuously" + +patterns-established: + - "A UAT release check that reads a log must prove it read lines (anchor present) before counting zero errors" + +requirements-completed: [D-02, D-05, D-10, D-17, D-18] + +coverage: + - id: R1 + description: "Release: tag v0.1.18, plugin and host bumps pushed; UAT binary sha256 equals the local build; both programs RUNNING; rollback copies kept; on-server smoke passes" + requirement: "D-07" + verification: + - kind: integration + ref: "Task 2 verify: smoke: ok (98 urls); deploy-ok (with the corrected Nuxt rollback path)" + status: pass + human_judgment: false + - id: R2 + description: "D-03: an untouched admin save of post 64 (markdown with the raw author footer) leaves md5(content), md5(content_html) and its en translation row unchanged" + requirement: "D-03" + verification: + - kind: integration + ref: "Task 3 verify: posts-unchanged and translations-unchanged; post 64 updated_at moved to 2026-10-10 11:26:13+00, so the save reached the database" + status: pass + human_judgment: false + - id: R3 + description: "D-03: an untouched admin save of HTML_POST (post 1) leaves its bytes unchanged" + requirement: "D-03" + verification: + - kind: integration + ref: "posts-unchanged passed for post 1, but post 1 updated_at is still 2026-10-09 17:33:51+00 and no post other than 64 and 105 was written after RESTART_TS, so no save of post 1 reached the database and the pass is vacuous" + status: inconclusive + human_judgment: true + rationale: "A human must save post 1 untouched again; then re-run the posts-unchanged SELECT and confirm post 1's updated_at moved" + - id: R4 + description: "D-02, D-05, D-18: the Blog Editor test post stores content = content_html with a YouTube placeholder, a figcaption and an uploaded image URL under journal/posts" + requirement: "D-18" + verification: + - kind: integration + ref: "Task 3 verify: edit-ok (1:1:1:1:1)" + status: pass + human_judgment: false + - id: R5 + description: "D-10 amended: a style element and an onclick attribute added in the source tab are stripped on save and reported" + requirement: "D-10" + verification: + - kind: integration + ref: "edit-ok fifth column 1 (no