Tracking issue for the 2026-08-10 full platform audit. 56 issues, grouped into the recommended build sequence.
Method: eight parallel static audits (permissions, business logic, design, links, DRY, GitHub history, workflows, build/CI) plus a live click-through — local Postgres, migrations, seed, and hand-built fixtures covering every PositionStatus and ApplicationStatus, walked as anonymous, applicant, manager and admin. Findings are tagged verified-live, verified-in-code, or plausible in each issue.
Headline: the codebase is in good shape — CI passes hard-clean, zero any, no Prisma in client components, and reviewer-side authorization held up under attack. The defects cluster in one place: the applicant write path checks ownership everywhere and status almost nowhere.
Wave 1 — Critical correctness (claude + ready)
All five reproduced live against a running instance.
Wave 2 — Foundations for everything after
Wave 3 — Data integrity and trust
Wave 4 — The position policy epic
Wave 5 — Application lifecycle experience
Wave 6 — Navigation and routing
Wave 7 — Design, accessibility, polish
Wave 8 — Architecture and hygiene
Wave 9 — Documentation and process
Written against the decided target state, not current behaviour.
Deferred by decision
Recorded for visibility; not current scope.
Decisions taken during the audit
| Topic |
Decision |
| Hosting |
Vercel always — the dev-bypass gap is not exploitable in production, but Preview remains an exposure surface |
| Submitted applications |
Not editable by the applicant; withdraw first, edit, resubmit |
| Editable statuses |
draft and withdrawn — withdrawn stays visible to reviewers, draft never is |
| Terminal states |
accepted/rejected cannot be withdrawn by the applicant, but are reversible by a reviewer |
| Question editing |
Fully editable; submitted snapshots preserved permanently; drafts and withdrawn must answer new questions |
| Dates |
Authored as Eastern calendar days, displayed in the viewer's timezone |
| Manager rights |
May appoint peers; may not remove themselves |
| Archived positions |
Read-only for managers; admins exempt |
| Bulk updates |
Exempt from the transition graph, but must warn and report skipped rows |
| Last admin |
No invariant — self-demotion is already blocked, the mutual-demotion race is accepted |
| Scale |
Pagination ticketed, not prioritized; indexes go in early regardless |
| Testing |
Test runner introduced, authorization scopes covered first |
Disproven during the audit
Four reported "criticals" were tested and found false — recorded so they are not re-raised:
text-destructive-foreground does resolve; measured 5.11:1, passes AA
<SelectItem value=""> does not crash the applications toolbar on the installed Radix version
- Managers do not lose Edit/Applications links on managed position cards
app/(main)/error.tsx is the legitimate route-group boundary — only the nested (auth) copy is redundant
Tracking issue for the 2026-08-10 full platform audit. 56 issues, grouped into the recommended build sequence.
Method: eight parallel static audits (permissions, business logic, design, links, DRY, GitHub history, workflows, build/CI) plus a live click-through — local Postgres, migrations, seed, and hand-built fixtures covering every
PositionStatusandApplicationStatus, walked as anonymous, applicant, manager and admin. Findings are tagged verified-live, verified-in-code, or plausible in each issue.Headline: the codebase is in good shape — CI passes hard-clean, zero
any, no Prisma in client components, and reviewer-side authorization held up under attack. The defects cluster in one place: the applicant write path checks ownership everywhere and status almost nowhere.Wave 1 — Critical correctness (
claude+ready)All five reproduced live against a running instance.
Wave 2 — Foundations for everything after
Wave 3 — Data integrity and trust
Wave 4 — The position policy epic
Wave 5 — Application lifecycle experience
Wave 6 — Navigation and routing
Wave 7 — Design, accessibility, polish
Wave 8 — Architecture and hygiene
Wave 9 — Documentation and process
Written against the decided target state, not current behaviour.
Deferred by decision
Recorded for visibility; not current scope.
Decisions taken during the audit
draftandwithdrawn—withdrawnstays visible to reviewers,draftnever isaccepted/rejectedcannot be withdrawn by the applicant, but are reversible by a reviewerDisproven during the audit
Four reported "criticals" were tested and found false — recorded so they are not re-raised:
text-destructive-foregrounddoes resolve; measured 5.11:1, passes AA<SelectItem value="">does not crash the applications toolbar on the installed Radix versionapp/(main)/error.tsxis the legitimate route-group boundary — only the nested(auth)copy is redundant