Manifest T5a · Wave W5 · RFD-DOC-006 Extraction Record. Covers ER-05, ER-10 and ER-26 (I-14). The two anchored margins — the machine's findings on the left, the conversation on the right — already ship from Story-2281 / Story-2294. T5a adds the three behaviours that make those margins act on the exact ink: click a marker to light the passage it rests on, turn a Mira answer into a pinned note, and mark privileged material wherever it is voiced.
The sparse markers are unchanged — one pill per signal kind, top-aligned to the section's rail. What is new: clicking a marker (or a finding's quote) lights the exact block the finding rests on, not the whole section box.
finding.anchor { pageNumber, blockIndex, tone }
→ blockBoxForAnchor(blocks, anchor) // the block's stored bbox, as page %
→ <FindingInkHighlight box /> // mix-blend-multiply over the ink
Geometry by reference (D3): the box is unioned from the block's bounding
box at render, never stored. A page-level anchor with no block resolves to
null and no box is drawn — provenance-is-law, never a guessed
rectangle. ink-highlight-presentation.test.ts pins the
resolver, including the withhold cases.
Counsel drags a passage and asks Mira; her answer lands in the right
(conversation) gutter as a MiraPassageAnswer card, anchored to
the same passage and carrying the AGENT tag. "Save as
note" pins it — turning an ephemeral answer into a durable, byte-anchored
note through the existing optimistic annotations create.
A Mira answer or a machine finding that draws on privileged material
carries the PrivilegedContentMarker: a crimson 🔒 that says
Privileged · Not exportable. The team sees the truth
and the hard rule — the content never leaves the surface. It is
distinct from the register's document-level flag: this marks a specific
answer or finding, not a whole document.
| Surface | Behaviour |
|---|---|
| Left gutter marker | Click → the gutter expands to the cards AND the first finding's exact block lights in the document. Clicking a card's quote moves the light. |
| Right gutter Mira answer | Passage-scoped answer with a "Save as note" action; saved answers become pinned notes anchored to the same passage. |
| Privileged marker | 🔒 Privileged · Not exportable, rendered on any finding or Mira answer whose material is privileged. |
Documents/Viewer/FindingInkHighlight — Crimson, Amber, and a ClickToHighlight enter/exit toggle.Documents/Viewer/SectionFindingCard — ClickableQuote (ER-05) and Privileged (ER-26).Documents/Viewer/MiraPassageAnswer — Default, Saving, Saved, Privileged, and the SaveFlow (ER-10).Documents/Viewer/PrivilegedContentMarker — Default and Compact.Per RFD-DOC-006 the new path is fixture-only until the W5 wave cutover; the serving Original lens stays authoritative. The ER-05 highlight is live-wired (it resolves from the same Anchor-view blocks the gutters already read). Two seams are fixture-first, gated on their upstream contract and stated here honestly:
51 file(s), +3752 / -5 lines
| Path | Role | + | - |
|---|---|---|---|
| messages/en.json | Config | +15 | -0 |
| messages/hi.json | Config | +15 | -0 |
| openapi/app-api.json | Config | +533 | -0 |
| openapi/permission-map.json | Config | +27 | -0 |
| src/components/documents/viewer/document-original-lens.tsx | Component | +21 | -0 |
| src/components/documents/viewer/finding-ink-highlight.stories.tsx | Component | +75 | -0 |
| src/components/documents/viewer/finding-ink-highlight.tsx | Component | +46 | -0 |
| src/components/documents/viewer/ink-highlight-presentation.test.ts | Component | +62 | -0 |
| src/components/documents/viewer/ink-highlight-presentation.ts | Component | +56 | -0 |
| src/components/documents/viewer/mira-passage-answer.stories.tsx | Component | +70 | -0 |
| src/components/documents/viewer/mira-passage-answer.tsx | Component | +112 | -0 |
| src/components/documents/viewer/privileged-content-marker.stories.tsx | Component | +25 | -0 |
| src/components/documents/viewer/privileged-content-marker.tsx | Component | +53 | -0 |
| src/components/documents/viewer/section-finding-card.stories.tsx | Component | +22 | -0 |
| src/components/documents/viewer/section-finding-card.tsx | Component | +38 | -4 |
| src/components/documents/viewer/section-gutter-row.tsx | Component | +5 | -0 |
| src/components/documents/viewer/section-machine-gutter.stories.tsx | Component | +6 | -0 |
| src/components/documents/viewer/section-machine-gutter.tsx | Component | +15 | -1 |
| src/components/documents/viewer/sections-presentation.ts | Component | +30 | -0 |
| src/components/documents/viewer/use-section-labels.ts | Component | +9 | -0 |
| src/gen/client/appConfirmDocumentRelationship.ts | Generated contract | +70 | -0 |
| src/gen/client/appReleaseDocumentFamilyWave.ts | Generated contract | +73 | -0 |
| src/gen/client/appRevokeDocumentRelationship.ts | Generated contract | +70 | -0 |
| src/gen/client/index.ts | Generated contract | +3 | -0 |
| src/gen/hooks/index.ts | Generated contract | +12 | -0 |
| src/gen/hooks/useAppConfirmDocumentRelationship.ts | Generated contract | +166 | -0 |
| src/gen/hooks/useAppReleaseDocumentFamilyWave.ts | Generated contract | +177 | -0 |
| src/gen/hooks/useAppRevokeDocumentRelationship.ts | Generated contract | +166 | -0 |
| src/gen/index.ts | Generated contract | +99 | -0 |
| src/gen/schemas/authorityCited.json | Generated contract | +74 | -0 |
| src/gen/schemas/documentInsightBrief.json | Generated contract | +370 | -0 |
| src/gen/schemas/documentRelationshipView.json | Generated contract | +71 | -0 |
| src/gen/schemas/familyWaveReleaseView.json | Generated contract | +24 | -0 |
| src/gen/schemas/insightPin.json | Generated contract | +74 | -0 |
| src/gen/schemas/positionAdmission.json | Generated contract | +74 | -0 |
| src/gen/schemas/punchCard.json | Generated contract | +148 | -0 |
| src/gen/schemas/silence.json | Generated contract | +74 | -0 |
| src/gen/types/AppConfirmDocumentRelationship.ts | Generated contract | +81 | -0 |
| src/gen/types/AppReleaseDocumentFamilyWave.ts | Generated contract | +86 | -0 |
| src/gen/types/AppRevokeDocumentRelationship.ts | Generated contract | +81 | -0 |
| src/gen/types/DocumentRelationshipView.ts | Generated contract | +64 | -0 |
| src/gen/types/FamilyWaveReleaseView.ts | Generated contract | +27 | -0 |
| src/gen/types/InsightPin.ts | Generated contract | +5 | -0 |
| src/gen/types/index.ts | Generated contract | +46 | -0 |
| src/gen/zod/appConfirmDocumentRelationshipSchema.ts | Generated contract | +97 | -0 |
| src/gen/zod/appReleaseDocumentFamilyWaveSchema.ts | Generated contract | +98 | -0 |
| src/gen/zod/appRevokeDocumentRelationshipSchema.ts | Generated contract | +97 | -0 |
| src/gen/zod/documentRelationshipViewSchema.ts | Generated contract | +25 | -0 |
| src/gen/zod/familyWaveReleaseViewSchema.ts | Generated contract | +15 | -0 |
| src/gen/zod/index.ts | Generated contract | +38 | -0 |
| src/gen/zod/insightPinSchema.ts | Generated contract | +12 | -0 |