wip: phase 19.4.1 paused at plan 01 task 4/4 (deck review checkpoint)

This commit is contained in:
2026-10-20 11:22:00 +02:00
parent 31764c8d8c
commit e4ed78773e
2 changed files with 117 additions and 0 deletions

40
.planning/HANDOFF.json Normal file
View File

@@ -0,0 +1,40 @@
{
"version": "1.0",
"timestamp": "2026-10-20T09:20:51.976Z",
"phase": "19.4.1",
"phase_name": "Early public demo on demo.summercms.io (INSERTED)",
"phase_dir": ".planning/phases/19.4.1-early-public-demo-on-demo-summercms-io",
"plan": 1,
"task": 4,
"total_tasks": 4,
"status": "paused",
"completed_tasks": [
{"id": 1, "name": "Tracer: English deck from ROADMAP.md shown in bm's viewer", "status": "done", "commit": "b80aaaf, 7a4a6b0, 4514159 (sm-demo-app)"},
{"id": 2, "name": "Whole deck in EN and PL: roadmap, features, migration, pxpx, MCP future", "status": "done", "commit": "680fd82 (sm-demo-app)"},
{"id": 3, "name": "OIDC provider screenshots, no duplicate images on re-seed", "status": "done", "commit": "37ee65e (sm-demo-app)"}
],
"remaining_tasks": [
{"id": 4, "name": "checkpoint:human-verify — user reviews the EN/PL deck for the 2026-10-21 presentation", "status": "awaiting_user"}
],
"blockers": [
{"description": "Plan 19.4.1-01 Task 4 is a blocking human-verify checkpoint", "type": "human_action", "workaround": "none — user must approve or list slide changes"}
],
"async_jobs": [],
"human_actions_pending": [
{"action": "Review both decks (30 slides each) and reply 'approved' or list slide changes (slide number, language, new text)", "context": "Deck is the user's main presentation on 2026-10-21", "blocking": true},
{"action": "Decide whether the continuation agent should add a PRESENT_HOST env var to sm-demo-app/scripts/dev.sh (bind present servers to 0.0.0.0 for 10.8.3.4)", "context": "Currently done via an untracked scratchpad copy of dev.sh", "blocking": false},
{"action": "Optionally report how the speaker view (/moje-prezentacje/roadmap) behaved without Centrifugo", "context": "Executor could not log in (visitor password lives in .env, which the secret guard blocks)", "blocking": false}
],
"decisions": [
{"decision": "Phase runs sequentially on main tree (workflow.use_worktrees=false); code commits go to sibling repos, planning commits to summercms.go", "rationale": "Plans target ../sm-demo-app and other siblings", "phase": "19.4.1"},
{"decision": "Present servers bound to 0.0.0.0 via a scratchpad copy of dev.sh rather than editing dev.sh", "rationale": "Avoid uncommitted edits in a file the continuation agent will touch", "phase": "19.4.1"}
],
"uncommitted_files": [
" M .planning/STATE.md",
" M .planning/state.json",
"?? .msd/",
"?? .planning/phases/19.4.1-early-public-demo-on-demo-summercms-io/.gitkeep"
],
"next_action": "/msd-execute-phase 19.4.1 → it finds 19.4.1-01 without SUMMARY but with commits (safe_resume_gate); choose to continue at Task 4 by spawning a continuation msd-executor with the user's deck response, then write 19.4.1-01-SUMMARY.md including deviations 1-9 from .continue-here.md",
"context_notes": "sm-demo-app is clean; 5 plan commits after 1439b3a, unpushed. No SUMMARY yet. STATE.md/state.json modifications are from state.begin-phase (and possibly other sessions) — leave alone, do not commit them with the handoff."
}

View File

@@ -0,0 +1,77 @@
---
context: phase
phase: 19.4.1-early-public-demo-on-demo-summercms-io
task: 4
total_tasks: 4
status: in_progress
last_updated: 2026-10-20T09:20:51.976Z
---
## Critical Anti-Patterns
| Pattern | Description | Severity | Prevention Mechanism |
|---------|-------------|----------|---------------------|
| Reading `.env` into the conversation | An early `grep` over sm-demo-app matched `.env` and printed the dev JWT secret and visitor password; a secret-guard hook now blocks any Bash command naming `.env` | advisory | Exclude `.env*` from greps (`--exclude='.env*'`); get credential *names* from `deploy/env.example`; ask the user for values |
<current_state>
Phase 19.4.1, plan 19.4.1-01 (roadmap and sales deck), stopped at Task 4: the blocking `checkpoint:human-verify`. Tasks 1-3 are committed in `../sm-demo-app` (master, after `1439b3a`, not pushed). There is no `19.4.1-01-SUMMARY.md` yet, and STATE/ROADMAP have no plan progress. Plans 02-05 have not started.
</current_state>
<completed_work>
Commits in `../sm-demo-app`:
- Task 1, the tracer (EN deck from ROADMAP.md in bm's viewer): b80aaaf, 7a4a6b0, 4514159
- Task 2, the whole deck in EN and PL (roadmap, features, migration, pxpx, MCP future): 680fd82
- Task 3, the OIDC screenshots, with no duplicate attachments on re-seed: 37ee65e
Verification passed for each task: smoke tests, `sync-roadmap.sh --check`, snapshots of 30 slides per deck, both PDFs present, and HTTP 200 from all 13 docs URLs on the slides. The executor's full checkpoint report is summarised under "Deviations for SUMMARY" below.
</completed_work>
<remaining_work>
- Task 4: the user reviews both decks and replies "approved" or lists slide changes (slide number, language, new text). A continuation agent edits `plugins/demo/roadmap/curated.go` or `names.go`, re-runs `present` and `snapshot`, and asks the user again.
- Then write `19.4.1-01-SUMMARY.md`, commit it in summercms.go, and update ROADMAP plan progress.
- Plans 02-05: waves 2 to 5, one at a time. Every one has blocking checkpoints, and pushes, tags and deploys need the user's go-ahead.
</remaining_work>
<decisions_made>
- Plans run one at a time on the main tree (`workflow.use_worktrees=false`). Code commits go to sibling repos; planning files are committed in summercms.go.
- The present servers were rebound to 0.0.0.0 at the user's request so the deck can be reached at 10.8.3.4. This uses an untracked copy of dev.sh in the old session's scratchpad, which may be gone; `scripts/dev.sh` itself is unchanged. Open question for the user: should the continuation agent add a `PRESENT_HOST` env var to `scripts/dev.sh`?
</decisions_made>
<blockers>
- The Task 4 human-verify checkpoint is blocking and waits for the user.
</blockers>
## Deviations for SUMMARY (from the executor's checkpoint return)
1. [Rule 1] The public URL has the form `/prezentacje/{slug}-{hash}`, not `/prezentacje/{hash}`, because the plugin's `SplitSlugHash` requires it. `present` prints the working form.
2. [Rule 3] Playwright 1.56.1 expects Chromium build 1194, but only build 1223 is cached. The new file `scripts/lib/browser.cjs` launches the newest cached Chromium; nothing was installed.
3. [Rule 3] The secret-guard hook blocks Bash commands that name the env file, so `dev.sh` was edited through patch scripts. No credential value was read.
4. [Rule 1] The Phase 8 summary contains "fonoteka-mcp". Done phases show only their title, so it never reaches a slide. Every phase has curated PL titles, and open phases have curated EN and PL summaries.
5. [Rule 3] Admin login throttle: `capture-oidc` signs in once through the login form and then calls the admin API from that page.
6. Old UAT OAuth clients remain in the local DB. The Clients screenshot is filtered with `?search=Acme portal` and cropped to the table.
7. The pxpx slide has its own layout (two cards and a summary) instead of the CSS class `special`, which would break the snapshot's slide count.
8. The consent figure is capped at `max-width: 320px`, because the sanitizer does not allow `max-height`.
9. `scripts/lib/browser.cjs` is a new shared helper that is not in files_modified.
- Theme: atlas (shown in its dark scheme). Left-out phases: none. The speaker view without Centrifugo has not been checked; ask the user how it behaved.
## Required Reading (in order)
1. `.planning/phases/19.4.1-early-public-demo-on-demo-summercms-io/19.4.1-01-PLAN.md`: Task 4 checkpoint and the SUMMARY requirements
2. `19.4.1-CONTEXT.md`: locked decisions D-01 to D-23
3. `.planning/HANDOFF.json`
## Infrastructure State
- `../sm-demo-app` Postgres runs in docker as `sm-demo-pg` on 127.0.0.1:55540.
- Two `scripts/dev.sh` servers on 127.0.0.1: go on :8097 and Nuxt on :3020.
- present-go (`bin/demo serve`) listens on 0.0.0.0:8096, and present-bm (bm's Vite dev server) on 0.0.0.0:5173. Both were started from the scratchpad copy, which differs from dev.sh only in `PRESENT_GO_ADDR=0.0.0.0:8096` and `--host 0.0.0.0`. Their pid files are in `sm-demo-app/logs/`, so `scripts/dev.sh down` stops them.
- EN deck: http://10.8.3.4:5173/prezentacje/roadmap-eb81d804e76023b7f604b243
- PL deck: http://10.8.3.4:5173/prezentacje/roadmap-pl-be7de21ba47c5b8b67a4795a
- Login page: http://10.8.3.4:5173/logowanie, as `visitor@example.test` with the password from `.env`.
- Offline PDFs: `sm-demo-app/logs/deck/roadmap.pdf` and `roadmap-pl.pdf`.
- Local admin: http://127.0.0.1:8097/backend, `admin` / `AdminDemo123!`
<context>
Tomorrow (2026-10-21) the user presents this deck, so plan 01 comes first. The remaining work in plan 01 is review and polish only. `.planning/STATE.md` and `.planning/state.json` have uncommitted changes from `state.begin-phase`, and maybe from other sessions; don't commit them with the handoff.
</context>
<next_action>
Start with: `/msd-execute-phase 19.4.1`. safe_resume_gate will find commits for 19.4.1-01 but no SUMMARY. Pick "continue at Task 4": ask the user for the deck verdict, then spawn a continuation msd-executor with that response. It finishes Task 4, writes `19.4.1-01-SUMMARY.md` with deviations 1-9, and commits it.
</next_action>