Both repos green: evidence-anchor (30 tests, typecheck, lint); citation-evidence
post-cutover (typecheck, 95 tests, build) at d145148. Workplan frontmatter set
to finished; all seven tasks done. Follow-on gaps registered as EANCH-WP-0002
and EANCH-WP-0003.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Draft two proposed workplans instead of expanding this slice:
- EANCH-WP-0002 anchor-resolution-hardening (stale/orphan, fuzzy re-anchoring,
promote PdfSpikeViewer to a production PDFViewerAdapter)
- EANCH-WP-0003 non-pdf-selectors (HTML/Markdown DomRange+Structural, non-PDF
viewer adapter; starts with a citation-engine shared-type contract change)
Add an explicit gap map to WP-0001 T06. fix-consistency (C-06) will register
both in the hub during T07.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
T01-T04 extracted + verified green. T05 (umbrella cutover) not attempted:
citation-evidence main has another session's uncommitted evidence-source
extraction touching package.json and the shared anchor-source-roundtrip test.
Set T05 status=wait with a documented cutover plan; ralph loop deactivated
pending human coordination.
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>
Move types.ts, selectors/{index,create,resolve}.ts, and pdf-selector-math.ts
out of citation-evidence/src/anchor/ into src/ (pdf math under src/pdf/).
Rewrite all @shared/* imports to @citation-evidence/engine/shared; wire the
public entrypoint (src/index.ts) and the ./pdf subpath. Port the three unit
suites. Confidence ladder and selector-redundancy rules preserved verbatim.
Verified: pnpm test (29 passed), typecheck, and lint all green.
Also adds Node/TS .gitignore entries and the pnpm lockfile.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add package.json (name evidence-anchor, exports . and ./pdf, scripts
test/typecheck/lint), tsconfig.json (mirrors engine, DOM+jsx), vitest.config.ts
(happy-dom + react plugin), eslint.config.js (confines viewer libs to src/pdf/),
.nvmrc, and placeholder src entrypoints. Depends on @citation-evidence/engine
via sibling-checkout link only; no citation-evidence internals.
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>
Sync AGENTS.md, CLAUDE.md, and .claude/rules from updated project_rules
templates: workplan-first session protocol, legacy terminology footnote,
and GET /workplans/ examples.
Reviewed for the reuse-surface capability registry coverage campaign;
no reusable capability to register at this time. See file for rationale.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Align agent files with on-disk workplan prefixes (infer from workplan ids)
- Set workplan domain to registered domain_slug; add topic_slug where applicable
- Repair frontmatter delimiter formatting; migrate legacy task status literals
- Regenerate AGENTS.md, CLAUDE.md, and .claude/rules from State Hub templates
Add EANCH-WP-0001-intent-placeholder.md so consistency sweeps pass C-01 while this repo remains
INTENT-only. Implementation stays in citation-evidence until extraction.
Hub workstream id is written in frontmatter from fix-consistency.
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>
Documents the umbrella-first MVP decision (2026-05-24). This repo remains
INTENT-only until the anchoring interfaces stabilize through real product
use (in particular, after PDF selector round-trip is validated end-to-end).
Reaffirms: anchor depends only on engine; selector types in engine, selector
algorithms here.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>