# An IETF draft makes an AI crawler's compliance claim falsifiable, not true

> draft-reilly-aipref-compliance-00, an individual submission dated 2 August 2026, defines a signed record binding a fetched asset, the preference in force when it was fetched, and the usage category the AI system assigned to it. Its own abstract says the mechanism is confined to evidence and takes no position on the legal effect of any preference.

- Canonical page: https://lantad.co/blog/compliance-records-are-falsifiable-not-proof
- This file: https://lantad.co/blog/compliance-records-are-falsifiable-not-proof.md
- Last substantive update: 2026-08-10

## Key facts

- **Published:** 2026-08-10
- **Category:** Findings
- **Author:** Lantad
- **Length:** 3649 words
- **Takeaway 1:** draft-reilly-aipref-compliance-00, titled Verifiable Compliance Records for AI Usage Preferences, carries the date 2 August 2026, runs to 19 pages, is marked Standards Track with an expiry of 3 February 2027, and is an individual submission by one independent author rather than a working group document.
- **Takeaway 2:** The draft defines an AI Usage Compliance Record with nine required members, among them a digest of the asset as received, a digest of the preference expression as retrieved, and the usage category the processing entity assigned, which the draft names as the member that makes the record falsifiable.
- **Takeaway 3:** The AI Preferences working group's own two documents are still split, as listed on the IETF datatracker on 10 August 2026: draft-ietf-aipref-vocab-06 dated 28 April 2026 is active, while draft-ietf-aipref-attach-04 dated 28 October 2025 has been expired since 1 May 2026, so a preference has no standardised place to live.
- **Takeaway 4:** The same draft states that its mechanism is deliberately confined to evidence, that it makes claims of compliance falsifiable and non-repudiable, and that it takes no position on the legal effect of any preference or record, and it excludes any attestation about model internals, training procedures or dataset composition.
- **Takeaway 5:** Lantad measured nothing in this post. It has audited no AI vendor, holds no compliance record from any processing entity, and reports the state of these documents as read on the IETF datatracker on 10 August 2026.

## Summary

A preference is a statement about the future. Robots.txt says which paths a named crawler may fetch, the IETF vocabulary for AI usage preferences says whether an asset may be used for training or for search, and a licensing directive says which terms govern the result. All three are written before the fetch, by the party that does not perform it. None of them produces anything afterwards saying what happened.

That asymmetry is the subject of a new IETF document. [draft-reilly-aipref-compliance-00](https://datatracker.ietf.org/doc/draft-reilly-aipref-compliance/), titled Verifiable Compliance Records for AI Usage Preferences, carries the date 2 August 2026 and one author, Lawrence John Reilly Jr, with the affiliation Independent. It is an individual submission rather than an adopted working group document, a distinction that decides how much weight it carries and is covered below. What it proposes is the missing half of every preference mechanism this site has written about: a signed, aggregated, auditable record of what an AI system did with a page it fetched. Lantad has measured none of this and holds no such record from any vendor. This post reports the document, then separates what a record of that kind would establish from what an outside measurement of your own site already establishes today.

## What a publisher cannot determine about a crawler that already left

The document opens by naming the problem more precisely than most writing about AI crawlers manages. Both halves of the working group's charter, it observes, are concerned with the publisher side of the exchange: a publisher can state a preference and can make that statement discoverable. What the publisher cannot do, in the draft's words, is determine whether the statement was read, which interpretation was applied to it, or what the processing entity subsequently did with the asset.

Everything a site owner can check today sits on one side of that line. [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) standardises robots.txt and states in its first section that the rules are not a form of access authorization, which is the specification saying out loud that it describes a request rather than a lock. The vendor documentation has the same shape. [OpenAI documents four tokens](https://developers.openai.com/api/docs/bots), OAI-SearchBot, GPTBot, ChatGPT-User and OAI-AdsBot, each with a stated purpose. [Anthropic's crawler page](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler), carrying a last updated date of 7 April 2026, documents ClaudeBot, Claude-User and Claude-SearchBot and states that its bots respect do not crawl signals by honouring industry standard directives in robots.txt. [Perplexity documents PerplexityBot and Perplexity-User](https://docs.perplexity.ai/guides/bots) and says of the user triggered fetcher that since a user requested the fetch, this fetcher generally ignores robots.txt rules.

Read those three pages together and the pattern is commitments about fetching, published by the party doing the fetching, with at least one documented exception among them. None of the three produces an artefact afterwards. A site owner who wants to know whether a commitment held has to go and measure it, which is what a readability scan of [an AI crawler](https://lantad.co/glossary/ai-crawler) request does from the outside, and even a flawless outside measurement stops at the response. It can establish what was served. It cannot establish what was kept.

The gap is not theoretical, and the effort required to close it even partially is worth looking at. A canary token study from Duke University, the University of Pittsburgh and Carnegie Mellon, [posted to arXiv on 13 May 2026](https://arxiv.org/abs/2605.13706), served unique tokens to each visiting scraper across purpose built websites and then queried 22 production AI chatbot systems to see which tokens came back in their answers. We covered the result when it found that [a robots.txt block did not stop 12 of 18 measurable chatbots](https://lantad.co/blog/robots-txt-block-did-not-stop-twelve-chatbots) from returning the sites' content. The method deserves attention separately from the finding: to answer the question of what an AI system did with a page, three universities had to build decoy websites and interrogate the models. That is currently the state of the art in verifying a preference, and it is not something a publisher can run on its own site on a Tuesday afternoon.

## What an AI Usage Compliance Record actually contains

Section 4 of the draft defines the record. It is an information model rather than a wire format, and it carries nine required members.

Three of them pin the asset. The member named asset-digest is a digest of the representation of the asset as received, computed over the octets of the response body after decoding of any content codings, which is a careful way of saying the bytes that arrived rather than the bytes on anyone's disk. The member named asset-locator is the URI the asset was retrieved from, and the draft is explicit that it is informational with respect to identity: the digest identifies the content, the URL only says where it was found. The third, retrieval-time, records when the response was received as an integer number of seconds since the epoch.

Three more pin the preference. The member named preference-source says where the preference expression was obtained, drawn from a registry the draft defines. Its companion preference-source-digest is a digest over the octets of that source as retrieved, and it is the member that would let a later argument about what your file said on a given day settle rather than continue. The third, preference-observed, is the set of preference terms the entity determined to be applicable to that asset. Together those three record not only the file but the reading of it, and the reading is where a surprising share of robots.txt disagreements actually live: two parsers looking at one file and resolving different rules for the same token, which is why [the robots.txt tester](https://lantad.co/tools/robots-txt-tester) takes a crawler name as input rather than answering yes or no.

The last three are the interesting ones. The member named usage-category is the usage category the processing entity assigned to the asset, and the draft describes it in a single line as the member that makes the record falsifiable. The member named disposition summarises the relationship between the preference observed and the usage assigned. The member named agent-identity is an identifier for the signing identity under which the retrieval was performed, which is the hook into the separate work on [proving a request came from who it claims](https://lantad.co/blog/what-web-bot-auth-actually-specifies) rather than from anyone with a text editor and a user agent string. Two optional members follow: a timestamp for the preference source, and a retention statement.

Compare that shape with what a robots.txt line carries, which is a path pattern and a verb. [The preferences vocabulary](https://datatracker.ietf.org/doc/draft-ietf-aipref-vocab/) adds two usage categories, train-ai and search, each set to yes or no, and we covered its state alongside the expired attachment draft in [the AI preferences standard you cannot deploy yet](https://lantad.co/blog/the-ai-preferences-standard-you-cannot-deploy-yet). None of those carries a timestamp, a digest or an identity, because none of them is a record of an event. This draft is the first document in the area whose subject is the event rather than the rule.

## How one signature can cover a day of fetches

One record per fetch is a great many records. A crawler operating at web scale retrieves millions of assets a day, and signing each record on its own would produce a volume of signatures nobody would ever verify. Section 5 handles that the way certificate transparency does. Records are aggregated into a Merkle tree, the root of each epoch is signed, and the result is a Compliance Attestation covering an arbitrary number of records at constant cost. An epoch must not exceed 24 hours. Leaves are ordered by a tuple of the asset locator's authority component, then the locator, then the digest, compared as octet strings, and that ordering is what makes one publisher's records a contiguous range in the tree rather than a scatter through it.

The attestation is a COSE_Sign1 structure whose payload carries the epoch identifier, the epoch's start and end times, the Merkle root, the leaf count, the hash algorithm identifier, and the identifier of the immediately preceding epoch's attestation. That last field is what turns a pile of signed statements into a chain. An entity that quietly drops an epoch leaves a hole a verifier can see, which is a different and better property than an entity that simply publishes less.

Section 6 defines the audit itself. A publisher asks for the records whose asset locator authority component matches an origin over which it has demonstrated authority, and receives them together with proofs of their inclusion in that epoch's attested root. Because the leaves are sorted, the response can prove it is complete rather than merely consistent: the draft requires inclusion proofs for the leaves immediately preceding and following the returned range, which establishes the boundaries of that range and so shows that nothing inside them was held back. That completeness property is the part most transparency schemes get wrong, and getting it right is the strongest engineering in the document.

Section 7 says where any of this is found. A processing entity producing attestations publishes a JSON document at the well known path /.well-known/ai-usage-compliance carrying its verification keys as a JWK Set, the most recent attestation identifier with a means of enumerating prior ones, and the audit interface URI, with a transparency service identifier as an option. The domain that document sits on must be the same domain the entity's request signing keys are published from. Section 8 then makes the composition explicit: where an entity already signs its requests using [HTTP Message Signatures](https://www.rfc-editor.org/rfc/rfc9421.html), the two mechanisms compose directly and, in the draft's wording, SHOULD be deployed together, using the same key or publishing both keys in one JWK Set so that their common control is evident.

Taken together it is a coherent design, and the coherence is a reason to read it closely rather than to assume it changes anything about [AI visibility](https://lantad.co/glossary/ai-visibility) yet. The draft lists thirteen sections, ending with security, privacy, IANA considerations and open issues, and none of the thirteen is an implementation status.

## Falsifiable is not the same as true

One sentence in the abstract should govern how this draft is reported anywhere. The mechanism, it says, is deliberately confined to evidence: it makes claims of compliance falsifiable and non-repudiable, and takes no position on the legal effect of any preference or any record.

Falsifiable is a precise word and it is not a synonym for true. The usage category inside a compliance record is assigned by the processing entity itself. Nobody stands behind the model checking that a page filed under search was not also used for training. What the signature buys is that the entity cannot later say it never made the claim, and what the digests buy is that the claim is anchored to specific bytes and a specific preference file rather than to a general assurance about company policy. If anyone can later show that same asset inside a training set, the record becomes a contradiction with a signature on it. That is a real improvement on the present position, where a vendor's account of its own conduct is a paragraph on a documentation page that can be edited without trace.

It is still a self-report, and the draft says so by listing what it excludes: the legal effect or enforceability of any preference in any jurisdiction, licensing and compensation and commercial arrangements, enforcement, the preference vocabulary itself, and any attestation about model internals, training procedures, dataset composition, or whether an asset is present in a model. That final exclusion is the one that matters to anyone hoping this settles the training argument. It does not settle it. It records what an entity says it did, in a form where saying something different later has a cost.

A second boundary deserves attention even though the draft does not dwell on it. The scheme describes what a participating entity publishes. It says nothing about a client that publishes nothing, and participation here is voluntary in exactly the way robots.txt compliance is voluntary. An operator willing to ignore a Disallow line is not an operator that will stand up a transparency service and invite audits of it. We reported the measured version of that problem in [sites whose GPTBot ban was served a 200 anyway](https://lantad.co/blog/gptbot-bans-served-a-200-anyway). The population this mechanism can describe is largely the population that was already behaving well enough to be describable, which is a familiar shape in this field: [the RSL licensing directive](https://lantad.co/blog/rsl-license-directive-changes-no-access) binds only clients that have adopted RSL, and its own specification states that the directive does not modify access permissions at all.

None of that makes the draft uninteresting. It makes it a document about evidence rather than a document about control, which is precisely what it says it is on its first page, and it is far more useful read that way than as the thing that finally holds AI companies to account. Most of what circulates as [generative engine optimization](https://lantad.co/glossary/geo) advice would be improved by the same distinction between what a mechanism records and what it compels.

## What you can check on your own site today

Nothing above is deployed, and the sensible thing to do with a proposal at revision 00 is read it rather than plan around it. What is available today is narrower and completely determinate, which is a trade most site owners would take if anybody framed it that way.

Three things about your own site are measurable from outside, repeatably, with no cooperation from any vendor. The first is how your robots.txt resolves for a specific named token, which is a parsing question with one correct answer per token rather than a matter of opinion. The second is what a client without a browser actually receives: the status code, the headers and the bytes. [Two layers decide whether AI can read your site](https://lantad.co/blog/two-layers-decide-if-ai-can-read-your-site), and the file you wrote is the weaker of them, because an edge rule can return a 403 to a request your robots.txt welcomes and nothing reconciles the two automatically. The third is how much of the text a person reads is present in that response before any JavaScript executes, which is [prose parity](https://lantad.co/glossary/prose-parity) and is the largest weighted component of the score described on [the methodology page](https://lantad.co/methodology).

Those three are worth separating from the question this draft addresses, because they fail in different ways. Access failures are binary and loud once somebody looks. Rendering failures are quiet: a 200 carrying an empty shell measures as success on every check that stops at the status code, which is why a scan that reads only headers reports a healthy site that no [answer engine](https://lantad.co/glossary/aeo) can quote. Provenance failures, meaning what happened to the content after it left your server, are not measurable by anyone outside the vendor today, and this draft is the first serious attempt to change that.

It also explains why this site withholds a grade rather than guessing when something could not be measured, which we set out in [why we withhold a grade](https://lantad.co/blog/why-we-withhold-a-grade). The same discipline applies to a post about somebody else's specification. Lantad has audited no vendor, holds no compliance record, and has no view into what any AI system retains after a fetch. [What a scan can see](https://lantad.co/tools/what-gptbot-sees) is one side of one request, and saying that plainly is more useful to somebody making a decision than an implied claim to see both sides.

If the draft is adopted, the thing to watch is not the cryptography, which is conventional and well chosen. It is whether any processing entity publishes a well known document at all. A transparency scheme with no participants is a specification rather than a check, and the answer to that will arrive as a file at a fixed path on a vendor's domain, which is the one part of this whole design that anyone will be able to verify for themselves the moment it exists.

## Questions and answers

**Is there now a standard way to prove an AI crawler honoured my robots.txt?**

No. draft-reilly-aipref-compliance-00 carries the date 2 August 2026 and is an individual submission, which holds no formal standing in the IETF standards process, and it proposes a mechanism rather than describing a deployed one. The working group's own attachment draft, which would define where a preference is written in the first place, has been listed as expired since 1 May 2026.

**What is an AI Usage Compliance Record?**

A structure defined in that draft binding three things together: a digest of the asset as it was received, a digest of the preference expression in force when it was retrieved, and the usage category the AI system assigned to that asset. Nine members are required in total, and records are signed by the identity under which the retrieval was performed.

**Does a signed compliance record prove what an AI system did with my page?**

No, and the draft does not claim it does. The usage category is assigned by the processing entity itself. Signing and aggregation make that claim non-repudiable and contradictable later, which the draft calls falsifiable. The document explicitly excludes any attestation about model internals, training procedures, dataset composition, or whether an asset is present in a model.

**What can I actually verify about my own site today?**

What a named crawler token receives when it requests your pages. That is determinate and repeatable: how your robots.txt resolves for that specific token, the status code returned to it, and how much of the text a person reads is present in the served HTML before any JavaScript runs. What an AI system does after that fetch is not observable from your origin, with or without this draft.

---

Lantad measures whether AI crawlers can actually read a page: it fetches as a non-rendering
crawler, renders as a browser, and reports the gap. Free scan, one URL, no signup.

Method and weights: https://lantad.co/methodology | All pages as markdown: https://lantad.co/md | Crawler policy: https://lantad.co/bot
