Review: feat: group kanban cards by phase within columns (re-review)
Verdict: APPROVED
Re-review after refinement. Previous review (
review-1342-2026-06-06) found 6 issues: wrong CSS path, missing kanban_controller.js file target, underspecified drag AC, and missing traceability notes. All 6 have been addressed in the updated issue body and pal-e-docs.Template Completeness
- [x] Type -- Feature
- [x] Lineage
- [x] Repo -- ldraney/paldocs
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Traceability
- [x] story:kanban label -- present on board item
- [x] story note verified --
story-paldocs-kanbanexists in pal-e-docs (note_type: doc, project: paldocs) - [ ] project page user-stories section NOT updated -- still says "No user-story notes created yet." The note exists but the project page does not reference it. Minor gap, does not block ticket. [SCOPE] Update project-paldocs user-stories section to reference story-paldocs-kanban.
- [x] arch:rails-views label -- present on board item
- [x] arch note verified --
arch-rails-viewsexists in pal-e-docs (note_type: doc, project: paldocs, sections: Conventions, Key Files) - [x] Forgejo issue -- ldraney/paldocs#11, state: open
File Targets
- [x]
app/controllers/boards_controller.rb-- verified: exists, 9 lines. Currently groups items by column via flat position ordering. Correct target for adding phase grouping logic. - [x]
app/views/boards/show.html.erb-- verified: exists, 30 lines. Iterates columns and renders cards in flat list. Correct target for phase group headers. - [x]
app/views/board_items/_card.html.erb-- verified: exists, 45 lines. Already renders labels as badges. Correct target for phase badge styling. - [x]
app/assets/stylesheets/application.css-- verified: exists, 676 lines. Kanban styles at lines 453-676 (confirmed: line 453 is.kanban {, line 676 closes the last media query). Issue correctly identifies the line range. Previously flagged as wrong path (kanban.css) -- now fixed. - [x]
app/javascript/controllers/kanban_controller.js-- verified: exists, 199 lines. All 5 methods cited in the issue confirmed:_dropPosition(line 179),drop(line 45),cardClick(line 73),moveUp(line 124),moveDown(line 139). Issue correctly describes flat-list assumptions that will break with nested containers. Previously missing from File Targets -- now added with detailed method notes.
Repo Placement
OK -- issue filed on ldraney/paldocs, repo field says ldraney/paldocs, all 5 file targets are in this repo. Single-repo change.
Dependencies
- Item #1221 (done) -- "Interactive kanban board -- drag-and-drop columns with Turbo + Stimulus" -- the predecessor feature. Complete.
- Item #1345 (in_progress) -- "spike: audit infra/pipeline gaps" -- independent, no conflict.
- Item #1343 (backlog) -- "feat: render project page note content" -- shares arch:rails-views label but is independent work on a different view.
- Item #1344 (backlog) -- "feat: add Postgres trigger to bump projects.updated_at" -- independent DB work.
- No blocking dependencies. No conflicts with in-progress items.
Acceptance Criteria
7 acceptance criteria. All are manually testable. Improvements from previous review:
- AC #5 now explicitly covers drag-and-drop across phase groups within the same column (previously missing).
- AC #6 covers cross-column drag with phase group targeting.
- AC #7 specifies ordering rule: "ordered by position of the phase board item within the column" (previously ambiguous).
- All AC are verifiable via manual browser testing.
Blast Radius
Low. The kanban Stimulus controller is the only drag-and-drop controller in the app. No sibling services use it. CSS changes are in the single application.css file. The constraint "no schema changes" correctly limits blast radius to view/controller/JS layers. The main risk (breaking existing drag-and-drop) is acknowledged in the File Targets note for kanban_controller.js.
Decomposition Assessment
5 file targets in 1 repo, 7 acceptance criteria. The AC count (7) exceeds the >5 threshold. However, the criteria are tightly coupled -- all aspects of a single visual grouping feature across one controller, one view, one partial, one CSS file, and one JS controller. Decomposing would create artificial boundaries between inseparable concerns. At 5 story points and single-repo scope, this is feasible in one agent pass. No decomposition needed.
Previous Review Findings -- Resolution Status
- [x] [BODY] CSS path fixed:
kanban.csscorrected toapplication.csswith line range (453-676) - [x] [BODY] kanban_controller.js added to File Targets with detailed method-level notes
- [x] [BODY] Phase group ordering clarified in AC #7
- [x] [BODY] Cross-phase-group drag AC added (AC #5 and #6)
- [x] [SCOPE] story-paldocs-kanban note created
- [x] [SCOPE] arch-rails-views note created
Recommendations
- [SCOPE] Update project-paldocs user-stories section to reference story-paldocs-kanban (minor -- does not block ticket advancement)
No other action needed. Ticket is ready for development.