See the gate work
Grounding is easier to trust when you can see it. Here is one sentence draft wrote, the verbatim source span that let it survive the gate, and the attribution entry that binds them.
The source said (verbatim, from the paper):
Rendering-tolerant matching and source-based quote repair cut the verification drop rate from 29.6% to 8.5% across 3,217 extraction blocks.
draft wrote:
Rendering-tolerant matching and source-based quote repair together lowered the drop rate from 29.6% to 8.5% across 3,217 extraction blocks.
The attribution file records the link (…-attribution.json):
Every number in the sentence (29.6, 8.5, 3,217) appears in the quote, and
the quote appears verbatim in the source — the two checks that let this claim
through. Note the sentence keeps the source's joint attribution to both
changes: the gate checks quotes and numbers, so faithful wording is on the
writer, and this is what faithful wording looks like. A sentence without an
attribution entry cannot exist in the article, and draft --verify recomputes
the manifest digests against exactly this.
One paper, start to finish
draft reads the paper, builds a verified claim ledger, writes the article from it, and saves a dated set:
2026-07-29/
├── source/2026-07-29-attention-routing-body.md
├── yaml/2026-07-29-attention-routing-frontmatter.yaml
├── final/2026-07-29-attention-routing-final.md
└── provenance/
├── 2026-07-29-attention-routing-attribution.json
└── 2026-07-29-attention-routing-c2pa.json
The attribution file maps each sentence in the article to the claim, and the verbatim source quote, that backs it. Nothing in the body exists without a line in that file.
Verify it
draft --verify recomputes the digests written beside the article and checks
them. Point it at any file of the set. When a signed .c2pa credential is
present and c2patool is installed, it validates the signature and trust chain
too.
PROVENANCE
✓made by draft 0.0.36
·written with claude sonnet
✓article unchanged since it was written (7254c2c8d463)
✓claim ledger matches the verified claims
GROUNDING
·claims 6 verified
·attribution 22 of 24 sentences rest on a claim
SOURCES
✓2603.23420.pdf unchanged since it was read
SIGNATURE
·signature valid; signing certificate not in a known trust list (e.g. a development certificate)
Verified. The article matches the provenance written beside it.
Edit a sentence the ledger did not support and verification fails — that is the guarantee. It exits non-zero when the article, the ledger, a source, or the signature no longer matches.
A receipt a machine can check
Add --json and --verify emits a portable draft.verification-record/v1
instead of the human report — the digest and whether it matches, the grounding
summary, the source and signature state, and the verdict. The schema lives in
the importable provenance package, so a CI gate or an independent verifier
can consume it without the CLI. Bring your own artifact, verify anywhere.
Signing is opt-in: set DRAFT_C2PA_CERT and DRAFT_C2PA_KEY to a certificate
chain and key. With no certificate, the manifest stays an unsigned definition,
and the record simply omits the signature — everything else still verifies.
Tighten it further: the semantic second gate
The verbatim gate proves a claim's quote is in the source. It does not judge
whether the quote supports the claim — a different subject, or a hedge stated
as settled. --second-gate adds that pass on request: a local model checks each
verified claim, and unsupported ones are dropped before writing.
· read 5 section(s)
· 8 claim(s) verified, 5 dropped
· second gate dropped 1 claim(s) a model found unsupported by their quote
· writing…
It is strictly additive and off by default: the verbatim gate stays the primary check, and a model error keeps the claim rather than dropping it — the pass can only ever tighten the ledger.
A batch, merged into one draft
Offline, on a plane
No network, no API key. The same gate runs; only the writer changes.
A complete, verifiable set from a real run — article, attribution, C2PA manifest and source — is on the provenance & compliance page. More runnable examples live in the repository.