# Provider-, surface-, and session-aware Reason Guard parity

- Branch: DBR-002
- State: promoted
- Owner: AGENT-CODEX
- Source request: REQ-176
- Requirement workflow: WFR-445
- Promotion trigger: focused and full verification prove provider isolation, Desktop/CLI surface identity, session retention, safe migration, offline Claude backfill, privacy, latency, and downstream parity.
- Promotion evidence: EV-216 / EV-217 / CHG-141 / implementation commit
  `13f29b7`; release workflow WFR-451 completed.

## Problem

The current local report represents one current session and only Codex has a
trusted transcript adapter. A Claude event reaches the shared kernel, but a new
host or session can replace the report view and Claude history is not backfilled.

## Proposed correction

Persist one bounded ledger per host runtime. Each ledger retains bounded session
records using the existing Reason Guard schema. Add a Claude transcript adapter
that reads only visible assistant `text` blocks from trusted Claude project
JSONL. Preserve the existing Codex visible-summary allowlist and keep OpenCode
honest when no transcript history is available.

Keep provider, surface, model, effort, and session separate. Codex and Claude surface identity
comes only from allowlisted explicit metadata, host-owned environment markers,
or trusted transcript metadata. Unsupported markers remain `unknown`; they are
never inferred from the absence of a value. OpenCode remains its own named
surface. Trusted turn/assistant metadata supplies the latest bounded model and
normalized effort; missing values remain unknown.

Raw transcripts, prompts, thinking blocks, signatures, and tool payloads remain
excluded from persisted state.
