The remote row pointed at 127.0.0.1:18000, a reverse tunnel back to the workstation. On railiance01 the State Hub runs in the cluster on that same machine, so the request left the box and came back to reach a local service. Refs CUST-WP-0067-T07 Assistant: claude-code Assistant-Model: opus Assistant-Process: 2583210@bnt-lap001 Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006 |
||
|---|---|---|
| .claude/rules | ||
| .forgejo/workflows | ||
| registry | ||
| src/work | ||
| workplans | ||
| .custodian-brief.md | ||
| .gitignore | ||
| .repo-classification.yaml | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| eslint.config.js | ||
| INTENT.md | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| SCOPE.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
citation-work
A document review workspace — the React surfaces for the review workflow: collection list, viewer shell, evidence sidebar, annotation create flow, and review-oriented upload/navigation shell.
Published as the @citation-evidence/work package and consumed by the
citation-evidence umbrella app's review mode.
Current state
This repo is now the code of record for the review workspace. The slice was
extracted from the umbrella app under CWORK-WP-0001; citation-evidence no
longer carries a local src/work/ implementation and instead depends on this
package (its @work alias resolves here).
Package surface (src/work/index.ts):
- Shell:
ReviewShell— the three-pane review layout (collection · viewer · sidebar) - Panes:
CollectionList,ViewerShell,EvidenceSidebar - Capture/edit:
InlineCaptureForm,EvidenceFormBody - Upload:
UploadDropzone(also the defaultReviewShellupload slot) - Providers/hooks:
EngineProvider,SessionProvider, and the associateduse*hooks;useExportEvidence;useDebugFlag
Upload seam decision (T03)
UploadDropzone is owned by this package — it depends only on @source and the
local engine/session hooks, so the shell renders a complete review surface with
no umbrella-local imports. ReviewShell still exposes an upload slot so a
consumer can substitute its own affordance; when omitted, the package default is
used.
Boundary
citation-work depends on:
@citation-evidence/engine@citation-evidence/evidence-anchor@source(PDF ingestion + viewer-url policy)
It may not import from binder-owned or umbrella-app-owned review-to-form
code. The dependency edges are enforced by eslint-plugin-boundaries in
eslint.config.js.
Alias / extraction notes
citation-engine and evidence-anchor are extracted sibling packages and are
consumed by their package names. @source/* still resolves into the umbrella's
src/source façade because that façade owns the local viewer-url policy that
is not part of the extracted evidence-source package. This is the one
remaining transitional edge; see the deferred list below.
Deferred after this extraction
The following were intentionally not part of CWORK-WP-0001 and remain for a
subsequent workplan slice (see the workplan's "Deferred After This Workplan"
section for the authoritative list):
- collection search / filter UX,
- document review-status interactions,
- evidence-item status / tagging / filtering UX,
- binder-integrated review-to-form workflows,
- new viewer/document-format features beyond the current PDF slice,
- retiring the
@sourcefaçade edge once aviewer-urlhome is decided (either a small local module here or anevidence-sourceaddition).
Verification
pnpm install
pnpm typecheck
pnpm lint
pnpm test