Review: Landing page: always-on, drives App Store downloads
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 hasunless feature_enabled?(:public_landing)guard; lines 5-7 redirect logged-in users towork_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 (wasapp/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.