Review: Onboarding flow, solo-to-business transition, and activity feed

review-1340-2026-07-04 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Child of #107
  • [x] Repo -- ldraney/landscaping-assistant
  • [x] User Story -- present
  • [x] Context -- present (detailed)
  • [x] File Targets -- present but marked "TBD"
  • [ ] Feature Flag -- MISSING (required for Feature type)
  • [x] Acceptance Criteria -- present (12 items)
  • [x] Test Expectations -- present
  • [x] Constraints -- present
  • [x] Checklist -- present
  • [x] Related -- present

Traceability

  • [x] story:auth label -- "Auth: Log in with Keycloak, see role-appropriate tabs and features"
  • [x] story note verified -- found in project-landscaping-assistant user-stories section
  • [x] arch:rails-app label -- present on board item
  • [ ] arch note MISSING -- [SCOPE] Create architecture note arch-rails-app for the Rails app component
  • [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/landscaping-assistant/issues/118, open

File Targets

  • [x] app/controllers/registrations_controller.rb (new) -- does not exist yet, OK
  • [x] app/controllers/business_requests_controller.rb (new) -- does not exist yet, OK
  • [x] app/models/business.rb (new) -- does not exist yet, OK
  • [x] app/models/property.rb -- verified: exists, has_many associations, scope :owned_by, no business_id yet
  • [x] app/models/user_business.rb (new) -- does not exist yet, OK
  • [x] app/views/sessions/new.html.erb -- verified: exists
  • [x] app/controllers/activity_feed_controller.rb (new) -- does not exist yet, OK
  • [ ] app/models/property_comment.rb -- ISSUE: listed as "(new)" but already exists. Has belongs_to :property, belongs_to :crew_member, photo attachments (up to 5 photos), body validation. Crew can already post comments with photos on properties.
  • [ ] app/controllers/join_crew_controller.rb -- ISSUE: exists in codebase (empty controller) but not mentioned in file targets. Directly relevant to "join business" flow.

Repo Placement

Issue filed on ldraney/landscaping-assistant -- correct for the Rails app work. However, cross-repo work is not explicitly scoped:
  • Keycloak self-registration may require realm config changes (pal-e-services or keycloak-theme repo)
  • Telegram alert routing is in pal-e-platform (PR #410 mentioned in constraints)
  • Multiple repos affected but no separate Forgejo issues planned for non-Rails work

Dependencies

  • #107 (parent auth issue) -- referenced, not on board
  • #115 / #1337 (Phase 1: Keycloak login) -- done
  • #117 / #1339 (Crew tab) -- done
  • #1403 (Property detail: Projects section) -- in todo, also story:auth phase:3. Potential ordering dependency.
  • #1574 (Crew/team grouping) -- in backlog. Title: "Crew/team grouping: model, scoping, controller updates, and digester integration". Significant overlap with this ticket's business/crew model concepts. Relationship not documented.

Acceptance Criteria

12 acceptance criteria. Assessment:
  • AC 1-7, 9-12: testable via request specs
  • AC 8: "Properties created while solo are preserved (exact handling TBD)" -- NOT TESTABLE. Contains explicit TBD. Must specify exact behavior (archive, transfer, or hide) before implementation.
  • AC 10: "Crew can post questions and photos on properties" -- partially already implemented (PropertyComment model exists with photo support). Needs clarification on what's new vs existing.
  • AC 5: "Business admin receives Telegram alert" -- testable but cross-system, requires pal-e-platform integration

Blast Radius

  • Property model multi-tenancy: Adding business_id to Property affects ALL property queries. Current scoping uses owned_by(sub) (Keycloak subject). Switching to business_id-based scoping touches: properties_controller, work_queue_items_controller, weeks_controller, days_controller, uploads_controller, and all property-dependent views.
  • Role system: Current role enforcement uses Keycloak realm roles (member, lead, admin, super_admin) via ApplicationController#require_role. The "solo" concept (user is their own admin) has no current analog. Tab visibility is hardcoded in TAB_ROLES constant.
  • Existing crew model: CrewMember model already exists and is used for property comments. The new UserBusiness join table concept may conflict or need to integrate with existing CrewMember associations.

Decomposition Assessment

NEEDS DECOMPOSITION -- exceeds all thresholds:
  • 9+ file targets across 3+ repos (landscaping-assistant, keycloak/pal-e-services, pal-e-platform)
  • 12 acceptance criteria (threshold: 5)
  • Estimated agent work: days, not minutes
  • The issue itself states: "This ticket is a planning/umbrella ticket -- break into sub-tickets before implementation"
  • Checklist item "Sub-tickets created for each deliverable" is unchecked

Recommendations

  • [BODY] Add Feature Flag section -- this multi-part feature needs a flag strategy (likely multiple flags: one for self-registration, one for business join, one for activity feed)
  • [BODY] Fix property_comment.rb: listed as "(new)" but already exists with photo upload support. Clarify what's new vs existing.
  • [BODY] AC #8: remove TBD -- must specify exact property transition behavior (archive, transfer, or hide) before implementation can begin
  • [BODY] Add join_crew_controller.rb to file targets -- it already exists and is directly relevant to the "join business" flow
  • [BODY] Document relationship with #1574 (Crew/team grouping) -- significant concept overlap needs resolution
  • [BODY] Scope cross-repo work explicitly: Keycloak realm config changes, pal-e-platform Telegram integration
  • [SCOPE] Create architecture note arch-rails-app for the Rails app component
  • [DECOMPOSE] 12 AC across 9+ files and 3+ repos. Route to skill-decompose-ticket. Suggested sub-ticket breakdown: (1) Self-registration + Keycloak config, (2) Business model + multi-tenancy migration, (3) Join-business request flow + Telegram alert, (4) Role transition (solo-to-crew) + property scoping, (5) Activity feed for admin, (6) Tab layout updates