Review: Validate coach login and read-only roster E2E

review-580-2026-03-28 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type — present ("Feature")
  • [x] Lineage — present (discovered during girls roster session 2026-03-28)
  • [x] Repo — present (forgejo_admin/westside-app)
  • [x] User Story — present (WS-S13: coach views team roster with player photos)
  • [x] Context — present, thorough (references merged PRs #132, #133, coach Keycloak accounts, temp passwords)
  • [x] File Targets — present ("No code changes expected. This is a validation-only ticket.")
  • [x] Acceptance Criteria — present (6 criteria)
  • [x] Test Expectations — present (Chrome devtools validation, screenshot evidence)
  • [x] Constraints — present (no emails, no code changes, validate deployed version)
  • [x] Checklist — present (4 items)
  • [x] Related — present (project-westside-basketball, #131, #129)
All Feature template sections present. However, "Feature" is the wrong type for a validation-only ticket — see Recommendation.

Traceability

  • [x] story:WS-S13 — label present on board item. User story inline: "As a coach, I want to view my team roster with player photos so that I know my players on sight"
  • [x] arch:westside-app — label present on board item. Validates the deployed westside-app.
  • [x] Forgejo issue — forgejo_admin/westside-app#142, open
  • [ ] Story note — story-westside-roster-view does not exist in pal-e-docs (404). Label is present and user story text is inline, but no backing story note exists.

File Targets

No file targets — "No code changes expected. This is a validation-only ticket." Appropriate for a validation task. No files to verify.

Repo Placement

OK. Issue filed on forgejo_admin/westside-app. Validates the deployed westside-app coach experience. Correct repo.

Dependencies

  • [x] PR #132 (admin route guard + coach read-only) — merged, deployed. Prerequisite satisfied.
  • [x] PR #133 (division filter) — merged, deployed. Prerequisite satisfied.
  • [x] Board item #531 (issue #131, "Verify coach read-only view of team rosters") — done. Prior validation pass completed.
  • [x] Coach Keycloak accounts with correct roles — stated as existing with temp passwords set.
  • [ ] Board item #529 (issue #129, "Validate: girls draft board + coach login access") — in_progress. Parent validation ticket. Overlap concern: #129 also validates coach login access. Relationship between #142 and #129 is unclear — is #142 a focused sub-task of #129, or does it duplicate scope?

Acceptance Criteria

6 criteria, all browser-verifiable via Chrome DevTools MCP:
  • Coach login via /signin -> Keycloak -> redirect to /coach (not /admin) — testable, specific
  • Coach sees team roster with player names and photos — testable, specific
  • Coach CANNOT see assign/move/delete/create buttons — testable, specific
  • Coach CANNOT access /admin routes (redirected to /coach) — testable, specific
  • Mobile viewport (390px) renders correctly — testable, specific
  • Both Queens coaches validated — testable (Abbie and Manny credentials provided)
All criteria are concrete and agent-verifiable. No ambiguous language. No missing criteria detected.

Blast Radius

None. Validation-only ticket with no code changes. No files modified, no deployments triggered. No downstream effects. Rollback not applicable.

Decomposition Assessment

Three-thing limit: 1 discrete task (browser validation of 2 coach accounts in the same flow). Under limit.
Five-minute rule: Estimated 3-5 minutes for browser automation — login both coaches, check pages, capture screenshots. At the boundary but a single coherent flow.
No independent subtasks that need parallelization. No decomposition needed.

Recommendation

  • [BODY] Change ### Type from "Feature" to "Task" — this is a validation/QA task with no code changes, not a new feature implementation. Task type uses the base template (template-issue) which fits better since there are no file targets to verify.
  • [LABEL] Change board item label from type:feature to type:task to match corrected type.
  • [SCOPE] Clarify relationship with #129 — issue #129 ("Validate: girls draft board + coach login access") is in_progress and overlaps with this ticket's coach login validation scope. If #142 is specifically the "credential send gate" (validate before emailing coaches), that distinction should be made explicit in the Lineage section. If #129 already covers this, #142 may be redundant.