# evidence-binder `@citation-evidence/evidence-binder` — connect evidence items to structured targets (form fields, claims, requirements, …) and render the visual guide that ties a target, its evidence card, and the source highlight together. This is the canonical home of the binder implementation, extracted from `citation-evidence/src/binder/` (EBIND-WP-0001). ## What this package owns - **Evidence links** — `EvidenceLink` repository + binding service (`services/bindings.ts`, `repos/in-memory-links.ts`). Two query directions: *all evidence for a target* and *all targets for an evidence item*. Emits the canonical engine bus events (`EvidenceLinkCreated/Updated/Removed`, `EvidenceItemActivated`). - **Active state** — the `(activeTarget, activeEvidenceItemId, activeAnnotationId)` machine and React provider (`state/active.ts`) that the form UI, evidence sidebar, and viewer adapter coordinate through. - **Rect registry contract** (SharedContracts §7) — a single registry into which independent renderers publish `field` / `evidence-card` / `highlight` rects, plus the change pumps, React hooks, and the SVG `Overlay` that draws the guide (`visual-guide/`). - **Reference form UI** — `FormRenderer` and `FieldDefinitionForm`, kept as supported, target-neutral exports (see `docs/adr/ADR-0001-reference-ui-surface.md`). `BinderProvider` composes all four concerns behind one mount. ## Dependency boundary Per `citation-evidence/wiki/DependencyMap.md` §2, this package **may** depend on `citation-engine` and `evidence-anchor`, and **must not** depend on `evidence-source`, `citation-work`, or the umbrella `citation-evidence`. The MVP slice imports only `citation-engine` (shared types + event bus). The boundary is enforced by `eslint.config.js`. Shared-contract authority stays in the umbrella wiki. ## Develop ```bash pnpm install # links @citation-evidence/engine from ../citation-engine pnpm test # vitest (node + happy-dom suites) pnpm typecheck # tsc -b --noEmit pnpm lint # eslint (enforces the dependency boundary) ``` Requires a sibling checkout of `citation-engine` (see `.nvmrc` for the Node version). See `docs/extraction-inventory.md` for the extraction boundary and resolved contract deltas.