Record
ADR-0036
Status
accepted
Date
2026-07-23
Supersedes
ADR-0024 decision item 5

Loopback evidence privacy digests stable identifier values by default

Context

ADR-0024 made irrevon serve loopback-only, GET/HEAD-only, and database read-only, but returned upstream stable_ids values verbatim. The CLI redacted those same values unless an operator explicitly supplied --reveal. Loopback reduces network exposure; it does not guarantee that browser screenshots, extensions, exported diagnostics, screen sharing, or local logs remain private. The two surfaces therefore had contradictory safe defaults.

Decision

irrevon serve MUST retain stable-identifier field names but replace every value with a deterministic SHA-256 digest representation. The effect ID, operation ID, finding ID, and other Irrevon-minted opaque identifiers remain available because they are necessary for evidence navigation and do not reveal the upstream value from which identity was derived.

No HTTP reveal parameter or route exists. An operator may reveal upstream stable-identifier values only through the local CLI’s explicit irrevon inspect --reveal option. Request paths may be logged; query strings, request bodies, stable-identifier values, credentials, and DSNs may not. Fixtures and public screenshots use synthetic values but should still model the digested serve contract.

Alternatives

  • Trust every loopback browser: rejected; local software, screenshots, and screen sharing can cross that boundary.
  • Return a constant redaction marker: rejected because deterministic digests preserve equality investigation without exposing raw values.
  • Add a browser reveal toggle: rejected because it would make the read surface a raw-data export mechanism and require an authentication design.
  • Remove identifier keys: rejected because keys explain identity construction and do not contain the upstream value.

Consequences

Workbench evidence can compare digested values but cannot display the original upstream identifier. Local operators needing the value use the CLI explicitly. Regression tests lock the digest format, absence of raw values, generic storage errors, and byte parity with default (non-reveal) CLI inspection.

Risks

Unsalted digests of low-entropy identifiers may be guessable. They are an exposure reduction, not anonymization. Operators should keep the Workbench loopback-only, avoid untrusted browser extensions, and treat evidence exports as sensitive.

Reopen trigger

Revisit if the Workbench gains authentication and a separately threat-modeled reveal capability, or if an operator study shows that keyed deployment-local digests are required and their key lifecycle can be supported safely.