Problem
The 2026-08-10 full platform audit was assembled ad hoc from parallel investigations plus a live click-through. It should be a repeatable command so it runs each release instead of once.
It must not regenerate the permissions matrix or the workflow catalogue — once PERMISSIONS.md and WORKFLOWS.md exist, those are the spec. It should check the code against them and flag drift in both directions: code the docs do not describe, and documented behaviour the code no longer implements.
Check classes
Each of these found something real in the first run:
- Applicant/reviewer state machine — every action must gate on record status, not just ownership
- UI ↔ backend permission parity, in three categories: backend allows / UI never offers; UI offers / backend refuses; and UI is the only gate (the dangerous one)
- Soft-delete join integrity — every query touching
Application must join through to Position.deletedAt and status
- Snapshot-vs-live consistency — anywhere a client validates against one source and the server against another
- Link reachability by record state — every rendered link must resolve for the state and role that rendered it
- Denial-mechanism consistency — flag any new authorization branch not using the shared helper
- Measured accessibility — compute real contrast ratios per token pair in both themes and measure touch targets, rather than eyeballing
- Seed coverage — assert the seed produces every
PositionStatus and ApplicationStatus
Acceptance criteria
From the 2026-08-10 full platform audit.
Problem
The 2026-08-10 full platform audit was assembled ad hoc from parallel investigations plus a live click-through. It should be a repeatable command so it runs each release instead of once.
It must not regenerate the permissions matrix or the workflow catalogue — once
PERMISSIONS.mdandWORKFLOWS.mdexist, those are the spec. It should check the code against them and flag drift in both directions: code the docs do not describe, and documented behaviour the code no longer implements.Check classes
Each of these found something real in the first run:
Applicationmust join through toPosition.deletedAtand statusPositionStatusandApplicationStatusAcceptance criteria
.claude/skills/, referencingENGINEERING.md,DESIGN.md,PERMISSIONS.md,WORKFLOWS.mdandCLAUDE.mdFrom the 2026-08-10 full platform audit.