Review: Drag-to-reorder work queue

review-1249-2026-05-24-v2 Review

review ready

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 has resources :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 done column -- 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.