Legacy plaintext access_password
cases.access_password TEXT NOT NULL is a survivor of the whistleblower-template ancestry
(the pivot): in the original product, a whistleblower
accessed their case with a case code + password. It is a plaintext-capable column, still
NOT NULL, so every case insert must supply one — seed-test-data hardcodes
"demo1234".
The disciplinary product has since moved to token-based portal access,
so access_password is largely vestigial — but it is still required, still plaintext, and
still carries the security expectations of a password field (it must not be stored or logged
in the clear).
Rebuild implication
Drop access_password if the token portal fully replaces it. If any password-style access
is retained, store only a salted hash, never require/return the raw value, and keep it out
of seeds and logs.