Review: Person icon: route to My Profile / My Property views

review-1363-2026-06-06 Review

review ready

Verdict: READY

Board item #1363 on board-landscaping-assistant (backlog, 3 points)
Forgejo issue: ldraney/landscaping-assistant#137
Labels: type:feature, arch:rails-app, story:auth, phase:2

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Discovered during PR #136 review
  • [x] Repo -- ldraney/landscaping-assistant
  • [x] User Story
  • [x] Context
  • [x] File Targets (create + modify + NOT touch)
  • [x] Acceptance Criteria
  • [x] Out of Scope
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related
All required sections for Feature type are present and filled.

Traceability

  • [x] story:auth label present
  • [ ] story note MISSING -- no "auth" entry in project-landscaping-assistant user-stories section. Known systemic gap, deferred -- not blocking.
  • [x] arch:rails-app label present
  • [ ] arch note MISSING -- no arch-rails-app note in pal-e-docs. Known systemic gap, deferred -- not blocking.
  • [x] Forgejo issue -- ldraney/landscaping-assistant#137, open

File Targets

Files to create (confirmed do NOT exist yet):
  • [x] app/controllers/person_controller.rb -- does not exist, ready to create
  • [x] app/views/person/index.html.erb -- does not exist, ready to create
  • [x] spec/requests/person_spec.rb -- does not exist, ready to create
Files to modify (confirmed exist with expected content):
  • [x] app/views/layouts/application.html.erb -- line 64 confirmed: link_to root_path for Person icon. Platform sub-nav at lines 69-74 confirmed for super_admin.
  • [x] config/routes.rb -- no person route exists yet. resources :person, only: [:index] verified to generate person_index GET /person person#index with helper person_index_path.
  • [x] app/assets/stylesheets/application.css -- exists, ready for Person view styles
Files NOT to touch (confirmed exist and working):
  • [x] app/controllers/platform/feature_flags_controller.rb -- exists
  • [x] app/views/platform/feature_flags/index.html.erb -- exists
  • [x] app/controllers/sessions_controller.rb -- exists
  • [x] app/controllers/application_controller.rb -- exists, role helpers confirmed: current_user_has_role?, visible_tabs, current_user returning session hash with :username, :email, :roles keys

Repo Placement

OK -- issue filed on ldraney/landscaping-assistant, all file targets are in this repo. Single-repo change.

Dependencies

  • #107 / PR #136 (5-slot nav with Person placeholder) -- done, merged
  • #130 / PR #144 (Platform feature flags UI under Person) -- done, merged
  • #123 (Client request UI / My Property detail) -- correctly listed as out of scope / future
  • #117 (Crew tab) -- sibling phase:2 work, no dependency
No blockers. All prerequisites are complete.

Acceptance Criteria

7 acceptance criteria, all testable by an agent:
  • Person icon navigation -- verifiable via request spec checking redirect/response
  • Profile section content -- verifiable via response body assertions
  • Crew join form placeholder -- verifiable via response body assertions
  • My Property client-only visibility -- verifiable via role-based request specs
  • Platform link super_admin-only -- verifiable via role-based request specs
  • All-role access -- verifiable with 5-role parameterized specs
  • Dev mode graceful degradation -- verifiable by running specs without KEYCLOAK_URL
6 test expectations with specific run command: bundle exec rspec spec/requests/person_spec.rb. Existing request spec patterns in spec/requests/ (12 files) provide clear templates to follow.

Blast Radius

Minimal. Only change to existing views is updating one link_to target on line 64 of the layout (root_path -> person_index_path). The Platform sub-nav (lines 69-74) remains untouched. No other files reference "person" in a way that would conflict. The is-active logic on the Person tab will need updating to check controller_name == 'person' instead of the current work_queue_items fallback -- this is implicit in the ticket but not explicitly called out as an AC. The implementing agent should handle this naturally.

Decomposition Assessment

3 files to create + 3 files to modify = 6 file targets, all in one repo. 7 AC (at the threshold). The work is cohesive: one controller, one view, one route entry, one CSS section, one link update, and one spec file. Estimated agent work: ~4 minutes. No decomposition needed.

Recommendation

No action needed. Ticket is well-scoped and ready for implementation.
Note: The two systemic gaps (missing story:auth user story on project page, missing arch-rails-app note) are known and deferred per reviewer instructions. These should be addressed as a separate housekeeping pass across all story:auth / arch:rails-app tickets.