Stored Evidence Item
data class StoredEvidenceItem(val id: String, val sessionId: String, val kind: EvidenceKind, val subjectId: String, val label: String, val flaggedAtMs: Long, val snapshotJson: String, val attachmentId: String? = null)
One flagged QA item, durable across a browser refresh and an app restart.
snapshotJson is the whole point of this type: it is materialized once, at flag time, from the same already-redacted sources the detail endpoints use. It is never re-derived from whatever a client happens to still be holding, which is the defect this store exists to fix -- a flagged network transaction used to degrade to a bare label the moment the dashboard's list moved on. Absent fields inside it are omitted, not defaulted; nothing here is fabricated to fill a gap.