Review: Day detail page: property picker for quick-add to day queue
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-appnote found in pal-e-docs. However, this is the primary application repo and its architecture is documented in-repo atdocs/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. Theadd_to_queueaction will be added to the controller once #234 lands. - [x]
config/routes.rb— verified exists. Currently has no/daysroutes. The proposed routepost "/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 fromwork_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. Thecreateaction (line ~62-119) provides the pattern to follow forWorkQueueItemcreation, 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
DayExclusionmodel does not exist yet (no model file, no migration). The ticket correctly handles this with a guard clause (defined?(DayExclusion)ortable_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.