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

review-1472-2026-06-15 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Decomposed from #233 (1 of 4)
  • [x] Repo -- ldraney/landscaping-assistant
  • [x] User Story -- present
  • [x] Context -- present, well-written
  • [x] File Targets -- present, includes create/modify/NOT-touch
  • [x] Feature Flag -- none (with rationale)
  • [x] Acceptance Criteria -- 5 items
  • [x] Test Expectations -- 6 items with run command
  • [x] Constraints -- present
  • [x] Checklist -- present
  • [x] Related -- present

Traceability

  • [x] story:weekly-tracking label -- present on board item
  • [x] story note verified -- "weekly-tracking" found in project-landscaping-assistant user-stories table: "Track weekly completion across all active properties"
  • [x] arch:rails-app label -- present on board item
  • [ ] arch note MISSING -- [SCOPE] No arch-rails-app note found in pal-e-docs. This label is used across 30+ board items. Create architecture note arch-rails-app for the Rails application component.
  • [x] Forgejo issue -- #234, state: open

File Targets

  • [x] app/controllers/days_controller.rb -- TO CREATE: does not exist yet (correct)
  • [x] app/views/days/show.html.erb -- TO CREATE: does not exist yet (correct)
  • [x] spec/requests/days_spec.rb -- TO CREATE: does not exist yet (correct)
  • [x] config/routes.rb -- TO MODIFY: exists, currently has no days route (confirmed)
  • [x] app/views/weeks/index.html.erb -- TO MODIFY: exists (117 lines), line 81 confirmed: link_to work_queue_items_path(date: day) exactly as described
  • [x] app/controllers/work_queue_items_controller.rb -- NOT TOUCH: exists (confirmed)
  • [x] app/views/work_queue_items/ -- NOT TOUCH: exists (confirmed)

Repo Placement

OK -- issue filed on ldraney/landscaping-assistant, all file targets are in the same repo.

Dependencies

  • Parent: #233 (decomposed parent, open) -- correctly documented
  • Siblings on board: #235 (item 1473), #236 (item 1474), #237 (item 1475) -- all in backlog, all depend on this ticket landing first
  • No blockers for this ticket -- correctly documented
  • The WorkQueueItem model exists with work_date field and belongs_to :property -- query pattern in ticket is valid

Acceptance Criteria

  • [x] All 5 AC are testable by an agent via request specs
  • [x] Test expectations map well to acceptance criteria
  • [ ] ISSUE: AC says "requires authentication" in test expectations but the ticket's Constraints section says "auth via authenticate_user!, role gating via require_role" without specifying WHICH roles. The user story says "crew lead or admin" but the Week tab (where day links originate) is gated to :admin, :super_admin only. Crew leads cannot see the Week tab. The DaysController role gating needs clarification. [BODY] Add explicit role list to Constraints: specify require_role :admin, :super_admin to match Week tab access, OR intentionally broaden to :lead, :admin, :super_admin with a note that crew leads can access day pages via direct URL even though they cannot see the Week tab.

Blast Radius

  • Only one location in the codebase links from weeks to today with a date param (line 81 of weeks/index.html.erb) -- correctly identified in ticket
  • Other work_queue_items_path(date:) references are in work_queue_items views (Today tab internals) and should NOT be changed -- correctly excluded
  • New route /days/:date does not conflict with any existing routes
  • No CSS or JS blast radius -- ticket specifies matching existing patterns

Decomposition Assessment

3 files to create + 2 files to modify = 5 file targets, all in one repo. 5 acceptance criteria + 6 test expectations. Estimated agent work: 3-4 minutes. No decomposition needed.

Recommendations

  • [BODY] Fix "Blocks" references in Related section: "#234-2, #234-3, #234-4" are not valid Forgejo issue references. Replace with "#235, #236, #237" for proper traceability.
  • [BODY] Add explicit role gating to Constraints or File Targets: specify which roles the DaysController should allow. Current user story says "crew lead or admin" but Week tab is admin-only. Either narrow user story to "admin" or explicitly state require_role :lead, :admin, :super_admin and accept that crew leads reach day pages via direct URL only.
  • [SCOPE] Create architecture note arch-rails-app for the Rails application component. This label is used across 30+ board items and has no backing note.