Review: Properties tab: proximity-based default sort order

review-1451-2026-06-13-r2 Review

review ready

Verdict: READY

Re-review after refinement. Previous review review-1451-2026-06-13 found one [BODY] issue: app/controllers/work_queue_items_controller.rb was missing from the do-not-touch list. That has been fixed.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- present
  • [x] Repo -- ldraney/landscaping-assistant
  • [x] User Story -- present, well-formed
  • [x] Context -- present, explains paper schedule mental model
  • [x] File Targets -- present, 3 modify targets + 3 do-not-touch
  • [x] Feature Flag -- present, set to "none" with rationale
  • [x] Acceptance Criteria -- present, 5 criteria
  • [x] Test Expectations -- present, 3 test cases + run command
  • [x] Constraints -- present, 4 constraints
  • [x] Checklist -- present
  • [x] Related -- present

Traceability

  • [x] story:property-crud label -- "Add/edit/delete client properties"
  • [x] story note verified -- found in project-landscaping-assistant user-stories section (key: property-crud, role: Landscaper)
  • [x] arch:rails-app label -- Rails application component
  • [ ] arch note MISSING -- [SCOPE] Create architecture note arch-rails-app for the Rails application component (non-blocking, shared across many board items)
  • [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/landscaping-assistant/issues/205, open

File Targets

  • [x] app/controllers/properties_controller.rb -- verified: line 10 sorts by LOWER(client_name), :address_line in the manage action
  • [x] app/controllers/weeks_controller.rb -- verified: line 10 sorts by LOWER(client_name) in the index action
  • [x] app/models/property.rb -- verified: no by_proximity scope exists yet; latitude and longitude float columns confirmed in schema (db/schema.rb lines 70-71)
  • [x] Do-not-touch: db/schema.rb -- correct, lat/lng columns already exist
  • [x] Do-not-touch: app/models/work_queue_item.rb -- correct, queue ordering is user-defined
  • [x] Do-not-touch: app/controllers/work_queue_items_controller.rb -- verified: line 16 sorts by updated_at: :desc for add-to-queue dropdown, intentionally different. FIX FROM PREVIOUS REVIEW CONFIRMED.

Repo Placement

OK -- issue is filed on ldraney/landscaping-assistant and all file targets are in the same repo. Single-repo change.

Dependencies

No blocking dependencies found on the board. The latitude and longitude columns already exist in the schema. The Add Location feature (already shipped) populates these fields. No other board items block or are blocked by this ticket.

Acceptance Criteria

All 5 criteria are testable and well-scoped. The "deterministic" criterion is important -- nearest-neighbor chains can produce different results depending on the starting point, so the base point must be fixed. The test expectations provide clear unit and request test guidance with a concrete run command (bundle exec rspec spec/models/property_spec.rb spec/requests/properties_spec.rb).

Blast Radius

Full controller grep confirms only 3 locations load and sort properties:
  • PropertiesController#manage (line 10) -- IN SCOPE, will change to proximity sort
  • WeeksController#index (line 10) -- IN SCOPE, will change to proximity sort
  • WorkQueueItemsController#index (line 16) -- correctly listed in do-not-touch, sorts by updated_at: :desc
No other controllers reference Property sorting. No downstream consumers affected.

Decomposition Assessment

3 file targets in 1 repo, 5 acceptance criteria, straightforward greedy nearest-neighbor algorithm. Estimated agent work well under 5 minutes. No decomposition needed.

Recommendation

  • [SCOPE] Create architecture note arch-rails-app for the Rails application component (shared across many board items, not blocking for this ticket)
No other action needed. The sole [BODY] issue from the previous review has been resolved.