Add ./selectors and ./types subpath exports so node-env consumers get a
pdfjs-free entry (the umbrella roundtrip test uses them). Update README status
to 'extracted; umbrella consumes this package'. Mark T05 done; record the
blocker as resolved. Umbrella verified green (typecheck, 95 tests, build) at
citation-evidence@d145148.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The umbrella's DOM tests vi.mock the single @anchor/index barrel (spreading
the original and overriding PdfSpikeViewer). To keep the cutover a mechanical
specifier swap and preserve those mocks, the evidence-anchor root re-exports
the full surface (pure core + PDF adapter), matching the prior @anchor/index.
evidence-anchor/pdf remains a focused viewer entry. Viewer code still lives
only under src/pdf/ (eslint-enforced). Repo stays green: 30 tests, tc, lint.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Move pdf-viewer-adapter-spike.tsx, scroll-job.ts (+test), highlight-styles.css
and debug-textlayer.css into src/pdf/ (the adapter boundary). Rewrite the
spike's @shared import to @citation-evidence/engine/shared and its ./types to
../types. Add src/css.d.ts so tsc accepts side-effect .css imports.
Decisions:
- adapter stays the explicitly-named PdfSpikeViewer spike; promotion to a
production PDFViewerAdapter is registered as T06 follow-on work
- viewer libs (pdfjs-dist, react, react-pdf-highlighter-plus) confined to
src/pdf/ and exposed only via the evidence-anchor/pdf subpath; the root
entrypoint stays pure. Boundary enforced by eslint no-restricted-imports.
- ported unit suites (pdf-selector-math round-trip + scroll-job retry) serve
as the inspectable harness for capture->selectors->resolve->scroll.
Verified: pnpm test (30 passed), typecheck, lint all green. README layout updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Finish SCOPE.md (boundary, maturity, deps, non-goals + capability blocks),
rewrite README.md as an extraction-oriented package doc with the initial
src/ module layout (selectors/pdf/highlight) and public API surface.
Selector types stay in citation-engine; selector behavior + viewer
contract owned here (ADR-0006 / SharedContracts §8).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Code lives upstream in citation-evidence/src/anchor/ during the MVP.
README documents that, points at SharedContracts.md for the viewer
adapter contract, and notes anchor's dependency-map constraints
(imports shared/engine only).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>