Review: Player-facing subscription status page
Verdict: APPROVED
Re-review after round 1 refinements. Round 1 flagged missing
arch-app-store note -- that note now exists (ID 2224). All other checks passed in round 1 and remain valid.Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Feature Flag
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Traceability
- [x] story:WS-S37 label — "As a player or parent, I want to log in and see my subscription status and payment history so that I know where I stand and can take action if needed"
- [x] story note verified — found in project-westside-basketball user-stories section (Player role)
- [x] arch:app-store label — App Store Billing component
- [x] arch note verified —
arch-app-storenote exists in pal-e-docs (ID 2224, "Architecture: App Store Billing") - [x] Forgejo issue — ldraney/westside-basketball#83, open
File Targets
- [x]
app/controllers/players_controller.rb— verified: exists, has onlyindexaction. Addingstatusaction is correct. - [x]
app/views/players/status.html.erb— new file to create. Onlyindex.html.erbexists currently. Correct. - [x]
config/routes.rb— verified: exists, currently hasresources :players, only: [:index]. Route expansion needed. - [x] DO NOT touch list —
app/views/admin/(admin pages are separate sub-tickets) andapp/models/player.rb(model changes in sub-ticket A) are correctly excluded.
Repo Placement
Correct. Issue filed on ldraney/westside-basketball, all file targets are in that repo. Single-repo change.
Dependencies
depends:79(sub-ticket A — Apple subscription model fields + migration). Board item #1636, currently in backlog. The Player model has NOapple_subscription_statusfield yet — this dependency is real and correctly documented. The status page reads subscription state from these fields.parent:66(Subscription UI — 3-page arch). Parent item #1611, in next_up withdecomposedlabel. Correct parent relationship.
Acceptance Criteria
3 ACs, all verifiable by an agent:
- Player can view subscription status at the status route — testable via controller test
- Status page shows appropriate state for all Apple subscription statuses (6 states enumerated) — testable via view rendering tests
- No-subscription state shows call-to-action (not an error) — testable via specific assertion
Test expectations include 3 unit tests with a valid run command:
bundle exec rails test test/controllers/players_controller_test.rb. Test file exists in the repo.Blast Radius
Minimal. This is a new route and view — no existing behavior changes. No feature flag needed (correctly noted as "none"). The status page is additive; existing player index page is untouched.
Decomposition Assessment
3 file targets, 1 repo, 3 ACs. Estimated agent work well under 5 minutes. No decomposition needed.
Recommendation
No action needed. Ticket is APPROVED for todo.