Review: Integrate playground kanban into pal-e-app
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type — Feature
- [x] Lineage — Standalone
- [x] Repo — present but STALE (says
forgejo_admin/pal-e-app, repo renamed toforgejo_admin/pal-e-docs-app) - [x] User Story — present
- [x] Context — present
- [x] File Targets — present but contains stale reference (see below)
- [x] Acceptance Criteria — present (4 criteria)
- [x] Test Expectations — present (3 items)
- [x] Constraints — present
- [x] Checklist — present
- [x] Related — present
Traceability
- [x] story:kanban-daily-review — present on board item #298
- [ ] arch:X — MISSING. Should be
arch:frontend(consistent with sibling board items #469, #471, #472, etc.) - [x] Forgejo issue —
forgejo_admin/pal-e-docs-app/issues/47, open
File Targets
- [x]
src/routes/boards/[slug]/+page.svelte— verified: exists, 1195 lines, already has drag-and-drop, optimistic updates, column rendering, type badges, auth gating - [x]
src/app.css— verified: exists - [ ]
src/routes/boards/[slug]/+page.server.ts(DO NOT TOUCH) — ISSUE: file does NOT exist. App was migrated to adapter-static (PR #57, issue #53). Data loading is client-side viaonMountin the .svelte file. This "do not touch" reference is stale and will confuse the agent.
Repo Placement
Issue body says
forgejo_admin/pal-e-app but the repo was renamed to forgejo_admin/pal-e-docs-app (issue #87, PR #90). The Forgejo redirect handles this transparently, but the issue body should be updated to avoid confusion. Local checkout at ~/pal-e-app still uses the old directory name.Dependencies
- [ ] Board item #297 ("Playground: kanban prototype", issue #46) — PENDING. Still
in_progresson board-pal-e-docs. This ticket's Context section explicitly states: "Depends on playground kanban prototype being approved by Lucas." The playground prototype (~/pal-e-docs-playground/note-board.html, 132 lines) exists but has not been approved. This ticket CANNOT move to next_up until #297 reaches done. - [x] Board item #318 ("Drop legacy boards table", issue #199) — in
next_up, no conflict. Board page should not depend on the legacy table. - [x] Board item #522 ("Validate: alembic upgrade head") — in
todo, API schema changes. No direct conflict for a CSS restyling ticket.
Acceptance Criteria
- "Board view matches playground-approved design" — testable by visual comparison, but playground must be approved first (dependency blocker)
- "Real API data renders correctly" — ALREADY IMPLEMENTED. Current +page.svelte loads and renders real API data via client-side fetch.
- "Drag-and-drop works with optimistic updates" — ALREADY IMPLEMENTED. Lines 67-87 show optimistic update logic with itemsByColumn state.
- "Auth gating: board mutations require login" — ALREADY IMPLEMENTED. Line 32:
isAuthenticatedderived state controls mutation visibility.
Assessment: AC 2, 3, and 4 describe functionality that ALREADY EXISTS in the 1195-line board page. The only real AC is #1 — visual restyling to match the playground design. The AC should be rewritten to describe the actual delta (CSS/layout changes) and add a non-regression criterion for existing functionality.
Blast Radius
src/lib/columns.ts— shared column utilities used by the board page. Changes to column rendering could affect other consumers (e.g., ProjectLayout.svelte).src/lib/api-client.ts— board API functions already integrated. No blast radius unless API contract changes.src/lib/components/ProjectLayout.svelte— references boards in project view. If board card styling changes, project layout may need matching updates.- Rollback is straightforward — CSS-only changes to a single page.
Decomposition Assessment
2 file targets, 1 repo, 4 AC (though 3 already exist). Once scoped correctly to CSS/layout restyling only, the real work is: copy playground CSS classes into app.css and restyle the board page markup to match. Estimated agent time under 5 minutes. No decomposition needed — but AC must be refined first to reflect the actual delta.
No independent subtasks to parallelize. Single-agent, single-PR work.
Recommendation
[BODY]Fix repo reference:forgejo_admin/pal-e-apptoforgejo_admin/pal-e-docs-app[BODY]Remove stale "do not touch" reference tosrc/routes/boards/[slug]/+page.server.ts— file does not exist (app uses adapter-static with client-side loading)[BODY]Rewrite AC to reflect actual delta: AC 2/3/4 already exist. Real AC should be "board page CSS/layout matches playground-approved design" and "existing drag-drop/auth/API functionality preserved (no regressions)"[BODY]Add explicit dependency note: "Blocked by issue #46 (playground kanban prototype) — must reach done before this ticket moves to next_up"[LABEL]Addarch:frontendlabel to board item #298[SCOPE]Clarify: is this a full rewrite of +page.svelte (1195 lines) or a CSS-only restyling? The current page has extensive working logic. "Copy-paste from playground + data bindings" undersells the existing 1195-line implementation. The playground is 132 lines of static HTML; the app page is 1195 lines of working Svelte with drag-drop, filters, optimistic updates. The real task is likely "restyle the existing board page to match the playground CSS" — not a copy-paste replacement.