Review: Property active/inactive status

review-1251-2026-05-24 Review

review ready

Verdict: READY

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Child of #8, Phase 1
  • [x] Repo — ldraney/landscaping-assistant
  • [x] User Story — As a landscaper, mark properties active/inactive
  • [x] Context — Foundation for weekly tracking
  • [x] File Targets — 4 files to modify/create, 2 exclusions listed
  • [x] Acceptance Criteria — 4 criteria
  • [x] Test Expectations — 2 test cases + run command
  • [x] Constraints — 3 constraints listed
  • [x] Checklist — present
  • [x] Related — present

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 (key: weekly-tracking, success metric: "Week view shows completed/total, inactive properties excluded")
  • [x] arch:rails-app label — Rails app architecture component
  • [x] arch note verified — arch-rails-app note exists in pal-e-docs (has data-model, controllers, views sections)
  • [x] Forgejo issue — ldraney/landscaping-assistant#9, state: open

File Targets

  • [x] db/migrate/xxx_add_active_to_properties.rb — new file (migration dir exists, no active column yet in schema)
  • [x] app/models/property.rb — verified: exists, currently has associations and validations, no scope yet. Adding scope :active is straightforward.
  • [x] app/controllers/work_queue_items_controller.rb — verified: line 5 has @properties = Property.includes(:services, :work_queue_items).order(updated_at: :desc). Adding .active scope here is the correct change.
  • [x] app/controllers/properties_controller.rb — verified: exists. The find_or_create_by! in resolve would use DB default (true), which is correct. No explicit code change strictly needed here — the migration default handles it.

Repo Placement

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

Dependencies

  • Parent ticket #8 (board item #1250) is in backlog — no blocker since this is a decomposed phase.
  • Board item #1248 (nav + work queue, issue #5) is in done — the work_queue_items_controller already exists, no conflict.
  • No blocking dependencies. This can proceed independently.

Acceptance Criteria

All 4 criteria are testable by an agent:
  • "active column exists" — verifiable via schema check or rails db:migrate + column inspection
  • "Property.active scope" — verifiable via model spec
  • "Today queue only shows active" — verifiable via request spec on /today endpoint
  • "Existing properties default to active" — verifiable via migration (default: true)
Test run command (bundle exec rspec) is valid.

Blast Radius

Low. The active scope only filters in the work queue index. The properties index view (properties/index.html.erb) is not affected (it lists all properties for CRUD). No downstream consumers beyond this single app. No sibling services.

Decomposition Assessment

No decomposition needed. 4 file targets in 1 repo, 4 acceptance criteria, estimated agent work well under 5 minutes. This is a focused schema + scope + filter change.

Recommendation

No action needed.