# V3 Voice Transcript Retention

The V3 voice transcript retention gate is `v3-voice-transcript-retention.v1`. It
enforces the architecture rule that live voice transcript text remains in an
ephemeral rolling 60 s buffer unless a user submits an in-world safety report
that attaches the buffer as evidence.

## Retention Rules

- Rolling transcript buffers use `V3_VOICE_TRANSCRIPT_ROLLING_BUFFER_WINDOW_MS`
  (`60_000`) and evict utterances outside that window.
- Unattached rolling buffers have `durablePersistence: 'none'`, no attached
  report id, and no durable transcript object refs.
- `attachV3VoiceTranscriptBufferToReport` is the only durable transcript path;
  it scopes object refs to a tenant-resident safety report id.
- `submitV3InWorldReport` marks transcript storage as `attached-report-only`.
- `auditV3VoiceTranscriptRetention` fails if voice text persists without an
  attached report or if any persisted transcript exceeds the 60 s window.

## Verification

Run `pnpm verify:v3 voice-transcript-retention`. The gate checks the
implementation, privacy audit evidence, analytics manifest, package script, and
TODO traceability. The implementation tests in `@oshun/tenant-lilith-commons`
cover buffer eviction, report attachment, and audit rejection for unattached or
over-retained voice content.
