Review: Landing page: always-on, drives App Store downloads

review-1984-2026-08-02 Review

review approved

Verdict: APPROVED

Re-review after refinement. Previous review (NEEDS_REFINEMENT) identified one issue: wrong file target for feature flag. That issue has been corrected.

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- Present
  • [x] Repo -- Present (ldraney/landscaping-assistant)
  • [x] User Story -- Present
  • [x] Context -- Present
  • [x] File Targets -- Present (3 modify, 1 do-not-touch)
  • [x] Feature Flag -- Present ("none -- this ticket removes the public_landing flag")
  • [x] Acceptance Criteria -- Present (5 criteria)
  • [x] Test Expectations -- Present
  • [x] Constraints -- Present
  • [x] Checklist -- Present
  • [x] Related -- Present

Traceability

  • [x] story:app-store-submission label -- "Submit and maintain iOS App Store listing (privacy declarations, review compliance, metadata)"
  • [x] story note verified -- found in project-landscaping-assistant user-stories section
  • [x] arch:rails-app label -- Rails App (Shared Pattern)
  • [x] arch note verified -- arch-rails-app note exists in pal-e-docs (architecture note, status: active)
  • [x] Forgejo issue -- ldraney/landscaping-assistant#349, open

File Targets

  • [x] app/controllers/landing_controller.rb -- verified: line 10 has unless feature_enabled?(:public_landing) guard; lines 5-7 redirect logged-in users to work_queue_items_path (maps to /today). Ticket description matches code.
  • [x] app/views/landing/index.html.erb -- verified: 117-line file with generic marketing copy (feature cards, role descriptions). No App Store link or badge present. Ticket correctly identifies what needs to change.
  • [x] lib/tasks/feature_flags.rake -- verified: line 24 has { name: "public_landing", enabled: false, description: "Public landing page for unauthenticated users (#324)" }. CORRECTED from previous review (was app/models/feature_flag.rb). File target now accurate.
  • [x] app/views/sessions/new.html.erb (do-not-touch) -- verified: exists, separate login page concern. Correct exclusion.

Repo Placement

OK -- issue filed on ldraney/landscaping-assistant, all file targets are within the landscaping-assistant app. Single repo, no cross-repo work needed.

Dependencies

No blocking dependencies. Board item #1983 (Clean registration flow for App Store resubmission, arch:keycloak) shares story:app-store-submission but is independent work. #1946 (deploy-validation) is in_progress but unrelated (arch:infra). Previously completed app-store-submission items (#1683, #1684, #1685, #1506, #1507) are all done.

Acceptance Criteria

5 ACs, all testable:
  • AC1 (no feature flag check) -- verifiable via controller test and grep
  • AC2 (App Store badge/link) -- verifiable by checking HTML content for https://apps.apple.com/app/id6780226794
  • AC3 (logged-in redirect to /today) -- verifiable via controller test; current code already does this via work_queue_items_path
  • AC4 (public_landing flag removed) -- verifiable via grep across codebase
  • AC5 (clean and professional on desktop/mobile) -- subjective but reasonable for manual QA
Test command rails test is valid. Test expectations cover the controller logic adequately.

Blast Radius

Low. In the main repo, public_landing appears in 4 files: the 2 file targets plus spec/requests/landing_spec.rb and spec/requests/sessions_spec.rb (tests that will be updated per Test Expectations section). No sibling services, no downstream consumers. The FeatureFlag model is generic and shared by other flags -- removing the public_landing usage does not affect the model itself.

Decomposition Assessment

No decomposition needed. 3 file targets in 1 repo, 5 acceptance criteria, estimated agent work well under 5 minutes. Straightforward controller change + view redesign + rake task cleanup.

Recommendation

No action needed.