# MySQL implementation verification ? 3 November 2026

Verified on `feat/mysql-prisma` in the separate `D:\Repos\standing-tv-mysql` worktree using Node.js 24.22.2, Prisma 7.10.1, and an isolated MySQL 8.4.13 Docker server. The original `main` checkout, `.env`, and local development edits were preserved; SHA-256 comparisons confirmed those three files were unchanged.

- `npm test`: 15 checks passed, covering existing display/seed behavior, session cleanup scheduling/shutdown, MySQL URL credentials/TLS/UTC handling, and administrator email limits.
- `npm run test:db`: 33 checks passed, including parent groups. Tests ran with the host timezone set to `Asia/Jakarta` and used unique disposable MySQL databases. Coverage includes repeatable migration deployment, CHECK/foreign-key/unique constraints, collations, Unicode, maximum text lengths, millisecond dates in 2040, seeds, authentication, session expiry/touch/pruning/reconnection, CSRF/origin checks, nested rollback, concurrent bookings/moves, event-date races, and all admin search endpoints.
- `npm run db:validate`, `npm run typecheck`, and `npm run build` passed. The build regenerated Prisma and compiled both server and admin. Vite retained its existing advisory about the admin JavaScript bundle exceeding 500 kB.
- Headless Microsoft Edge 156.0.4314.58 loaded the compiled server/admin assets on an isolated local port. Browser login succeeded, an existing schedule was edited and saved through the form, and the public portal displayed the saved title. The TV page made at least two successful schedule requests and displayed the edit through its 15-second polling cycle without reloading. No page errors occurred.
- Browser fixtures and all integration fixtures were removed with their uniquely named test databases. The separately configured local application database was migrated without creating accounts or demo records.

The local container `standing-tv-mysql-verify` is available on `127.0.0.1:33084`. Its generated application/test credentials and the new signing secret are only in ignored local files. Start it with `docker start standing-tv-mysql-verify` if stopped. Create an actual administrator using `npm run admin -- create` before using the panel, and run `npm run dev` for the complete development origin at `http://localhost:4000`.

The browser smoke used local HTTP with development cookie settings and the production build. Deployment, remote TLS, HTTPS reverse-proxy configuration, physical TV reading distance, overscan, fullscreen, and Wake Lock were not verified. Historical PostgreSQL results are retained separately in `verification.md` and do not serve as MySQL evidence.
