CrawlCheck

Evidence · ledger

Dispute and correction ledger

Every finding can be disputed by the site’s owner. The finding is re-measured from more than one network, the verdict comes from a fixed table, and the resolution is signed and published here, including when CrawlCheck was wrong.

1 dispute, 1 resolved (1 upheld).

DisputeSite and findingFiledOutcome
dsp1:ae3bb8c8…supremelandscapersdenver.com · PAGE_IS_MOSTLY_CODE2026-10-02Upheld: the finding stands

File a dispute

POST /api/disputes with {"report_id": "…", "code": "…", "path": "/", "ground": "misread | fixed | network | rule", "statement": "what the finding gets wrong"}. With a licence for the domain (header x-crawlcheck-key) or the owner’s session it is accepted at once. Without one, the answer carries a token: serve it as the line crawlcheck-dispute=<token> at https://<domain>/.well-known/crawlcheck-dispute.txt and POST /api/disputes/confirm {"id": "…"}. Nothing about the record is checked or revealed until ownership is proven.

Once accepted: the rule is run again over the bytes the disputed scan sealed; CrawlCheck runs a fresh audit from Cloudflare; the URL goes to the front of the independent observers’ queue. The resolution is signed when one of them has read it, or after 48 hours. The disputed record is never edited: it is sealed. Instead every record that carries the finding links the dispute (findings[].disputes in the machine record, disputes in /api/explain).

How a dispute is decided

Three readings, then a fixed table. The table is the function dspVerdict; the offline verifier carries the same function and re-derives the verdict from the signed record.

IfVerdictEffect
The rule, run again over the exact bytes the disputed scan received, does not holdCorrected: the finding was wrong and is withdrawnThe finding is withdrawn: every record that carries it links this resolution, which says it was wrong.
The primary could not re-measure, or no independent network read the URL before the 48-hour deadlineInconclusiveThe finding stands; the dispute could not be decided and can be filed again.
An independent network received something different from the primaryNetwork-dependent: holds only where it was seenThe finding stands only for the network that observed it; the resolution names the networks that disagree.
The rule holds over the original bytes and the condition is still present from every networkUpheld: the finding standsThe finding stands on the record and on later records.
The rule holds over the original bytes and every network now finds the condition goneFixed since: correct when made, gone nowThe finding stands for the record it was made on; the site no longer has it.
Every network finds it gone and the original bytes could not be re-checkedNo longer observedThe finding stands for the record it was made on; the site no longer has it.