Expand description
Append-only audit trail for the credit registration ledger.
No retention sweep touches this table, so every Suotar payload must go through
scrub_suotar_body at the write site β redacting on read would leave the raw values on disk.
StructsΒ§
EnumsΒ§
ConstantsΒ§
- NEVER_
SCANNED_ πKEYS - Keys whose values the value scan must leave alone: they carry ids shaped like student numbers β
cr-{uuid}request item ids, Sisu ids such ashy-CUR-135176012β that the scan would mangle. - REDACTED
- Replaces a redacted value; the key is kept so the payload shape survives.
- REDACTED_
KEYS π - Keys whose values identify a person or authenticate a request. Matched case-insensitively at any depth.
StaticsΒ§
- EMAIL_
RE π - STUDENT_
NUMBER_ πRE - Student-number-shaped digit runs. The id shapes come first because the
regexcrate has no lookaround: leftmost-first alternation is the only way to say βdigits not part of an idβ. The word boundaries keep the digit branch off longer numbers such as millisecond timestamps.
FunctionsΒ§
- get_
by_ registration_ id - The per-item timeline, newest first.
- get_
recent_ by_ kind - insert
- Callers that also change
statemust go throughcredit_registrations::transitioninstead, which writes both in one transaction. - keep_
scalars π - Keeps bare ids and lists of ids, but hands objects back to
scrubso an exemption cannot smuggle a nested error message past the value scan. - key_
policy π - normalize_
key π - scrub π
- scrub_
free_ πtext - scrub_
suotar_ body - Best-effort removal of personal data from a Suotar request or response body. Not a guarantee and not an exhaustive PII filter.
- suotar_
exchange_ details - Both sides of a Suotar exchange, scrubbed on construction so there is no way to build an
unscrubbed
details. The request is kept because the ledger row no longer reflects it after a retry.