fix: pilot-readiness audit fixes, demo mode removed - #78
Open
brianle423 wants to merge 1 commit into
Open
Conversation
Frontend: measured report totals (no invented Winners/Unforced errors), timed notes that persist (debounce no longer cancelled by the poll effect; jsonb strings parsed on read), visible upload rejections, JSON 401 for anonymous API calls, login shows callback errors, password recovery reaches the update form, recording header names its player, error boundary + not-found + error routes, per-route titles, mobile Account tab, demo mode removed entirely. API: trigger-process derives the storage key server-side; create-upload validates player ownership and insert errors; owner-filtered player lookups and fail-closed fallbacks; PATCH returns 404 on zero rows; onboarding is replay-safe; image proxy limit raised to 1200/h and its responses may cache. Backend: Modal entrypoint validates match_id/file_key binding and writes a failed status when startup fails; a lost processed-video upload no longer marks a recording done. Data: backend/tools/claim_template_players.py (applied for the owner account) and a cascade migration for players.user_id (apply in the SQL editor). Audit harness: frontend/web/scripts/audit/functional (84 checks, resume and skip-upload flags).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes every P0 and P1 from the 2026-09-09 pilot-readiness audit (record:
JarvisEA/projects/CourtCheck/2026-09-09-pilot-readiness-audit.md). Implemented by Codex (gpt-6-astra, xhigh) from a 38-step plan; reviewed, patched, and verified by Claude against a local production build and live production data.Coach-visible
API / security
trigger-processignores clientfile_keyand derives it from the owned row; dispatch failures mark the recording failed instead of stranding it in processing.create-uploadchecksplayer_idownership and the insert result before handing out an upload URL./api/*gets JSON 401 from the proxy; redirects keep refreshed cookies.PATCH /api/recordings/[id]returns 404 when nothing was updated; notes/keypoints validated and capped.Backend (needs
modal deploy backend/app.py)process_videovalidatesmatch_idis a UUID andfile_keystarts with<match_id>/, and writes a failed status if startup throws.Data
backend/tools/claim_template_players.py(dry-run default) already applied for the owner account: 9 owned player rows, 1 recording remapped,onboarding_templateset. Handedness PATCH now returns 200 on production.supabase/migrations/20260910_players_cascade_on_user_delete.sql: apply in the Supabase SQL editor.Audit harness at
frontend/web/scripts/audit/functional/(84 checks;--skip-upload,--only,--qa-recording).Test plan
tsc,next build(24 routes),verify-dashboard-metrics.cjs,verify-viz-data.cjs,py_compileon the four Python filesCC_AUDIT_BASE=https://courtcheck-rho.vercel.app node scripts/audit/functional/run.mjs --skip-uploadfromfrontend/web--skip-upload), thenmodal deploy backend/app.pyif not already done