Story-2495 · functions lane

Counsel's verdict survives the machine's next read

Mental model: the Deep Read envelope is an immutable machine receipt. Reading Findings is counsel's ledger beside it: Keep and Dismiss decisions remain durable, but only follow a finding when anchor lineage and quoted bytes prove it is still the same finding.

The replacement transaction

validated Deep Read envelope
        ↓ same PostgreSQL transaction
replace current Reading Findings projection
        ↓
mark prior versions superseded, retaining verdict + author + date
        ↓
enqueue deep_read.completed for the durable job
        ↓
commit all three facts together

Equivalent means lineage plus bytes

A finding receives a stable UUID on first projection. A later read carries that UUID and counsel verdict only when every old anchor reaches the new anchor through the existing remap ledger and the canonical hash of its quotes is unchanged. Positional similarity is never enough.

Unsafe identity fails pending

No match creates a new pending finding. An ambiguous remap also creates a distinct pending finding and inherits no prior Keep or Dismiss decision. The old registry version remains as history; nothing silently moves.

Changed ink explains the reopen

A mapped finding whose quoted bytes changed gets a new logical identity, returns to pending, and stores a plain-language reason plus before/after quote text. Its supersession link preserves the prior verdict, deciding user, and timestamp.

Dismiss reasons have different force

dismissed_inaccurate remains suppressed across a confidently mapped re-read. dismissed_irrelevant may return to pending when its anchored passage changes. The executable ER-06, ER-24, and ER-28 scenarios pin these rules.

The old bus fact is gone

The subscriber census found no semantic consumers of the former Insight completion fact: no repository consumer, no EventBridge rule, and no live target. The old brief remains the serving path for this wave, but it no longer announces completion. Only a successful Deep Read emits deep_read.completed, keyed by durable job so retries coalesce and later re-reads still emit.

Scope boundary: this Story adds the registry, replacement event, RLS, migration, and backend scenario proofs. T5c owns the lawyer-facing margin controls. T3e owns the live wave smoke.