read method
Returns the value stored under key, or null if absent or unreadable.
Must never throw. A backend that can't read should swallow the failure
and return null. The audit trail itself is a diagnostic — it cannot
be allowed to break the host app.
Implementation
@override
String? read(String key) => null;