Review: Day detail page: property picker for quick-add to day queue

review-1475-2026-06-15 Review

review ready

Verdict: READY

Template Completeness

  • [x] Type
  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Feature Flag
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related
All required sections for a Feature issue are present and well-populated.

Traceability

  • [x] story:weekly-tracking label — "Track weekly completion across all active properties"
  • [x] story note verified — found in project-landscaping-assistant user-stories table (row: weekly-tracking)
  • [x] arch:rails-app label — Rails application component
  • [ ] arch note MISSING — no arch-rails-app note found in pal-e-docs. However, this is the primary application repo and its architecture is documented in-repo at docs/app-architecture.md. This is a systemic gap across the entire board, not specific to this ticket. Acceptable for now.
  • [x] Forgejo issue — ldraney/landscaping-assistant#237, state: open

File Targets

  • [ ] app/controllers/days_controller.rb — does NOT exist yet. This is expected: the controller is created by dependency #234 (day detail page: controller, route, and basic show view). The ticket correctly documents this dependency. The add_to_queue action will be added to the controller once #234 lands.
  • [x] config/routes.rb — verified exists. Currently has no /days routes. The proposed route post "/days/:date/add" will be added here. No conflicts with existing routes.
  • [ ] app/views/days/show.html.erb — does NOT exist yet. Same dependency on #234. Expected.
  • [x] app/javascript/controllers/property_picker_controller.js — verified exists and matches description. Stimulus controller with input, dropdown, option, form, propertyId, clientName targets. The reuse approach is sound — the same HTML structure from work_queue_items/index.html.erb (lines 28-63) can be replicated on the day detail page.
  • [x] app/controllers/work_queue_items_controller.rb — verified exists. The create action (line ~62-119) provides the pattern to follow for WorkQueueItem creation, turbo stream responses, and duplicate handling.

Repo Placement

OK. Issue is filed on ldraney/landscaping-assistant and all file targets are in this repo. Single-repo change.

Dependencies

  • #234 (Day detail page: controller, route, and basic show view) — BLOCKING. State: open. Board item #1472 in backlog. The days controller, route, and show view do not exist yet. This ticket cannot be implemented until #234 is merged. Dependency is correctly documented in the issue body.
  • #236 (DayExclusion model and remove-from-list button) — Optional integration. State: open. Board item #1474 in backlog. The DayExclusion model does not exist yet (no model file, no migration). The ticket correctly handles this with a guard clause (defined?(DayExclusion) or table_exists?). Well-scoped defensive coding.
  • #233 (parent, decomposed) — State: open. This is ticket 4 of 4 in the decomposition. Ordering is logical: #234 (controller) -> #235 (Previously accordion) -> #236 (DayExclusion) -> #237 (property picker).

Acceptance Criteria

5 acceptance criteria, all testable by an agent:
  • "Property picker search/autocomplete appears" — verifiable via view inspection
  • "Selecting creates a WorkQueueItem" — verifiable via request spec
  • "Already queued properties marked in dropdown" — verifiable via view logic inspection
  • "Turbo stream response appends" — verifiable via request spec with turbo stream format
  • "DayExclusion removal on add" — verifiable via request spec (with guard for #236 not landed)
Test expectations are concrete with a specific run command (bundle exec rspec spec/requests/days_spec.rb). 4 request specs cover the key paths.

Blast Radius

Low. The property picker Stimulus controller is reused as-is (no modifications). The new add_to_queue action is isolated to the new days controller. The WorkQueueItem creation follows an established pattern. No changes to the Today tab's WorkQueueItemsController. The form posts to a different URL (/days/:date/add vs /today), so no collision.
One consideration: the property picker HTML in work_queue_items/index.html.erb (lines 28-63) will be duplicated in days/show.html.erb. A shared partial could reduce duplication, but that is a future refactor concern, not a scope issue for this ticket.

Decomposition Assessment

No decomposition needed:
  • 3 file targets in 1 repo — under threshold
  • 5 acceptance criteria — at threshold but manageable
  • Estimated agent time: ~3-4 minutes (controller action, route, view addition, request specs)
  • Well-scoped 2-point ticket

Recommendation

No action needed. Scope is solid, dependencies are documented and correctly ordered, file targets are accurate (accounting for the #234 dependency), and the ticket fits in a single agent pass.