Story-2505 · functions lane · RFD-DOC-006 D14/D15 · ER-37

A chronology that admits what it has not read

Mental model: chronology is a view over the Assertion Pool, not a second store. Its read count is part of the answer: “2 of 3 documents read” means an absent event is still an evidence gap, never a clean bill.

The fixture-only path

successful current Deep Reads ──┐
                                ├─→ SQL Pool chronology reader
dated context.assertions ───────┘         ↓
                              ordered events + 2/3 read + partial

The reader considers live Record documents and their current extraction only. It orders confirmed-side Pool occurrences by a valid asserted_at date, falling back to a typed date assertion object. Exact source quotes and anchors travel with every event.

Completeness measures reads, not claims

A successfully read document may contain zero dated assertions, so counting Pool rows would lie. The numerator instead counts current extractions with a succeeded Deep Read job; the denominator counts live Record documents. Any unread document makes the engine state partial.

Why this cannot disturb the serving product

This Story adds a dark SQL reader and ER-37 fixture only. It does not wire an API route, bundle reader, fanout consumer, or Neptune writer. The existing graph path remains serving until the wave cutover ticket performs the atomic switch.

Wave boundary: T4d owns the staging liveness smoke, including proof that fresh fixture processing performs zero Neptune assertion writes. T4e owns consumer cutover. This pre-terminal chronology surface emits no intake-usage signal and does not touch pricing.