Most bibliography failures show up the night before arXiv or the journal deadline:
placeholder DOIs, year pasted into volume=, inverted page ranges,
invented case reporters, titles that never existed. The fix is not another
one-off script — it is a paper repo that fails closed from day one.
pip install https://github.com/SybilGambleyyu/citesure/releases/download/v0.5.68/citesure-0.5.68-py3-none-any.whl
citesure init my-paper
cd my-paper
# edit refs.bib …
citesure gate . --preset ci # offline floor
citesure gate . --preset arxiv # live multi-source before submit
citesure init writes:
refs.bib — empty bibliography with a pointer to the gate.pre-commit-config.yaml — offline gate --preset ci + soft-lint on every .bib edit.github/workflows/citesure.yml — CI gate with SARIF + optional live arXiv presetCITESURE.md — short usage for coauthorsFresh empty bibliographies pass the hard-ID floor (there is nothing to cover yet). As soon as entries appear, floors apply again.
url=Fifty-five live-clean domain packs (demography, sociology, political science, anthropology, ML, law, ecology, …) ship in the wheel. Maintainers run:
citesure packs --gate-all
citesure packs --run anthropology-classics
Evidence on the latest release: 256/256 integrity · 209/209 claim pairs · 139 unit tests · 55 packs.
Serious work does not need another citation manager. It needs a
CI-grade integrity gate that authors, pre-commit, GitHub Actions,
and coding agents all call the same way. init is the on-ramp;
gate is the bar.
Source: github.com/SybilGambleyyu/citesure · Demo: citesure.sybilgambleyyu.workers.dev · Latest: releases