Reference verification infrastructure built in Rust for academic and legal citation workflows. Connects Claude to CSL JSON canonicalization, Crossref and DOI provider verification, in-text citation reconciliation, and export to EndNote, Zotero, and BibLaTeX formats. Exposes operations for extracting references from documents, cleaning and standardizing bibliographic records, queuing uncertain entries for manual review, and generating integrity audit reports. Reach for this when you need auditable citation cleanup in research writing, publisher pipelines, or agent workflows that produce academic documents. Currently a technical preview with DOCX and PDF extraction hardening in progress. Includes CLI bench mode and coverage gating above 85 percent branch coverage.
Sourceright is Rust-first reference triage and verification infrastructure for academic writing, agent workflows, and future legal citation work. It is currently a technical preview suitable for developer evaluation and pilot conversations.
Sourceright takes references from documents or text, produces canonical CSL JSON, standardises and cleans the records, collects provider evidence, routes uncertain records to manual review, and exports clean reference files for tools such as EndNote, Zotero, and BibLaTeX.
It does not claim to be a production-ready institutional product, a court filing compliance system, or a substitute for examiner-grade final verification. Robust DOCX/PDF extraction, live core-provider checks, better citation disambiguation, URL/archive integrity, and low-noise writeback suggestions remain hardening tracks.
document/text
-> extracted references and in-text citations
-> references.csl.json
-> standardisation, cleaning, verification, enrichment
-> references.verification.json and review-queue.jsonl
-> conflict resolution, citation reconciliation, and reference integrity reports
-> XML, ENW, RIS, BibLaTeX, and YAML exports
See conductor/tracks.md for the implementation track map. The canonical requirements and repo contract are in docs/src/feature-contract-matrix.md, with the design diagrams in docs/src/design.md.
The Rust core now includes canonical CSL handling, verification sidecars, intake segmentation, provider evidence normalization, cleaning, conflict resolution, citation reconciliation, manual review queues, reporting, exports, journal screening contracts, legal citation records, and claim/source provenance graphs. It should be treated as a structured triage and audit workflow and technical preview until tracks 36-40 close the examiner-grade verification gaps. Imported reference workflow material lives under legacy/humanizer-next/ as provenance and regression material until audited, ported, or retired.
sourceright init [document-or-directory]
sourceright validate-csl [--json] <references.csl.json>
sourceright report [--json|--mcp-resource] [.sourceright-directory]
sourceright export --preview --all [.sourceright-directory]
sourceright bench [--json]
sourceright citation-sync [--preview|--apply] [.sourceright-directory]
sourceright mcp
bench runs the checked-in fixture suite without live providers. The benchmark
surface is a technical preview for deterministic regression and stress checks.
citation-sync defaults to preview mode and requires explicit --apply before
writing audit logs or remote fixture snapshots.
sourceright CLI binary.sourceright mcp server mode.server.json +
Dockerfile labels.glama.json.release-status.md artifacts from the release and tag-triggered publish workflows.coverage-status.md artifacts from the scheduled coverage workflow.docs/src/release-runbook.md, docs/src/coverage-reporting.md, and docs/src/docs-cutover.md for the operational sequence behind those tracks.v*.*.* tags now auto-start the crate publish workflow, and the MCP registry workflow follows the release workflow completion.server.json (io.github.edithatogo/sourceright)Dockerfile labels:
io.modelcontextprotocol.server.nameorg.opencontainers.image.sourceglama.jsoncargo check
cargo test
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo run --bin sourceright -- bench
cargo package --locked
cargo publish --dry-run --locked
cargo machete
cargo semver-checks check-release --release-type minor # advisory until the public Rust API is stabilized
cargo deny check advisories bans sources
cargo tree -d --locked
taplo lint Cargo.toml book.toml deny.toml lychee.toml rust-toolchain.toml taplo.toml typos.toml fuzz/Cargo.toml plugins/**/*.toml .cargo/config.toml
typos --config typos.toml
npm --prefix docs-site run typecheck
vale --minAlertLevel=error README.md docs/src docs/import-manifest.md .github/copilot-instructions.md
npx --yes markdownlint-cli2@0.18.1 README.md "docs/**/*.md" ".github/**/*.md"
lychee --config lychee.toml --offline README.md docs/src/**/*.md docs/import-manifest.md
actionlint
zizmor --min-severity medium .github/workflows
cargo llvm-cov --locked --all-targets --fail-under-lines 85
cargo mutants --workspace
pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/verify.ps1 -CoverageMinimum 85
Coverage stays gated above 85 percent line coverage in CI and in the checked-in pre-commit hook.
Release and publish workflows each emit a release-status.md artifact so the
latest tag has a named checklist surface.
Coverage runs emit a coverage-status.md artifact so the latest numeric report
has a named checklist surface.
Licensed under either of:
at your option.