Skip to content

Epic: 2026-08-10 Full Platform Audit Remediation #401

Description

@b-at-neu

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 withdrawnwithdrawn 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:

  1. text-destructive-foreground does resolve; measured 5.11:1, passes AA
  2. <SelectItem value=""> does not crash the applications toolbar on the installed Radix version
  3. Managers do not lose Edit/Applications links on managed position cards
  4. app/(main)/error.tsx is the legitimate route-group boundary — only the nested (auth) copy is redundant

Metadata

Metadata

Assignees

Labels

epicGrouping of many other tickets

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions