Review: Day detail page: controller, route, and basic show view

review-1472-2026-06-16 Review

review ready

Verdict: READY

Re-review of board item #1472. Previous review (review-1472-2026-06-15) flagged two issues: (1) invalid issue references in Related section, (2) ambiguous role gating. Both fixes verified adequate.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Decomposed from #233 (1 of 4)
  • [x] Repo -- ldraney/landscaping-assistant
  • [x] User Story -- As an admin or super admin
  • [x] Context -- Detailed motivation and rationale
  • [x] File Targets -- 3 to create, 2 to modify, 2 NOT-touch guards
  • [x] Feature Flag -- none (with rationale: new route, not toggle)
  • [x] Acceptance Criteria -- 6 items
  • [x] Test Expectations -- 7 items with run command
  • [x] Constraints -- 4 items
  • [x] Checklist -- present
  • [x] Related -- present, all references verified valid

Traceability

  • [x] story:weekly-tracking label -- verified in project-landscaping-assistant user-stories table
  • [x] arch:rails-app label -- main app architecture, documented in repo docs/app-architecture.md
  • [x] Forgejo issue #234 -- open, valid URL

File Targets

  • [x] config/routes.rb -- verified exists, no existing /days route, modification target clear
  • [x] app/views/weeks/index.html.erb line 81 -- verified: currently work_queue_items_path(date: day), matches ticket claim exactly
  • [x] app/controllers/days_controller.rb -- confirmed does not exist yet (to create)
  • [x] app/views/days/show.html.erb -- confirmed does not exist yet (to create)
  • [x] spec/requests/days_spec.rb -- confirmed does not exist yet (to create)
  • [x] WorkQueueItem.where(work_date: @date) -- confirmed work_date field exists on model (validates :work_date, presence: true)
  • [x] require_role :admin, :super_admin -- confirmed exact pattern used in WeeksController line 2
  • [x] authenticate_user! -- confirmed as before_action in ApplicationController line 13 (inherited automatically)

Repo Placement

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

Dependencies

  • Parent: #233 (decomposed) -- open, verified
  • Blocked by: nothing -- this is the foundation ticket
  • Blocks: #235, #236, #237 -- all verified open on Forgejo, all exist as board items (#1473, #1474, #1475)
  • Dependencies documented correctly in issue Related section

Acceptance Criteria

All 6 AC are concrete and agent-verifiable:
  • GET /days/2026-06-17 returns 200 -- verifiable via request spec
  • Page shows queued properties -- verifiable via response body check
  • Back link to Week tab -- verifiable via response body link check
  • Week tab day labels updated -- verifiable by checking weeks/index.html.erb output
  • Invalid date handling -- verifiable via redirect check
  • Non-admin role denial -- verifiable via role-based request specs
Test Expectations map 1:1 to AC with concrete run command: bundle exec rspec spec/requests/days_spec.rb

Blast Radius

Low. New controller and route with no modification to existing Today/WorkQueueItems behavior. The only modification to existing code is the link target on weeks/index.html.erb line 81 (changing path helper). NOT-touch guards explicitly protect the Today view files. No downstream consumers affected beyond the Week tab link change.

Decomposition Assessment

3 files to create, 2 files to modify, all in 1 repo. 6 AC. Estimated agent work well under 5 minutes -- this is a straightforward controller/view/route/spec ticket. No decomposition needed.

Previous Review Fixes Verified

  • [x] Fix 1 (invalid issue references): Related section now references #233 (parent, verified open), #235/#236/#237 (blockers, all verified open). No invalid references remain.
  • [x] Fix 2 (ambiguous role gating): Role gating is now explicit in three places -- User Story ("As an admin or super admin"), Context paragraph (dedicated explanation of why admin/super_admin only), and File Targets (require_role :admin, :super_admin). Matches WeeksController pattern exactly.

Recommendation

No action needed.