Review: Integrate playground kanban into pal-e-app

review-298-2026-03-27 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Standalone, board-pal-e-docs kanban MVP
  • [x] Repo — forgejo_admin/pal-e-app
  • [x] User Story — present, clear
  • [x] Context — present
  • [x] File Targets — present
  • [x] Acceptance Criteria — 4 items
  • [x] Test Expectations — 3 items
  • [x] Constraints — present (no Tailwind, copy-paste from playground)
  • [x] Checklist — present
  • [x] Related — present

Traceability

  • [x] story:kanban-daily-review — daily review workflow
  • [ ] arch:X label — MISSING. Work touches frontend board component. Should be arch:frontend. Consistent gap across all kanban-daily-review items.
  • [x] Forgejo issue — forgejo_admin/pal-e-app#47, open

File Targets

  • [x] src/routes/boards/[slug]/+page.svelte — verified: exists (31k), contains board component with drag-and-drop, column rendering, item management
  • [x] src/app.css — verified: exists (35k), contains design tokens and column color vars
  • [ ] src/routes/boards/[slug]/+page.server.ts — STALE REFERENCE: listed in "Files NOT to touch" but file no longer exists. App migrated to adapter-static + client-side fetching (board item #414, done). Issue body needs update to remove this reference.

Repo Placement

OK. Issue filed on forgejo_admin/pal-e-app, all file targets are in pal-e-app. Single-repo scope.

Dependencies

  • BLOCKER: Board item #297 (Playground: kanban prototype, issue #46) is in_progress. This ticket explicitly depends on playground approval. Cannot move to next_up until #297 reaches done and Lucas approves the playground design.
  • Board item #474 (Port: board page, issue #72) is done — the current board page already ported from playground. This ticket would replace/enhance that work.

Acceptance Criteria

  • "Board view matches playground-approved design" — requires human visual comparison, not agent-automatable. Suggest adding: "screenshot comparison posted on PR"
  • "Real API data renders correctly" — testable, but no specific test command given
  • "Drag-and-drop works with optimistic updates" — testable manually, no automated test infrastructure for DnD in this repo
  • "Auth gating: board mutations require login" — testable, matches existing pattern in the codebase
Test Expectations reference "visual comparison" and manual interaction. No automated test commands specified — acceptable given frontend visual work, but agent verification will be limited to build success + no TypeScript errors.

Blast Radius

  • src/app.css is shared across all routes (35k). Merging CSS vars from playground could affect other pages if var names collide or existing vars are modified.
  • src/lib/columns.ts and src/lib/colors.ts are imported by the board page — changes to column handling could affect the boards list page (src/routes/boards/+page.svelte).
  • No other board-specific components exist outside the boards route.

Decomposition

2 file targets, 1 repo, 4 acceptance criteria — under thresholds. However, the existing +page.svelte is 31k and this is a full design replacement with drag-and-drop + optimistic updates + auth gating. Estimated agent time: borderline 5 minutes. Single agent pass is feasible if playground CSS is finalized, but tight. No decomposition needed if scope stays to "copy playground HTML + wire data bindings."

Recommendation

  • [LABEL] Add arch:frontend label to board item #298
  • [BODY] Remove stale reference to src/routes/boards/[slug]/+page.server.ts in "Files NOT to touch" — file no longer exists after adapter-static migration
  • [BODY] Add note that playground kanban board item #297 must be done before this moves to next_up
  • [SCOPE] Clarify: does "replace with playground-approved design" mean full rewrite of the 31k +page.svelte, or incremental CSS/layout changes on top of the existing ported board page (#72)?