pith:7WOBTVBZ
sciwrite-lint: Verification Infrastructure for the Age of Science Vibe-Writing
A locally running open-source tool can verify that a scientific manuscript's citations exist, are unretracted, and support the claims made about them.
arxiv:2604.08501 v2 · 2026-04-09 · cs.DL · cs.CL · cs.SE
Add to your LaTeX paper
\usepackage{pith}
\pithnumber{7WOBTVBZOD6C5OATS4CB7SUD44}
Prints a linked badge after your title and injects PDF metadata. Compiles on arXiv. Learn more · Embed verified badge
Record completeness
Claims
sciwrite-lint is an open-source linter for scientific manuscripts that runs entirely on the researcher's machine (free public databases, a single consumer GPU, and open-weights models) with no manuscripts sent to external services. The pipeline verifies that references exist, checks retraction status, compares metadata against canonical records, downloads and parses cited papers, verifies that they support the claims made about them, and follows one level further to check cited papers' own bibliographies.
That automated local parsing of cited papers using open-weights models can reliably determine whether those papers support the specific claims made in the manuscript under review, without requiring human context or full-text access beyond what the pipeline downloads.
An open-source local linter verifies reference integrity and claim support in scientific manuscripts using public databases and consumer hardware, with an experimental contribution scoring extension.
Receipt and verification
| First computed | 2026-05-26T02:04:10.452617Z |
|---|---|
| Builder | pith-number-builder-2026-05-17-v1 |
| Signature | Pith Ed25519
(pith-v1-2026-05) · public key |
| Schema | pith-number/v1.0 |
Canonical hash
fd9c19d43970fc2eb81397041fca83e7361757c80433c2a87c5e2958547d986b
Aliases
· · · · ·Agent API
Verify this Pith Number yourself
curl -sH 'Accept: application/ld+json' https://pith.science/pith/7WOBTVBZOD6C5OATS4CB7SUD44 \
| jq -c '.canonical_record' \
| python3 -c "import sys,json,hashlib; b=json.dumps(json.loads(sys.stdin.read()), sort_keys=True, separators=(',',':'), ensure_ascii=False).encode(); print(hashlib.sha256(b).hexdigest())"
# expect: fd9c19d43970fc2eb81397041fca83e7361757c80433c2a87c5e2958547d986b
Canonical record JSON
{
"metadata": {
"abstract_canon_sha256": "260b0e8a956ec7388c521653f356117c9f707a97284f45f4c27e66699a43e1ef",
"cross_cats_sorted": [
"cs.CL",
"cs.SE"
],
"license": "http://creativecommons.org/licenses/by/4.0/",
"primary_cat": "cs.DL",
"submitted_at": "2026-04-09T17:46:44Z",
"title_canon_sha256": "6d02bfeb0564883b0299f0d68a0bd1d644f1d1452e245a072f083479a33e2ca9"
},
"schema_version": "1.0",
"source": {
"id": "2604.08501",
"kind": "arxiv",
"version": 2
}
}