Gate A — Technical
Owner: Engineering. Sign-off: written, by the engineering lead.
The 16 checks
Section titled “The 16 checks”| # | Check | Condition |
|---|---|---|
| A.1 | robots.txt reachable, valid, AI-bot allowlist matches template, Content Signals comment block present | always |
| A.2 | sitemap.xml reachable, parses, <lastmod> recent, no thin/archive URLs | always |
| A.3 | /llms.txt serves text/plain, under 50 KB, structured per spec | always |
| A.4 | llms-full.txt per major section serves markdown, each under 200 KB | always |
| A.5 | Markdown returns Content-Type: text/markdown + Vary: accept + x-markdown-tokens on Accept: text/markdown | always |
| A.6 | /{slug}/index.md URL fallback returns the same markdown as A.5 for all indexable pages | always — most agents do not send the Accept header |
| A.7 | Link: rel="alternate"; type="text/markdown" header on HTML responses | always |
| A.8 | content-signal header on public pages only (not wp-admin, REST, cron, authenticated) | always |
| A.9 | /.well-known/agent-statement.json returns 200, valid JSON, schema-validated | always |
| A.10 | /.well-known/api-catalog returns 200, RFC 9727 shape | if APIs |
| A.11 | OAuth metadata endpoints valid (RFC 8414, RFC 9728) | if APIs |
| A.12 | MCP Server Card + Agent Skills index serve and validate | if MCP |
| A.13 | Web Bot Auth directory at /.well-known/http-message-signatures-directory; signatures verify with Cloudflare verifier | if site originates bot traffic |
| A.14 | Schema.org JSON-LD validates (Google Rich Results Test + Schema.org Validator) | always |
| A.15 | All indexable content renders without JavaScript | always |
| A.16 | IsItAgentReady passes all in-scope checks; out-of-scope items documented in engagement brief | always |
Items A.10–A.13 apply conditionally on property type. Out-of-scope items must be documented in the engagement brief and explicitly excluded — not silently failing.