diff --git a/.planning/phases/19.8-console-commands-overhaul/19.8-03-SUMMARY.md b/.planning/phases/19.8-console-commands-overhaul/19.8-03-SUMMARY.md new file mode 100644 index 00000000..67bcda51 --- /dev/null +++ b/.planning/phases/19.8-console-commands-overhaul/19.8-03-SUMMARY.md @@ -0,0 +1,353 @@ +--- +phase: 19.8-console-commands-overhaul +plan: 03 +subsystem: console +tags: [bonfire, diary, surf, conga, lagoon, cli, release, plugins] +requires: + - phase: 19.8-01 + provides: diary module (component loggers, daily files, config/log.yaml) + - phase: 19.8-02 + provides: bonfire global flags, Artisan list and help, Examples, CheckDocs, hints, Reported +provides: + - serve, queue:work, schedule:run and summer dev startup summaries and shutdown reports + - http request log by route pattern on component http, on by default + - Artisan checklist for every framework command, D-19 hints, TestCommandsDocumented gate + - SummerCMS v0.4.0 tag, pushed, with its changelog post + - fifteen shared plugins swept (help, examples, named loggers, warn-only TestCommandsDocumented), pushed + - ten plugin patch releases and the five applications' pointer-bump and regenerate commits + - email-proof release (sm-user-plugin v0.1.5, sm-sociallogin-plugin v0.1.2) with the app pins +affects: [19.8-04, every application on SummerCMS, the shared plugins] +actuals: + tokens: 146594 # chars/4 over the realized diffs of all repositories (go.sum and dist excluded) + tasks: 8 + commits: 37 # MEASURED in summercms.go: git rev-list --count plan_head_before..plan_head_after; most are other sessions' (19.5, 19.6, 19.6.1, 19.7 planning) — this plan's summercms.go commits are 6 code + 1 planning before this SUMMARY +plan_head_before: f0ee26f39f6fd104df79a4cb759c7359be51b497 +plan_head_after: 053c643527ef9ed8e3fdcee904737efc30dc2ac3 +tech-stack: + added: [] + patterns: + - "Plugin component logger: package-level `var pluginLog = diary.For(\"\")` in a logger.go per package" + - "Warn-only TestCommandsDocumented in each plugin repository (bonfire.CheckDocs, t.Logf)" + - "Data output (--json, tokens, keys) through out.Println so -q keeps it" +key-files: + created: + - modules/surf/summary.go + - cmd/summer/commands_documented_test.go + - "../sm-*-plugin/commands_documented_test.go and logger.go files (15 repositories)" + modified: + - modules/surf/serve.go + - modules/surf/accesslog.go + - modules/lagoon/migrations.go + - modules/conga/worker.go + - internal/dev/watch.go + - docs/setup/upgrading.md + - "../sm-*-app/main.go (regenerated), go.mod, go.sum and plugin gitlinks" +key-decisions: + - "Framework v0.4.0 tagged at 99b6df4, not at master HEAD: commits other sessions made during the run (c1f5ded todo, 19.6/19.6.1/19.7 planning) stay unpushed" + - "Ten plugins mounted by applications got patch tags (user v0.1.6, journal v0.2.2, sitemap/menu/faq/paymentgateway/oauthserver/golem/feedback v0.1.1, pgstripe v0.1.3): sm-demo-app's go_mod_test refuses pseudo-version pins" + - "chat and forum require sm-user-plugin v0.1.2, the first release with classes.DeletingEvent; v0.1.1 did not build without a workspace" + - "sm-user-plugin swept on top of v0.1.5 (D-20 complete, nothing deferred)" +patterns-established: + - "Pattern: a plugin release that requires a new framework minor gets a patch tag, and applications pin the tag in go.mod together with the gitlink" +requirements-completed: [SC-3, SC-4, SC-5, D-04, D-05, D-06, D-07, D-11, D-17, D-18, D-19, D-20, D-21, D-22, D-23, D-24, D-25, D-26, D-27, D-28, D-29] +coverage: + - id: D1 + description: "serve startup summary, shutdown report and http request log by route pattern" + requirement: D-04 + verification: + - kind: unit + ref: "modules/surf#TestServeSummarySmoke, TestShutdownReportSmoke, TestAccessLogSmoke" + status: pass + - kind: integration + ref: "modules/surf/serve_lifecycle_test.go#TestServeLifecycle (Docker)" + status: pass + human_judgment: true + rationale: "The styled terminal block and its readability are visual" + - id: D2 + description: "Every framework command documented, Artisan checklist flags, hints and result lines" + requirement: D-17 + verification: + - kind: unit + ref: "cmd/summer/commands_documented_test.go#TestCommandsDocumented" + status: pass + - kind: other + ref: "go test -count=1 ./... with Docker (summercms.go)" + status: pass + human_judgment: false + - id: D3 + description: "SummerCMS v0.4.0 tagged and pushed with the changelog post" + requirement: D-26 + verification: + - kind: other + ref: "git ls-remote --exit-code --tags origin v0.4.0; https://summercms.io/changelog/summercms-0-4-0" + status: pass + human_judgment: true + rationale: "The changelog notes' wording is editorial" + - id: D4 + description: "Fifteen shared plugins swept in one pushed commit each, pinned to v0.4.0" + requirement: D-20 + verification: + - kind: unit + ref: "each plugin: go vet, go test -short, TestCommandsDocumented (no warnings), GOWORK=off build, build against the v0.4.0 tag" + status: pass + human_judgment: false + - id: D5 + description: "Applications bumped and main.go regenerated; each binary boots list and help migrate" + requirement: D-26 + verification: + - kind: other + ref: "go build ./... and ./bin/ list, ./bin/ help migrate in sm-demo-app, sm-bm-app, sm-grzybyfunkcjonalne-app, sm-summercmsio-app, fonoteka.go" + status: pass + human_judgment: false + - id: D6 + description: "Landing copy and roadmap deck describe the new console (published, not deployed)" + requirement: SC-5 + verification: + - kind: unit + ref: "vue-summercmsio-app pnpm test; sm-demo-app go test ./plugins/demo/roadmap/..." + status: pass + human_judgment: true + rationale: "Copy quality is editorial; the deploys are a separate user step" +duration: "segment B 3h 03m (2026-10-21T13:19:59Z to 16:23Z); segment A recorded in its own run" +completed: 2026-10-21 +status: complete +--- + +# Phase 19.8 Plan 03: console sweep and release Summary + +**serve/queue:work/schedule:run summaries and shutdown reports, the http request log by route pattern and an Artisan-documented command set shipped as SummerCMS v0.4.0 (tag, push, changelog), followed by fifteen swept shared plugins, ten plugin patch releases and pointer-bump plus regenerate commits in five applications; the 19.5 email-proof release went out first.** + +## Performance + +- **Segment A** (Tasks 1-5 and the Task 6 checkpoint): recorded in its own run. +- **Segment B** (email-proof release, Tasks 7 and 8): started 2026-10-21T13:19:59Z, completed 2026-10-21T16:23Z, about 3 h. +- **Tasks:** 8 of 8. +- **Repositories touched:** summercms.go, sm-summercmsio-app (and vue-summercmsio-app), sm-demo-app, sm-bm-app, sm-grzybyfunkcjonalne-app, fonoteka.go, sm-sociallogin-plugin and fifteen plugin repositories. + +## Accomplishments + +- `serve`: startup summary block (version, environment, URL, admin, database host:port/name, migration state, plugins, queue, scheduler, mail, cache, realtime, search), `startup summary` and `listening on ` records off a terminal, shutdown report and exit 0. `queue:work`, `schedule:run` and `summer dev` (which now runs `serve`) do the same. +- Request log on by default under component `http` with the route pattern, never the path; `request_id` capped at 128 bytes. +- Application and tool commands: Long and Examples everywhere, `--json`, `--pretend` and `--force` where they fit, production confirmation on an interactive terminal only, result lines, D-19 hints, `TestCommandsDocumented` (fails) in cmd/summer. +- Released SummerCMS **v0.4.0** with the changelog post https://summercms.io/changelog/summercms-0-4-0. +- Fifteen shared plugins: imperative descriptions, Long, Examples, result lines, a `diary.For("")` logger replacing every default-logger use, a warn-only `TestCommandsDocumented` (no warnings anywhere), README CLI sections and Dependencies naming v0.4.0. Added flags: `herald:vapid-generate --json`, `user:token:create --json`, `user:token:list --json`; progress bars on `journal:export-posts` and `user:backfill-handles`. +- Applications run the new console: sm-demo-app, sm-bm-app, sm-grzybyfunkcjonalne-app and sm-summercmsio-app pushed; fonoteka.go local. +- Landing copy and roadmap deck published with their repositories (no deploy). + +## Task Commits + +summercms.go (master): + +1. **Task 1: serve summary, report and request log** - `c38dc1f` (feat) +2. **Task 2: worker and scheduler reports, summer dev runs serve** - `168d65c` (feat) +3. **Task 3: Artisan checklist for application commands, hints, coverage gate** - `9d06a78` (feat) +4. **Task 4: help, examples and hints for every tool command** - `3346060` (feat) +5. Test fixes after the Docker run (deviation 14): `2057643`, `4895b25` (fix) +6. Email-proof release record and closed todo: `99b6df4` (docs) + +Task 5 (landing and deck): vue-summercmsio-app `473e476`, sm-summercmsio-app `44c96f2`, sm-demo-app `b325460`. + +Task 6: checkpoint, reply "release v0.4.0". + +Task 7 and Task 8: one commit per plugin and two per application, listed in the Handoff (sections 8 and 9). + +## Handoff + +### 1. Segment A commits + +summercms.go (master, pushed in segment B): + +| Task | Hash | Subject | +|------|------|---------| +| 1 | `c38dc1f` | feat(surf): serve startup summary, shutdown report and http request log | +| 2 | `168d65c` | feat(conga,dev): worker and scheduler reports, summer dev runs serve | +| 3 | `9d06a78` | feat: Artisan checklist for application commands, hints and coverage gate | +| 4 | `3346060` | feat(summer): help, examples and hints for every tool command | + +summercms.go `origin/master..master` at the checkpoint: 43 commits, `c996790` (docs(roadmap): renumber console commands overhaul from phase 32 to 19.8) through `3346060`. They are this phase's commits (plans 01, 02, 03 and the phase planning docs), Phase 19.5's commits (plans 02-05 docs, tests, gate, security review, verification, UAT), `671d388` test(cooler) and `cb38c49` docs(notes). Latest tag on origin then: `v0.3.1`. + +Sibling repositories (segment A, local until segment B): + +| Repository | Branch | Hash | Subject | +|------------|--------|------|---------| +| sm-summercmsio-app/vue-summercmsio-app | master | `473e476` | feat: describe the Artisan-style console | +| sm-summercmsio-app | master | `44c96f2` | chore: bump vue-summercmsio-app for console copy | +| sm-demo-app | master | `b325460` | feat(demo): roadmap deck describes the new console | + +sm-summercmsio-app also held `8581576` fix(scripts): changelog-post sends its own User-Agent (not this plan's); approved with the reply and pushed. + +### 2. Framework API for the plugin sweep (names as built) + +- `bonfire.Command` fields `Long string`, `Examples []bonfire.Example`, `Hidden bool`; `bonfire.Example{Command, Description string}`. +- `bonfire.CheckDocs(commands []bonfire.Command) []bonfire.DocProblem`; `DocProblem{Command string; Missing []string}` with `String()`. +- Errors: `bonfire.Reported(err) error`, `bonfire.WithHint(err, explanation, try string) error`, `bonfire.Usage(err) error`. +- Output helpers: `bonfire.IsQuiet`, `bonfire.Interactive`, `bonfire.IsTerminal`, `bonfire.ConfirmProceed`, `bonfire.Process`, `bonfire.Current`, `bonfire.Failed`, `bonfire.Details`, `bonfire.GlobalsOf`, `bonfire.VerbosityOf`. Data goes through `out.Println`/`out.Printf` (kept under `-q`). +- Logging: `diary.For("") *slog.Logger`, `diary.HideOnTTY(ctx)`. + +### 3. Release recommendation + +- Recommended tag: v0.4.0; upgrading section `## Upgrading to 0.4` in `docs/setup/upgrading.md` (kept, the reply chose v0.4.0). + +### 4. Repository state at the checkpoint (after `git fetch origin`) + +| Repository | Branch | HEAD | Ahead/behind | Uncommitted | Framework require | +|------------|--------|------|--------------|-------------|-------------------| +| ../sm-paymentgateway-plugin | main | `16484ba` | 0/0 | none | v0.1.24 | +| ../sm-pgstripe-plugin | main | `c48c3b4` | 0/0 | none | v0.2.2 | +| ../sm-oauthserver-plugin | master | `0deb9a4` | 0/0 | none | v0.3.0 | +| ../sm-journal-plugin | main | `48d6593` | 0/0 | `?? go.work.sum` (not this plan's, left alone) | v0.2.0 | +| ../sm-sitemap-plugin | main | `46898c2` | 0/0 | none | v0.2.0 | +| ../sm-faq-plugin | main | `2efe351` | 0/0 | none | v0.2.0 | +| ../sm-menu-plugin | main | `f7eddd5` | 0/0 | none | v0.2.0 | +| ../sm-chat-plugin | main | `f4aeb87` | 2/0 (`0aee785`, `f4aeb87`, approved) | none | v0.2.2 | +| ../sm-chatchannels-plugin | main | `3738f45` | 2/0 (`7d49c3c`, `3738f45`, approved) | none | v0.2.2 | +| ../sm-chatvideo-plugin | main | `66b3bc7` | 0/0 | none | v0.2.3 | +| ../sm-forum-plugin | main | `6813f00` | 0/0 | none | v0.2.3 | +| ../sm-herald-plugin | main | `0c7de4d` | 0/0 | none | v0.2.3 | +| ../fonoteka.go/plugins/golem15/golem | master | `544aa28` | 0/0 | none | v0.1.9 | +| ../fonoteka.go/plugins/golem15/feedback | master | `e06b140` | 0/0 | none | v0.1.9 | +| ../fonoteka.go/plugins/golem15/user | master | `c7635c5` | 0/0 | none | v0.1.9 | + +Applications: sm-demo-app `b325460` (1 ahead), sm-bm-app `99af8c2` (another session's `.planning/*` and tool directories uncommitted, left alone), sm-grzybyfunkcjonalne-app `6fc1a34` (1 ahead, approved), sm-summercmsio-app `44c96f2` (2 ahead), fonoteka.go `f4d5728` (31 ahead, never pushed). + +### 5. Docker tests + +- `TestServeLifecycle` (modules/surf): **PASS**. It was NOT RUN in segment A (no traffic reached containers on this host); after the host networking was fixed it failed on a missing app key and body limits in its fixture (deviation 14, `4895b25`) and then passed. +- Full `go test -count=1 ./...` with Docker in summercms.go after `4895b25`: **PASS** (`TestQueueWork`, `TestScheduleRunForeground` fixed in `2057643`). +- Plugin Docker suites in segment B: PASS in paymentgateway, pgstripe, oauthserver, journal, chat, chatchannels, forum, chatvideo, herald, golem, feedback; pre-existing failures in sitemap, faq, menu and the user plugin's `updates` package (section 8, deferred-items.md). + +### 6. Phase 19.5 and the user plugin + +- Phase 19.5 completed and closed during segment A's pause; its commits (`7170c5b` … `9ab28e1`) went out with the framework push. +- The email-proof release ran first in segment B (section 8). sm-user-plugin was then swept on top of v0.1.5 (`9986342`, tag v0.1.6): **D-20 complete**, nothing deferred, no `user-plugin-console-sweep.md` todo. + +### 7. Deviations so far + +See `## Deviations from Plan` below. + +### 8. Segment B: email-proof release and Task 7 results (recorded before Task 8) + +- Segment B start check: every segment A hash resolves; repository states matched the handoff except the email-proof release made first and Phase 19.5's documented commits in summercms.go (`7170c5b` … `9ab28e1`). +- Email-proof release (todo `email-proof-release.md`, steps 0-5): sm-user-plugin `v0.1.5` at `35cf166` (pushed `c7635c5..35cf166`); sm-sociallogin-plugin `9fd58db` and `v0.1.2` (pushed `d7ee28d..9fd58db`); sm-demo-app `f16ef6c`, `1afd7ff`, `a5703f9` (snapshot sync) pushed `61a00e9..a5703f9` with `b325460`; sm-bm-app `1e09c23`, `cc4b23f` pushed `99af8c2..cc4b23f` with `5fd0cc3`; fonoteka.go `2be9e1f` local. Recorded in 19.5-05-SUMMARY.md and the closed todo (summercms.go `99b6df4`). +- Framework: master pushed `5cf5c4f..99b6df4` (64 commits); annotated tag **v0.4.0** at `99b6df4` (tag object `e30fd34`), pushed. `c1f5ded` (a todo capture another session committed during this run) and later 19.6, 19.6.1 and 19.7 planning commits were left local, not pushed. +- Changelog: https://summercms.io/changelog/summercms-0-4-0 (post id 35, published at the tag date 2026-10-21T13:43:16Z). +- Plugins, one commit each `feat: console help, examples and named loggers (SummerCMS v0.4.0)`, pushed; CheckDocs warnings: none. + +| Repository | Branch | Commit | Pushed range | +|------------|--------|--------|--------------| +| sm-paymentgateway-plugin | main | `e0badb5` | `16484ba..e0badb5` | +| sm-pgstripe-plugin | main | `6d07d98` | `c48c3b4..6d07d98` | +| sm-oauthserver-plugin | master | `d31f8e7` | `0deb9a4..d31f8e7` | +| sm-journal-plugin | main | `ffa2c8f` | `48d6593..ffa2c8f` | +| sm-sitemap-plugin | main | `96c790d` | `46898c2..96c790d` | +| sm-faq-plugin | main | `b3cc978` | `2efe351..b3cc978` | +| sm-menu-plugin | main | `8656474` | `f7eddd5..8656474` | + +- Checks per plugin: `go vet`, `go test -short`, `GOWORK=off go build ./...`, the warn-only `TestCommandsDocumented` (PASS, no warnings), and a build against the published v0.4.0 tag from a go.mod copy without the framework replace. Full Docker suites pass in paymentgateway, pgstripe, oauthserver and journal; sitemap (`TestSitemapAdminSmoke`), faq (`TestFaqAdminSmoke`, `TestFaqAdminPurgesSiteCache`) and menu (`TestMenuAdminSmoke`, `TestMenuAdminPurgesSiteCache`) have admin smoke tests that already fail at the pushed HEAD before the sweep and with framework v0.3.1 (validation messages arrive translated where the tests expect phrase keys); logged in deferred-items.md. + +### 9. Task 8 results + +Plugins, one commit each, pushed (CheckDocs warnings: none): + +| Repository | Branch | Commit | Pushed range | Notes | +|------------|--------|--------|--------------|-------| +| sm-chat-plugin | main | `5fea654` | `4d0e764..5fea654` (with approved `0aee785`, `f4aeb87`) | requires sm-user-plugin v0.1.2 | +| sm-chatchannels-plugin | main | `f3ac5d1` | `9026cd6..f3ac5d1` (with approved `7d49c3c`, `3738f45`) | tidy raises sm-user-plugin to v0.1.2 | +| sm-forum-plugin | main | `2779341` | `6813f00..2779341` | requires sm-user-plugin v0.1.2 | +| sm-chatvideo-plugin | main | `be688fe` | `66b3bc7..be688fe` | result line `Ended N video sessions.` | +| sm-herald-plugin | main | `74c889c` | `0c7de4d..74c889c` | `herald:vapid-generate --json` | +| sm-golem-plugin | master | `37748ae` | `544aa28..37748ae` | no default-logger sites; `feat: console help and examples` | +| sm-feedback-plugin | master | `ce4b43e` | `e06b140..ce4b43e` | | +| sm-user-plugin | master | `9986342` | `35cf166..9986342` | `--json` on token create/list, backfill progress, planning IDs removed | + +Plugin tags (annotated, pushed): sm-user-plugin `v0.1.6` (`9986342`), sm-journal-plugin `v0.2.2` (`ffa2c8f`), sm-sitemap-plugin `v0.1.1` (`96c790d`), sm-menu-plugin `v0.1.1` (`8656474`), sm-faq-plugin `v0.1.1` (`b3cc978`), sm-paymentgateway-plugin `v0.1.1` (`e0badb5`), sm-pgstripe-plugin `v0.1.3` (`6d07d98`), sm-oauthserver-plugin `v0.1.1` (`d31f8e7`), sm-golem-plugin `v0.1.1` (`37748ae`), sm-feedback-plugin `v0.1.1` (`ce4b43e`). chat, chatchannels, forum, chatvideo and herald are not tagged (no application mounts them). + +Applications (pointer bump, then regenerated main.go; `bin/ list` and `bin/ help migrate` exit 0; `grep -c 'bonfire.Execute(' main.go` is 1): + +| Application | Bump commit | Regenerate commit | Pushed range | +|-------------|-------------|-------------------|--------------| +| sm-demo-app | `8d3a7f0` (user, journal, sitemap, menu, faq, paymentgateway, pgstripe, oauthserver, golem, feedback; go.mod pins the tags) | `7dc5022` | `a5703f9..7dc5022` | +| sm-bm-app | `d1992f1` (user v0.1.6, tidy for v0.4.0) | `87c7442` | `cc4b23f..87c7442` | +| sm-grzybyfunkcjonalne-app | `797ba0f` (user, journal, sitemap, menu, faq; tidy for v0.4.0) | `0bddc5b` | `6b9d13d..0bddc5b` (with approved `6fc1a34`) | +| sm-summercmsio-app | `6eb30f3` (user, journal; tidy for v0.4.0) | `289aa77` | `752099d..289aa77` (with approved `8581576` and Task 5's `44c96f2`); vue-summercmsio-app `8771773..473e476` pushed first | +| fonoteka.go | `59aa058` (user, golem, feedback; tidy) | `03de3e1` | not pushed (local only, 34 commits ahead) | + +- g15office: no g15office tool was available in this session; the Phase 19.8 milestone task was neither found nor commented, and `.planning/G15OFFICE.md` is unchanged. + +## Files Created/Modified + +- Framework (segment A): `modules/surf/{serve.go,summary.go,accesslog.go,routelist_command.go}`, `modules/lagoon/{migrations.go,commands.go,keygen.go,connection.go,encrypted.go}`, `modules/conga/{worker.go,commands.go}`, `modules/cabana/*commands.go`, `modules/lighthouse/centrifugo/commands.go`, `modules/flare/commands.go`, `modules/bonfire/{errors.go,helpers.go}`, `modules/diary/*`, `internal/dev/watch.go`, `cmd/summer/*`, docs pages and READMEs listed in segment A. +- Each swept plugin: console command files, `commands_documented_test.go`, `logger.go` per package that logged, README, go.mod, go.sum. +- Each application: plugin gitlinks, go.mod, go.sum, main.go. + +## Decisions Made + +- v0.4.0 tagged at `99b6df4` (pushed explicitly) so commits other sessions made during the run stay local. +- Patch tags for the ten plugins applications mount: sm-demo-app refuses pseudo-version pins (`go_mod_test.go`). +- Package-level `pluginLog = diary.For("")` in a `logger.go` per package; log messages unchanged (they keep their `golem15.:` prefixes). +- The `subscriptions` package of sm-pgstripe-plugin is its own plugin and logs as component `pgstripesubscriptions`. + +## Deviations from Plan + +Segment A (1-14): + +1. **[Rule 2 - API] bonfire.IsTerminal, bonfire.Details, bonfire.Detail.** Added as additive helpers for surf and conga. Commit `c38dc1f`. +2. **[Rule 2 - API] conga.WorkerStats.HandedBack.** Distinguishes jobs Stop handed back to the queue (River retries them) from failures. Commit `c38dc1f`. +3. **[Rule 3 - Blocking] lagoon.DatabaseLabel.** Exported DSN-to-"host:port/name" helper used by surf and conga. Commit `168d65c`. +4. **[Interpretation] PendingMigrations includes the framework sets** before the plugins, matching `Migrate`. Commit `c38dc1f`. +5. **[Interpretation] migrate:status --json** prints `{plugin, table, id, applied}` (gormigrate stores only the ID). Commit `9d06a78`. +6. **[Rule 1 - Bug] summer dev restart order.** Stops the old server before starting the new one. Commit `168d65c`. +7. **[Rule 2] summer dev gives the child the terminal.** Commit `168d65c`. +8. **[Rule 3 - Blocking] blog:publish coverage moved to its own package** (`docs/examples/blog/console/publish_test.go`). Commit `9d06a78`. +9. **[Interpretation] app.key hint in lagoon's encrypted.go, uploads-bucket hint in surf's publishUploads.** Commit `9d06a78`. +10. **[Interpretation] serve admin status folded into the summary's Admin row.** Commit `c38dc1f`. +11. **[Rule 3] sm-demo-app names.go** needed phase 19.8's Polish title. Commit `b325460`. +12. **[Interpretation] Landing tests** need `pnpm generate` before `pnpm test`. +13. **[Concurrency] sm-summercmsio-app held `8581576`** (not this plan's); reported at the checkpoint, approved with the reply, pushed. +14. **[Rule 1 - Bug] Docker-backed tests after host networking was fixed.** `TestQueueWork/runs_until_cancelled` and `TestScheduleRunForeground` asserted pre-19.8 Info lines; `TestServeLifecycle` lacked an app key and body limits. Commits `2057643`, `4895b25`; the full Docker suite then passed. + +Segment B (15-27): + +15. **[Concurrency] Framework push and tag at `99b6df4`, not master HEAD.** `c1f5ded` (another session's todo capture, committed during the run) was not in the approved range, so `99b6df4:refs/heads/master` was pushed and tagged; `c1f5ded` and the later 19.6, 19.6.1 and 19.7 planning commits stay local for their sessions. +16. **[Rule 3 - Blocking] sm-sociallogin-plugin is not readable over anonymous https.** `go get` of it (and the tag-proof builds) ran with a process-scoped `url.git@git.golem15.com:.insteadOf https://git.golem15.com/` (environment variables only; no git or Go configuration changed). +17. **[Rule 3 - Blocking] Plugin patch tags.** The plan pinned applications by submodule commit only; sm-demo-app's go.mod pins every plugin by version and `go_mod_test.go` refuses pseudo-versions, so the ten plugins applications mount were tagged (Handoff 9) and sm-demo-app's go.mod moved to those tags. +18. **[Rule 3 - Blocking] chat and forum require sm-user-plugin v0.1.2.** Both use `userclasses.DeletingEvent` (chat through the approved `0aee785`, forum already on its pushed HEAD) while requiring v0.1.1, which lacks it; `GOWORK=off go build` failed. Raised to v0.1.2 in their sweep commits; chatchannels and chatvideo follow through tidy. +19. **[Rule 3] Application commits include go.mod and go.sum.** The plan said to commit only the submodule paths; the version pins (sm-demo-app, sm-bm-app) and the framework v0.4.0 requirement with its new dependencies (`GOWORK=off go mod tidy`) belong in the same bump commit, or the applications do not build without a workspace. +20. **[Checklist changes]** `journal:import-posts` progress declined: it prints one line per post inside one transaction, which a bar would interleave (export got the bar). `journal:import-posts`, `sitemap:import` and `sitemap:import-winter` result lines move from Info to Success (text unchanged). `chatvideo:reconcile-sessions` prints `Ended N video sessions.` instead of `reconciled N session(s)`. `oauthserver:prune` gains `Pruned N expired rows and K signing keys.` after its six count lines. The pg sweeps keep their existing `Canceled N payments.`/`Canceled N orders.`/`Finished N orders.` and `Updated N of M currencies.` lines. `oauthserver:rotate-keys`, `golem:import-settings` and `feedback:import-settings` return `bonfire.Reported` after printing their own error, so it prints once. +21. **[Interpretation] sm-golem-plugin has no default-logger use,** so it got no logger file and its commit is `feat: console help and examples (SummerCMS v0.4.0)`. +22. **[Concurrency] fonoteka.go golem and feedback gitlinks.** Another session had left their checkouts at the v0.1.0 pin commits (`544aa28`, `e06b140`) unstaged; the bump to the sweep commits fast-forwards through them, so `59aa058` includes that move. +23. **[Environment] fonoteka's binary needs `SUMMER_GOLEM15__USER__JWT__SECRET` to boot** (`list` and `help migrate`); checked with a throwaway test value. Unchanged behaviour of the user plugin. +24. **[Concurrency] Roadmap deck not re-synced at the final push.** `sync-roadmap.sh --check` fails against local master only because of other sessions' unpushed planning; it passes against `origin/master`, so the deck was not synced to unpublished planning (deferred-items.md). +25. **[Email-proof] sm-demo-app snapshot sync `a5703f9`** before its push, as the todo prescribes; sm-sociallogin-plugin's tidy also recorded the framework's charm indirect requirements (its go.mod replaces the framework with the local checkout). +26. **[State] `state.advance-plan` and `state.record-session` not run.** STATE.md's current position belongs to the session executing 19.6/19.6.1 and holds its uncommitted edits; only the phase-scoped handlers ran (record-metric, add-decision, update-progress), and STATE.md is not committed here. +27. **[Tooling] g15office unavailable.** No comment on the Phase 19.8 milestone task; email-proof todo step 6 (comment on `onunbz3l`, Testing, `sqnwn1zi` to Live) also open. + +**Total deviations:** 27 (segment A 14, segment B 13). **Impact:** no command name or flag was removed or renamed; the additions are flags, help, result lines and loggers. The tags and pushes stayed within the reply (framework, plugins, applications except fonoteka.go); nothing was deployed or force-pushed. + +## Issues Encountered + +- Pre-existing test failures in sitemap, faq, menu and the user plugin's `updates` package (deferred-items.md); each reproduced before the sweep and with framework v0.3.1. +- Application binaries print plugin boot INFO records before `list` output (tracked by another session's todo `c1f5ded`). + +## User Setup Required + +None. + +## Next Phase Readiness + +- Plan 19.8-04 (unit tests) can run against the released v0.4.0 and the swept plugins. +- Open for the user: deploy the applications (sm-demo-app, sm-bm-app, sm-grzybyfunkcjonalne-app, sm-summercmsio-app) when ready; the user plugin's two additive migrations (`users.handle`, `users.email_verified_at`) reach grzyby and summercms.io with this bump. Re-run `/msd-verify-work 19.5` (email-proof released). g15office updates for 19.5 and 19.8. + +## Task 6 reply + +> release v0.4.0 + +Chosen tag: **v0.4.0**. Recorded with the reply: full release (framework tag, push, changelog post; plugin sweeps pushed; application pointer-bump and regenerate commits pushed). The user also approved that unpushed commits made outside this plan go out with the release (sm-summercmsio-app `8581576`, sm-chat-plugin `0aee785` `f4aeb87`, sm-chatchannels-plugin `7d49c3c` `3738f45`, sm-grzybyfunkcjonalne-app `6fc1a34`, sm-demo-app `b325460` and similar earlier-session commits in the same repositories). fonoteka.go is never pushed (local commits only). The email-proof release (sm-user-plugin v0.1.5, sm-sociallogin-plugin v0.1.2) runs first, before Task 7. + +--- +*Phase: 19.8-console-commands-overhaul* +*Completed: 2026-10-21* + +## Self-Check: PASSED + +All commits listed resolve in their repositories (summercms.go 7, sociallogin 1, sm-demo-app 6, sm-bm-app 4, grzybyfunkcjonalne 2, summercmsio 3 plus vue 1, fonoteka.go 3, fifteen plugin sweep commits); the key files exist; the Handoff heading is present once; tags v0.4.0 and the eleven plugin tags resolve on their remotes. diff --git a/.planning/phases/19.8-console-commands-overhaul/deferred-items.md b/.planning/phases/19.8-console-commands-overhaul/deferred-items.md index e23733b4..ca218785 100644 --- a/.planning/phases/19.8-console-commands-overhaul/deferred-items.md +++ b/.planning/phases/19.8-console-commands-overhaul/deferred-items.md @@ -7,3 +7,14 @@ Out-of-scope findings recorded during execution. Not fixed in this phase. - **Flaky wristband test.** `TestOIDCSubjectIsRandomSmoke` (`modules/wristband/oidc_security_test.go:151`) rejects a subject that contains `ada` (to catch the fixture user's name), but a random UUIDv4 contains `ada` in about 0.7% of runs. It failed once during the 19.8-01 short suite (`sub = "64a89757-94a7-4699-bf28-4329d8c7eada"`) and passed on three reruns. Fix: compare against the fixture's name as a whole, or check that the subject differs from it, instead of matching a substring of hex. - **Pre-existing gofmt drift.** `gofmt -l` lists `internal/build/registry.go`, `modules/cabana/account_tokens.go` (no newline at end of file) and some test files (`modules/cabana/*_test.go`, `modules/compass/*_test.go`, `modules/tide/*_test.go`). Unchanged by this plan beyond the logger lines. - **examples/hello go.mod is stale outside the workspace.** `GOWORK=off go -C examples/hello build .` asks for `go mod tidy`: its go.mod lacks requirements the framework already had before this phase (aws-sdk, bluemonday, redis, among others). Inside the repository's go.work every build and test passes, so the example modules' go.mod and go.sum were left as they were. + +## Found during 19.8-03 (segment B, plugin sweep) + +Each failure below also fails at the plugin's commit before the sweep, with framework master and with framework v0.3.1 (checked in scratch worktrees), so it is not caused by the sweep or by v0.4.0. Not fixed here. + +- **sm-sitemap-plugin `TestSitemapAdminSmoke`** (`sitemap_smoke_test.go:607`): expects the phrase key `golem15.sitemap::lang.item.reference_required` in a 422 body, gets the translated text "The item reference is required.". +- **sm-faq-plugin `TestFaqAdminSmoke`, `TestFaqAdminPurgesSiteCache`** (`site_cache_admin_test.go:208`): a create without a locale returns "Choose a language." where the test expects the phrase key. +- **sm-menu-plugin `TestMenuAdminSmoke`, `TestMenuAdminPurgesSiteCache`** (`site_cache_admin_test.go:228`): a create returns 422 "Choose a menu or a parent entry." where the test expects success or the phrase key. +- **sm-user-plugin `updates` migration tests** (`TestExtendUsersMigration`, `TestCreateUserThrottleMigration`, `TestCreateJwtBlacklistMigration`, `user_session_test.go`): "survived rollback", a varying subset per run; also at v0.1.5 with framework v0.3.1. +- **Plugin boot logs on `list`.** Application binaries print INFO boot records (for example `paymentgateway: operators registered`) before `list` and `help` output. Already captured by another session as a todo (summercms.go `c1f5ded`, "Quiet plugin boot logs on console commands like --help"). +- **sm-demo-app roadmap snapshot vs local master.** `scripts/sync-roadmap.sh --check` fails against local framework master while other sessions' 19.6 and 19.6.1 planning commits are unpushed; it passes with `ROADMAP_REF=origin/master`. Re-sync after those commits are pushed.