Review: Drag-to-reorder work queue
Verdict: APPROVED
Re-review of board item #1249. Prior review (review-1249-2026-05-24) returned NEEDS_REFINEMENT for two missing traceability items. Both have been addressed.
Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Traceability
- [x] story:work-queue label -- "Queue properties for today and reorder route"
- [x] story note verified -- found in project-landscaping-assistant user-stories table (row: work-queue, Landscaper, "Queue properties for today and reorder route", "Drag-to-reorder, complete/uncomplete toggle, Turbo Stream updates")
- [x] arch:rails-app label -- Rails application component
- [x] arch note verified -- arch-rails-app-pal-enterprises exists as the shared arch note for this label; project-landscaping-assistant Architecture section documents project-specific details (monolithic Rails 8.1.3, Hotwire, Stimulus controllers including sortable)
- [x] Forgejo issue -- ldraney/landscaping-assistant#7, state: open
File Targets
- [x]
app/javascript/controllers/sortable_controller.js-- new file (controllers/ dir verified, filter_controller.js exists as pattern reference) - [x]
app/controllers/work_queue_items_controller.rb-- verified exists - [x]
app/views/work_queue_items/_queue_item.html.erb-- verified exists - [x]
app/views/work_queue_items/index.html.erb-- verified exists - [x]
config/routes.rb-- verified exists, currently hasresources :work_queue_items, path: "today", only: [ :index, :create, :update, :destroy ] - [x]
config/importmap.rb-- verified exists, uses pin_all_from for controllers - [x]
app/assets/stylesheets/application.css-- verified exists
Repo Placement
OK. Issue filed on ldraney/landscaping-assistant, all file targets are within this repo. Single-repo change.
Dependencies
- Board item #1248 (Add navigation and daily work queue) is in
donecolumn -- this is the prerequisite and it's completed. - No blocking dependencies. Items #1250, #1251, #1252 (weekly-tracking story) are independent and in backlog.
- External dependency: Sortable.js library (pinned via importmap CDN, no vendor bundling required).
Acceptance Criteria
6 AC, all testable by an agent:
- Drag handle visible -- visual check via view template inspection
- Drag-and-drop reorders -- Sortable.js + Stimulus controller wiring
- Positions persist -- request spec for POST reorder endpoint
- Mobile touch drag -- Sortable.js handles this natively
- Turbo-compatible -- no full reload, verified by Turbo Stream pattern
- Completed items reorderable -- no position-locking logic
All criteria are verifiable. Test expectations include request spec and model spec with run command.
Blast Radius
Low. No other services consume the work_queue_items position ordering. The
position column already exists in the schema with default 0. Current queries use order(:position) so reordering won't break existing behavior. No sortable/drag patterns exist in the app codebase currently (only in vendor gems).Decomposition Assessment
7 file targets in 1 repo. 6 acceptance criteria. Estimated agent time: 3-4 minutes for a focused implementation. Within the 5-minute rule -- no decomposition needed.
Recommendation
No action needed. Ticket is ready for implementation.