Review: Week tab: show unassigned properties section

review-1264-2026-05-24 Review

review ready

Verdict: READY

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Child of #28
  • [x] Repo — ldraney/landscaping-assistant
  • [x] User Story — present and well-formed
  • [x] Context — explains motivation and references PR #29 convention
  • [x] File Targets — 3 modify targets, 2 do-not-touch entries
  • [x] Acceptance Criteria — 4 items
  • [x] Test Expectations — 2 integration tests + run command
  • [x] Constraints — No Tailwind, existing patterns, mobile-friendly
  • [x] Checklist — standard 3 items
  • [x] Related — project + parent ticket

Traceability

  • [x] story:weekly-tracking label — "Track weekly completion across all active properties"
  • [x] story note verified — found in project-landscaping-assistant user-stories section
  • [x] arch:rails-app label — Rails application component
  • [ ] arch note MISSING — [SCOPE] Create architecture note arch-rails-app for component rails-app
  • [x] Forgejo issue — ldraney/landscaping-assistant#30, open

File Targets

  • [x] app/controllers/weeks_controller.rb — verified: exists, currently queries Property.active and WorkQueueItem completions but has no unassigned logic yet
  • [x] app/views/weeks/index.html.erb — verified: exists, currently shows week grid with address_line as primary (line 31), client_name as secondary (line 32) — matches ticket's claim that swap is needed
  • [x] app/assets/stylesheets/application.css — verified: exists, will need unassigned section styles
  • [x] Do-not-touch: app/views/work_queue_items/ — confirmed separate concern
  • [x] Do-not-touch: config/routes.rb — no new routes needed for display-only feature

Repo Placement

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

Dependencies

  • Parent issue #28 ("Week tab: show unassigned properties, add to day, move between days") is open — this is a child decomposition of that parent. No blocker.
  • Board item #1265 ("Week tab: add property to a specific day") and #1266 ("Week tab: move property between days") are sibling tickets from the same parent — no ordering dependency, they are independent features.
  • PR #29 (client_name as primary convention) is already merged — prerequisite satisfied.
  • Property.active scope exists (line 6 of property.rb) — no model changes needed.
  • WorkQueueItem model already has work_date and property_id — query for unassigned is straightforward.

Acceptance Criteria

All 4 criteria are verifiable by an agent:
  • "Unassigned section shows below the week grid" — check DOM structure
  • "Lists active properties with no work_queue_item in the displayed week" — integration test with fixtures
  • "Week grid shows client_name as primary, address as secondary meta" — check HTML output order
  • "Empty state when all properties are scheduled" — test with all properties queued
Test command bin/rails test in the issue should be bundle exec rspec (project uses RSpec, not Minitest). However, existing spec file at spec/requests/weeks_spec.rb already provides patterns the agent can follow. Minor issue — agent can infer correct command from project setup.

Blast Radius

Low risk. The client_name swap only affects weeks/index.html.erb. Other views (work_queue_items, properties/manage) already use client_name as primary — this change brings Week tab into consistency. No downstream consumers affected.

Decomposition Assessment

3 file targets in 1 repo. 4 acceptance criteria. Estimated agent work: ~3 minutes. No decomposition needed.

Recommendation

  • [BODY] Fix test run command: bin/rails testbundle exec rspec (project uses RSpec)
  • [SCOPE] Create architecture note arch-rails-app for component rails-app (missing from pal-e-docs, shared across many board items)
Neither issue blocks implementation. The arch note is a platform-wide gap (affects all arch:rails-app items), not specific to this ticket. The test command is a minor documentation inaccuracy the agent will self-correct from project structure.