Review: westside-admin#4 (board 1092) — Players list — 2026-05-04 (v1, NEEDS_REFINEMENT)

review-1092-2026-05-04 Doc

review needs-refinement

Scope Review: westside-admin#4 (board item 1092) — Players list view at /players

Verdict

NEEDS_REFINEMENT (refinements applied in body v2 on 2026-05-04; re-review pending). Forgejo comment issue #4 comment 16214 is the canonical record.

Headline

The 2026-05-04 v1 PM-locked column allowlist was internally coherent on paper but contradicted the live players schema in three places. Three of the ten allowlisted columns (email, team_name, updated_at) do not exist as columns on the players table.

Three columns broken in v1 allowlist

  • email — lives on parents.email, not players. Rendering requires JOIN, contradicts the constraint scopedDb.select(allowlistedColumns).from(players).
  • team_name — does not exist on players. Teams link via player_teams M2M to teams.name. Needs JOIN + semantic decision for multi-team players.
  • updated_at — does not exist on players. Only created_at.

Other findings

  • Live DB verified: 37 columns confirmed (37th is jersey_number_preferred), 58 rows, contract_token present (sensitive), division + contract_status are USER-DEFINED enums, monthly_fee is integer DOLLARS.
  • Repo layout: all File Target Create paths valid; nav modify target (src/routes/+layout.svelte) exists.
  • Dependencies: #6, #2, #301, #302 done; #1 + #3 in todo (hard-dep chain holds).
  • Decomposition: 6 files, 11 AC, ~15-25 min. Slightly over 5-min rule but splitting further fragments the load→render seam. Hold as-is (already split: #4 list / #28 inputs / #29 edit).

Required body edits (applied in v2)

  • [BODY] Reconcile each broken column. Applied: dropped email/team_name, swapped updated_atcreated_at, added position + subscription_status.
  • [BODY] monthly_fee precision: AC said $NN.NN but column is integer DOLLARS — applied: changed to $NN (whole dollars).
  • [BODY] Edit Log section now records v1→v2 transition.

Outage Note

Filed after 7-min pal-e-docs outage. Review agent flagged the postgres NetworkPolicy gap as the outage root cause; that's tracked separately as a retroactive Forgejo issue.

Re-review

Body v2 edits are material; will dispatch a fresh review-ticket agent. Once APPROVED, file review-1092-2026-05-04-v2 note.
  • Forgejo issue: forgejo_admin/westside-admin#4
  • Board item: 1092 on board-westside-admin