Manifest T5b · Wave W5 · RFD-DOC-006 Extraction Record. Covers D12, I-12, I-13 and scenarios ER-04, ER-20, ER-29, ER-30. The Deep Read already grades each section (Story-2501); T5b turns those grades into a margin-resident attention map counsel can act on — an unread-critical completion signal, a fail-safe for low-confidence grades, a flag when a grade is wrong, and the a11y contract that makes all of it keyboard- and screen-reader-workable.
Opening the 114-page Statement of Claim shows the
AttentionIndexRail: a persistent map in the margin (never a
blocking overlay, I-13). Its header carries the total first-read time and the
coverage%; each row states the grade, its reason, and a link to the section's
exact pages. Every graded section links to its ink.
envelope.rows (attention ⋈ section) → toAttentionIndex(envelope) // entries, coverage%, total time → <AttentionIndexRail model /> // margin-resident, sticky, non-blocking
Below the confidence floor the read declines to allocate: the row renders "Not assessed — read normally", never a false "Skip" and never a silent drop. A suppressed row is carried, not deleted, so the map neither hides the section nor pretends it was graded.
Flag a grade. Every graded row has a Flag this grade button; flagging records the flag against that grade (to feed the re-grade) and the row settles into "Flagged for re-grade".
The rail header is the first-read completion signal: the count of
critical sections still unread. Marking a section read decrements
it instantly; at zero the header flips to "First read complete". A
declared omission on a critical-graded region (coverage.omissions
with critical: true) holds the read open — the
machine can never discharge a section it never reached (D13).
| Contract | How |
|---|---|
| Keyboard list |
The rail is a <nav> of native links and buttons — the
page link, the read toggle (aria-pressed), the flag button
(aria-label). Counsel tabs the whole map; no custom key
handling to get wrong.
|
| Announced markers | Each grade is a text + icon badge (never colour alone, D12 a11y); the text names the grade so a screen reader announces "Critical", not "red pill". |
| Quote vs prose |
QuoteText wraps every byte-verified passage in the findings
with an sr-only "Quoted document text:" prefix and
aria-roledescription="document quote". A quoted admission is
announced as the document's words, distinct from the machine's prose.
|
Chrome and attention labels render in the counsel's locale; the machine's
reasons render in the locale too; the quotes never translate (they are lifted
from the document as-is). Every new string is in
messages/en.json AND messages/hi.json.
O-9 vocabulary review artifact. The Hindi that ships needs a Hindi-native counsel sign-off before either surface is trusted — a mistranslated "skip" or side label is a safety bug. The vocabulary under review:
| Attention grade (EN) | Hindi |
|---|---|
| Critical | अत्यावश्यक |
| Read | पढ़ें |
| Skim | सरसरी पढ़ें |
| Skip | छोड़ें |
| Not assessed (suppressed) | मूल्यांकन नहीं |
The side vocabulary (Plaintiff/Defendant, Petitioner/Respondent, …) already
exists in both locales under Matters.role.* and is in the same
review scope; T5c owns the side-check surface that renders it. No new side
keys were minted here — the review is of the existing pair.
Documents/Viewer/AttentionGradeBadge — Critical / Read / Skim / Skip + AllGrades (icon-per-grade).Documents/Viewer/AttentionIndexRail — Default (interactive: mark read → completion), CriticalOmission, NoCritical.Documents/Viewer/QuoteText — the announced-quote primitive next to machine prose.Per RFD-DOC-006 the new path is fixture-first until the W5 cutover; the serving Original lens stays authoritative. The attention map is live-wired on the Insights lens (it reads the same Deep Read envelope the dossier already serves). Two seams are fixture-first and stated here honestly:
21 file(s), +1018 / -25 lines
| Path | Role | + | - |
|---|---|---|---|
| messages/en.json | Config | +31 | -1 |
| messages/hi.json | Config | +31 | -1 |
| src/components/documents/viewer/attention-grade-badge.stories.tsx | Component | +30 | -0 |
| src/components/documents/viewer/attention-grade-badge.tsx | Component | +50 | -0 |
| src/components/documents/viewer/attention-index-presentation.test.ts | Component | +134 | -0 |
| src/components/documents/viewer/attention-index-presentation.ts | Component | +157 | -0 |
| src/components/documents/viewer/attention-index-rail.stories.tsx | Component | +128 | -0 |
| src/components/documents/viewer/attention-index-rail.tsx | Component | +111 | -0 |
| src/components/documents/viewer/attention-index-row-actions.tsx | Component | +72 | -0 |
| src/components/documents/viewer/attention-index-row.tsx | Component | +101 | -0 |
| src/components/documents/viewer/deep-read-findings.tsx | Component | +10 | -1 |
| src/components/documents/viewer/deep-read-presentation.ts | Component | +0 | -9 |
| src/components/documents/viewer/deep-read-section.tsx | Component | +5 | -8 |
| src/components/documents/viewer/document-insights-dossier.tsx | Component | +35 | -3 |
| src/components/documents/viewer/document-insights-live.tsx | Component | +30 | -0 |
| src/components/documents/viewer/quote-text.stories.tsx | Component | +41 | -0 |
| src/components/documents/viewer/quote-text.tsx | Component | +35 | -0 |
| src/components/documents/viewer/section-finding-card.stories.tsx | Component | +4 | -0 |
| src/components/documents/viewer/section-finding-card.tsx | Component | +5 | -2 |
| src/components/documents/viewer/section-machine-gutter.stories.tsx | Component | +4 | -0 |
| src/components/documents/viewer/use-section-labels.ts | Component | +4 | -0 |