Review: Add age-based team reassignment clause to Queens contracts

review-wc29-2026-03-28 Doc

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type -- Feature
  • [x] Lineage -- "Discovered during girls roster assignment 2026-03-28"
  • [x] Repo -- forgejo_admin/westside-contracts
  • [x] User Story -- present but missing "So that ___" clause
  • [x] Context -- adequate background on roster structure
  • [ ] File Targets -- ISSUE: no specific file paths listed, only "Contract template file(s) that generate the Queens program agreement"
  • [x] Acceptance Criteria -- 3 criteria, clear and testable
  • [ ] Test Expectations -- ISSUE: "Run command: review contract output" is not a real command
  • [x] Constraints -- present and reasonable
  • [x] Checklist -- present
  • [x] Related -- project-westside-basketball

Traceability

  • [ ] story:X label -- missing. Should reference a user story for contract customization or roster management
  • [ ] arch:X label -- missing. Should be arch:contract-flow (matching sibling issues on this board)
  • [x] Forgejo issue -- forgejo_admin/westside-contracts#29, open
  • [ ] Board item -- ISSUE: no board item exists yet for this Forgejo issue. Must be created on board-westside-basketball in backlog column

File Targets

  • [ ] "Contract template file(s)" -- ISSUE: vague. The actual targets are:
  • [x] src/routes/contract/[token]/+page.server.ts -- already passes team_name to the frontend via the player object (line 38). No changes needed here unless a dedicated isQueens boolean is desired for cleanliness.
  • [x] src/routes/contract/[token]/sign/+server.ts -- no changes needed. The clause is display-only, not a contract version change.

Repo Placement

OK. Issue filed on westside-contracts, fix belongs in westside-contracts. Single-repo change. No multi-repo concerns.

Dependencies

  • [x] Phase 14 (Billing Tiers and Contracts) -- in_progress on board-westside-basketball. This issue logically falls under that phase but is not formally linked.
  • [x] Queens teams exist in basketball-api database -- satisfied. The team_name field containing "Queens" is already available in the contract page data.
  • [x] No blocking dependencies. The change is purely additive frontend content.

Acceptance Criteria

  • [x] "Queens contracts include a clause stating the organization reserves the right to reassign younger players" -- testable: load a Queens player contract URL and verify clause appears
  • [ ] "Language is professional and clear" -- subjective, requires human review. Not programmatically testable by an agent.
  • [x] "Clause only appears on Queens contracts, not Kings" -- testable: load a Kings player contract URL and verify clause is absent
  • [ ] Missing: no real test command specified. Should be: "Deploy to dev namespace, load a Queens contract token URL, verify clause visible. Load a Kings contract token URL, verify clause absent."

Blast Radius

  • Low blast radius. The change is additive -- a conditional clause rendered only when team_name contains "Queens".
  • The existing isLocal branching pattern (line 201) is a proven template for this kind of conditional content.
  • No sibling services affected. The clause is display-only in the contract page.
  • The sign endpoint does NOT need changes -- the clause is part of the agreement text, not a separate data field.
  • Rollback is trivial -- revert the single file change.

Decomposition Assessment

No decomposition needed.
  • 1 file target (src/routes/contract/[token]/+page.svelte)
  • 3 acceptance criteria
  • Estimated agent time well under 5 minutes
  • No independent subtasks to parallelize -- this is a single conditional block addition

Recommendation

  • [BODY] Replace vague File Targets with specific paths: src/routes/contract/[token]/+page.svelte -- add Queens-specific conditional clause using player.team_name?.includes('Queens') pattern, after the Commitment section. Add "Files the agent should NOT touch" section listing +page.server.ts and sign/+server.ts.
  • [BODY] Fix Test Expectations: replace "Run command: review contract output" with "Deploy to dev namespace, load a Queens contract token URL, verify clause visible; load a Kings contract token URL, verify clause absent."
  • [BODY] Complete User Story: add "So that younger players can be moved to age-appropriate teams without contract disputes."
  • [LABEL] Add arch:contract-flow label to the board item (matching sibling contract issues).
  • [LABEL] Add a story label or explicitly document as standalone/discovered scope.
  • [SCOPE] Create a board item on board-westside-basketball in backlog for this Forgejo issue.