Skip to content
AF

The gates: what this site refuses to ship

Updated 2026-09-04

Before any change to this site is committed, the build runs 193 automated refusals over the rendered output. Each one names a specific way a page can be wrong — a link to nothing, a title that will be truncated, a dataset whose CSV disagrees with its JSON, a link to the company that funds this site with no disclosure beside it. A failed gate is not a warning: the suite exits non-zero and the site does not deploy until the underlying problem is fixed. Weakening a gate to make a change pass is not allowed, which is the only reason a list like this is worth publishing.

The gates are one half of how this site is checked. The other half — primary sources, adversarial review, and what happens when we cannot verify something — is in methodology. When something gets through anyway, it goes in corrections, alongside the errors these gates caught before publish.

Content integrity (12)

CodeWhat the build refuses to ship
DUP-FAQThe same question answered in the FAQ data of two pages, where the two entries would compete in one rich result.
MATRIX-INCOMPLETEThe HealthKit-to-Health-Connect type table with any row missing its Apple or its Android identifier.
APIS-COUNTAn API directory with a different number of product pages than there are products in the cost model.
APIS-MISSINGA build in which a product named by the cost model has no directory page.
APIS-NO-COVERAGEA directory page that lists no pages covering its product, which is a thin page pretending to be an entity.
JSX-ENTITY-SPACEA JSX text run that follows an expression or a tag, starts with a space, contains an HTML entity and spans lines. Next's compiler drops that space, so the page shows the words glued together; 69 such runs were found on 2026-10-12.
AUDIO-EVIDENCEAn audio-coaching page that names a cross-platform framework whose documentation could not be verified, links outside Apple's and Google's developer documentation, or carries a source not checked on the date the page was last updated.
TOOLSA build where an interactive tool page has dropped out, which nothing else would notice because the tools have no data file behind them.
GATE-UNDESCRIBEDA gate that exists in the build but is described nowhere on this page, which would make the published list an understatement.
GATE-STALEA row on this page describing a gate the build no longer runs.
GATE-PAGE-MISSINGA build where this page did not render its table of gates at all.
GATE-PAGE-ROWSA rendered gates table holding a different number of rows than there are described gates.

Search (1)

CodeWhat the build refuses to ship
CANNIBAL-QUERYTwo released entries claiming the same primaryQuery. Pages that bid against each other split their own impressions — a query spread over thirteen of our URLs left every one of them stuck between position 40 and 90 — and the clash is invisible from inside either entry file.

Links and anchors (23)

CodeWhat the build refuses to ship
PHANTOM-LINKA page carrying an internal link to a URL that no built page answers.
LINK-TO-404A site that links to a route which builds a file but renders notFound() to the reader.
ORPHANA published page that no other page on the site links to.
FRAGMENT-NO-PAGEAn internal link carrying a #fragment whose page is not built or renders notFound(), which the plain broken-link check never sees.
FRAGMENT-DEADAn internal link whose #fragment matches no element id on the built page it points into, so the reader lands at the top instead of on the row or answer promised.
HUB-LINKA section hub that does not link every released page in its section, or a section whose hub was not built.
VENDOR-HUB-PAGEA vendor menu whose list names a page that does not build or renders a 404, a hub other than the vendor's integration guide (or, where it has none, its directory entry), or fewer than three pages.
VENDOR-HUB-MENUA page listed as being about a vendor that does not render the vendor's menu, or a vendor's hub that does not carry it at the top.
VENDOR-HUB-LINKA vendor's hub that does not link every page listed as being about that vendor.
VENDOR-HUB-LABELA vendor menu entry whose text differs from the H1 of the page it links to.
VENDOR-HUB-UNLISTEDA page whose address names a vendor that has a menu, or a library whose registry description names one, left off that vendor's list. Such a page would compete with the vendor's hub for its searches instead of linking to it.
QUESTIONS-HUBSA build where a cluster stops generating its /questions index and a whole topic disappears from the list.
QUESTIONS-DEAD-ANCHORA question-index deep link whose FAQ anchor no longer exists on the page it points into.
HCAPI-EQUIV-BACKLINKA HealthKit query page that the HealthKit-to-Health Connect equivalents page maps, or the /healthkit-queries hub, without a link back to that equivalents page, or an equivalents page that was not built.
TYPE-PAGE-UNLINKEDA HealthKit identifier or Wear OS data-type page that its table page, /healthkit-identifiers or /wear-os-data-types, does not link, or a table page that was not built.
METRIC-MAP-NO-PAGEA metric-map pairing whose type is missing from the generated data or has no built reference page, or whose guide is not a built /data page.
METRIC-MAP-LINKA /data guide whose By platform block does not link every type page the metric map pairs with it, or links one it does not, and a type page that does not link back to its guide or claims a guide that does not list it.
FACTS-NO-ANSWERSA build with no answers.json to resolve published fact citations against.
FACTS-ANSWERS-INVALIDAn answers.json that does not parse when the citation anchors are checked.
FACTS-MISSINGAn answers.json with no facts section, so the citable fragment URLs are not published at all.
FACTS-NO-FRAGMENTA published fact whose id has no fragment, leaving nothing precise for a machine reader to cite.
FACTS-NO-PAGEA published fact pointing at a page that is not in the build output.
FACTS-DEAD-ANCHORA published fact whose fragment does not resolve on the page it points into, which would break every citation already made to it.

Metadata (11)

CodeWhat the build refuses to ship
TITLE-*A page whose rendered title tag is longer than 60 characters and would be truncated in results.
DESC-*A page whose meta description is longer than 155 characters.
NO-CANONICALA page with no rel=canonical link telling crawlers which URL is the real one.
NO-OG-IMAGEA page with no og:image, which would share as a blank card everywhere it is linked.
OG-URL-MISMATCHA page whose og:url names a different address from its rel=canonical, so a share and a search result credit two different URLs.
NO-OG-URLAn indexable page that names a canonical but no og:url, so a share of it carries no address of its own.
NOTFOUND-ROBOTSA 404 page carrying anything other than exactly one robots meta tag, and that one saying noindex.
NOTFOUND-CANONICALA 404 page that names a canonical or og:url, which would point every unknown address at a real page.
DUP-TITLETwo pages shipping the identical title tag, so neither can be told apart in a result list.
DUP-DESCTwo pages shipping the identical meta description.
YEAR-MARKERA page whose title or h1 puts a year in parentheses, such as (2026), when that year differs from the year of the newest dateModified in the page's structured data, or when the page declares no dateModified to back it.

Structured data / GEO (20)

CodeWhat the build refuses to ship
BAD-JSON-LDA page carrying a JSON-LD block that does not parse as JSON.
MULTI-BREADCRUMBA page emitting more than one BreadcrumbList, which makes its breadcrumb trail ambiguous.
APIS-NO-ENTITYA directory page with no SoftwareApplication node identifying the product it describes.
GEO-NO-ROBOTSA build with no robots.txt in its output.
GEO-ROBOTSA robots.txt that does not explicitly allow each named AI crawler.
GEO-ROBOTS-SURFACEA robots.txt that does not point crawlers at llms.txt, answers.json and the changes feed.
MACHINE-FILE-INDEXABLEAn /opensearch.xml served without an X-Robots-Tag: noindex header. Google once listed the browser search descriptor in its results as if it were a page.
GEO-ROBOTS-HOSTA robots.txt carrying a Host: line, a second statement of the canonical host outside the one place it is set.
GEO-ROBOTS-UNIFORMA robots.txt with no catch-all group, or with any crawler group whose Allow and Disallow rules differ from the catch-all's.
GEO-NO-ANSWERSA build with no answers.json in its output.
GEO-ANSWERS-INVALIDAn answers.json that does not parse as JSON.
GEO-ANSWERS-COUNTAn answers.json holding a different number of records than there are cluster spokes.
GEO-ANSWERS-FIELDSAn answers.json record missing its question, answer, URL, markdown mirror or last-reviewed date.
GEO-NO-MD-ALTA hub or spoke with no rel=alternate link advertising its markdown mirror.
GEO-NO-DESCRIBEDBYA hub or spoke with no rel=describedby link to its structured description.
GEO-NO-COLLECTIONPAGEA cluster hub with no CollectionPage or ItemList describing what it collects.
GEO-NO-FAQPAGEA spoke page with no FAQPage data, unless it is a post that explicitly opted out.
GEO-NO-SPEAKABLEA spoke page that names no speakable section for voice and assistant surfaces.
GEO-NO-TECHARTICLEA spoke page with no TechArticle node identifying it as documentation.
GEO-NO-FAQ-ANCHORA page publishing FAQ data whose answers carry no per-answer anchor, so an assistant cannot deep link the one it quoted.

Feeds and mirrors (34)

CodeWhat the build refuses to ship
GEO-NO-MD-MIRRORSA build with no /md markdown mirrors at all, leaving machine readers nothing clean to fetch.
GEO-MIRROR-COUNTA build where the number of markdown spoke mirrors does not match the number of spoke pages.
GEO-HUB-MIRRORSA build missing a markdown index for a cluster, or the site index mirror.
GEO-MD-FRONTMATTERA markdown mirror that does not open with the YAML front matter a parser reads instead of prose.
GEO-MD-CANONICALA markdown mirror whose front matter does not name the canonical URL of the page it mirrors.
GEO-MD-REWRITEA cluster missing from the rewrite list, which would make its conventional /cluster/slug.md addresses 404.
GEO-MD-ALT-LOOPA response-header rule that matches a markdown mirror's own address and advertises a .md.md alternate for it, a URL that does not exist.
GEO-MD-LINK-SHADOWEDA response-header rule that sets a Link header on a markdown mirror's address, replacing the canonical the mirror sends for itself.
GEO-MD-LINK-CANONICALA markdown mirror whose Link header is not one canonical-plus-llms.txt value naming the same URL as its front matter and its HTML page.
GEO-ALT-HEADERA spoke or blog post whose HTTP Link header does not name its own markdown mirror and llms.txt, or a hub or the homepage whose header does not name llms.txt.
GEO-NO-LLMSA build with no llms.txt in its output.
GEO-LLMS-MISSINGA spoke page that llms.txt does not list, so a model reading the index never learns it exists.
GEO-LLMS-SURFACEAn llms.txt that fails to advertise the answers, changes and full-text surfaces.
GEO-NO-CHANGES-FEEDA build with no changes.xml in its output.
GEO-CHANGES-FEED-EMPTYA changes feed that contains no items.
ICS-MISSINGA build with no changes calendar in its output.
ICS-EMPTYA changes calendar containing no events.
ICS-PARITYA changes calendar holding a different number of events than the changes feed holds items.
ICS-UNTERMINATEDA calendar file with no END:VCALENDAR, which a strict client will reject outright.
ICS-FOLDA calendar file with lines over the 75-octet limit the format allows.
ICS-LINE-ENDINGSA calendar file that is not CRLF-terminated as the format requires.
FEED-COUNTA build with a different number of per-cluster RSS feeds than there are populated clusters.
FEED-EMPTYA cluster feed that contains no items.
FEED-NO-SELFA cluster feed with no self link, so readers cannot tell where it lives.
FEED-UNESCAPED-AMPA feed containing a raw ampersand outside CDATA, which breaks strict readers.
FEED-NO-JSONA build with no feed.json in its output.
FEED-JSON-VERSIONA feed.json that declares no JSON Feed version, so conforming clients will not read it.
FEED-JSON-ITEMSA feed.json with no items array.
FEED-JSON-INVALIDA feed.json that does not parse.
NO-OPENSEARCHA build with no OpenSearch descriptor in its output.
OPENSEARCH-TARGETAn OpenSearch descriptor that does not point at the site's own results page.
NO-MANIFESTA build with no web app manifest in its output.
MANIFEST-FIELDSA web app manifest missing its name, start URL or icons.
MANIFEST-INVALIDA web app manifest that does not parse as JSON.

Datasets and artifacts (23)

CodeWhat the build refuses to ship
DATASET-UNGATEDA dataset published under /datasets that no check in the QA suite covers.
DATASET-MISSINGA build where a dataset the site advertises has no JSON or no CSV file on disk.
DATASET-EMPTYA dataset file whose items array is empty, which a generator can produce silently.
DATASET-NO-LICENCEA dataset published without the licence field that tells a reuser what they may do with it.
DATASET-CSV-ROWSA dataset whose CSV export carries a different number of rows than its JSON.
DATASET-INVALIDA dataset JSON file that does not parse.
KIT-MISSINGA build where a file in the downloadable decision kit is absent.
KIT-EMPTYA kit file that exists but is zero bytes.
KIT-UNGATEDA file published under /kit that no check in the QA suite covers.
DATASET-NO-MANIFESTDatasets published without the manifest that records their hashes and row counts.
DATASET-UNMANIFESTEDA dataset the manifest does not cover, so its changes never show up in the published diff.
DATASET-MANIFEST-STALEA manifest whose recorded byte sizes disagree with the dataset files actually on disk.
API-OPENAPIA build whose /api/v1/openapi.json is missing, is not OpenAPI 3.1, documents a path outside /api/v1, or describes an item path without listing the ids it serves, which would leave its promised URLs uncheckable.
API-NOT-BUILTAn API path the OpenAPI document promises that the build did not write, or wrote as anything other than a 200 JSON response.
API-UNDOCUMENTEDAn /api/v1 response the OpenAPI document does not describe, which no client reading the document would ever find.
API-HEADERSAn API response served without Access-Control-Allow-Origin: *, a Cache-Control max-age, or the noindex that keeps machine files out of search results.
API-ENVELOPEAn API response without its CC BY 4.0 licence, its attribution, its source page, or a verified date that says what it means.
API-SOURCE-DEADAn API response whose source link points at a page the build did not produce, or at an anchor that page does not have.
API-ROWSAn API collection that serves a different number of rows than its dataset holds, beyond the ones it lists as excluded with a reason, or a row without its own item URL.
API-UNADVERTISEDAn API or MCP endpoint that llms.txt, robots.txt or the /developers page fails to name, so an agent or a developer could not discover it.
MCP-ROUTEA hosted MCP endpoint that is missing, prerendered instead of answered per request, or allowed to run longer than ten seconds.
MCP-TOOLSAn MCP tool not annotated read-only, or one whose answer over the published datasets drops the source line or cites a dataset that is not published.
MCP-SERVER-JSONAn MCP Registry entry that disagrees with the package it describes: another name, version or URL, a description over the registry's 100 characters, or a package that would ship without its data.

Disclosure (3)

CodeWhat the build refuses to ship
KINESTEX-NOTEA build where the disclosed first-party link renders on a different number of pages than the map declares.
KINESTEX-UNDISCLOSEDA page linking to the site's funder without the funding disclosure beside it.
FIRSTPARTYA page whose prose features the site's funder three or more times with no funding disclosure anywhere on it.

Blog (14)

CodeWhat the build refuses to ship
POST-FRONTMATTERA post file with no YAML front matter.
POST-NO-TITLEA post whose front matter declares no title.
POST-TITLE-*A post title over 45 characters, which overflows the tab once the site suffix is appended.
POST-NO-DESCA post whose front matter declares no description.
POST-DESC-*A post description longer than 155 characters.
POST-NO-DATEA post with no publication date in its front matter.
POST-NO-UPDATEDA post with no last-updated stamp in its front matter.
POST-NOT-BUILTA live post that silently stopped building and would be invisible rather than broken.
POST-FAQ-RENDERA build where the number of posts rendering their FAQ block does not match the number that declare FAQs.
POST-PLACE-PARSEA build in which the blog placement map cannot be read out of the component source, so neither half of the placement check can run.
POST-PLACE-SLUGA placement pointing at a post slug that is not a live post.
POST-PLACE-PATHA placement that would surface a post on a page which does not exist.
POST-LINKSA build where the blog link block renders on a different set of pages than the placement map declares.
POST-EXEMPT-CREEPMore than two posts opting out of the FAQ requirement, which would turn an announcement exemption into the default.

Derived blocks (45)

CodeWhat the build refuses to ship
REFERENCE-CALLOUTA build where the reference callout renders on a different number of guides than the map declares, which is how a renamed slug drops it.
APP-STACKA build where the derived type-and-API stack block is missing from any /build guide that should carry it.
HK-GROUP-COVERAGEA set of HealthKit group pages that does not carry every identifier in the dataset exactly once.
HK-GROUP-PARTIALA build where only some of the HealthKit group pages were generated.
HC-RECORD-COVERAGEA Health Connect record reference with fewer than the 42 record classes the generator guarantees, a generated record without its own page, a record page missing its record marker, or a hub that does not link every record page.
HC-PERM-ON-PAGEA Health Connect record page that does not show every read and write permission string the generated data gives that record.
HC-PERMISSION-ROWSA Health Connect permissions page that renders a different set of android.permission.health rows than the generated framework permission list, or a list shorter than the 219 strings the generator guarantees.
LIBS-ROWSAn open-source library dataset whose row count differs from the count its generator declares, a package or comparison without a built page, or a /libraries hub that does not link all of them.
LIBS-FRESHLibrary pages whose registry facts were read more than 45 days ago, which means the weekly refresh has stopped running.
LIBS-LANDING-ROWSA language landing under /libraries (Python, React Native, Flutter, Capacitor and Cordova) that is missing a table row, or a link to the package page, for any package of its group, or lists a package from another group; a landing that is not built or not linked from the /libraries hub; a package page that does not link back to its landing; or a group of three or more packages with no landing at all.
ERROR-CODES-ROWSA Health Connect error-code page missing a row for any generated HealthConnectException constant, a generated list shorter than nine constants, or an error-code hub that was not built.
HC-RELEASES-ROWSA Health Connect SDK release page missing any generated connect-client release, or a generated release list shorter than 32 entries.
HK-METADATA-ROWSA HealthKit metadata-key page missing a row for any generated HKMetadataKey constant, a generated list shorter than the 67 keys Apple's collection held, or a page that was not built.
HK-METADATA-EVIDENCEA metadata key whose derived value type is published without the sentence it was read from, whose sentence is not Apple's own abstract or discussion text, or whose row does not show the type and the sentence together.
WEAR-DATATYPE-ROWSA Wear OS data-type page missing a row for any generated Health Services DataType constant, a generated list shorter than the 65 constants Google's reference held, or a page that was not built.
WEAR-DATATYPE-PERMSFewer than 26 Wear OS data types carrying the permission Google's permissions table lists, or a row that does not show its permission (or say the table does not name it).
WEAR-DATATYPE-EVIDENCEA Wear OS data type whose permission is published without the permissions-table row it was read from, or whose row is not one of Google's table rows naming that constant under that permission.
POSE-KEYPOINT-ROWSA pose keypoint scheme page that was not built, or that is missing the row for any point of the generated scheme or shows a name other than the one its source spells; or a generated module with fewer than the nine schemes read on 2026-10-17.
POSE-KEYPOINT-CROSSWALKA /pose-keypoints hub that was not built, whose crosswalk has no column for one of the schemes, or that is missing a crosswalk row or a cell's link and source spelling.
POSE-KEYPOINT-MAPPINGA crosswalk that joins two points whose names are not identical once lowercased with separators removed, names a point its scheme does not have, holds a single point, or leaves out a name two schemes share — the one rule that lets the pages map keypoints without guessing.
GHAPI-TYPE-COVERAGEA Google Health API reference with fewer than the 44 data types the generator guarantees, a generated data type without its own page, a page missing its data-type marker, or a hub that was not built.
GHAPI-HUB-TABLEA Google Health API hub whose data-type table has no row linking one of the generated data types.
GHAPI-TYPE-FACTSA Google Health API data-type page that does not show every operation Google's table lists for the type, with its documented request path, and every scope URL the generated data gives it.
GHAPI-FLAG-SHOWNA Google Health API data-type page that shows fewer of the disagreements found between Google's own pages than the generator raised for that type, or a hub that leaves out one that belongs to no data-type page.
GHAPI-EVIDENCEA Google Health API data type whose derived fields arrive without their evidence: a DataPoint field or rollup matched by a description that does not name the type, a scope URL that is not Google's documented prefix plus the printed suffix, an operation paired with a differently named method without the text that pairs them, or a flag with no quoted source.
GHAPI-TOPIC-ROWSA Google Health API topic page that was not built or leaves out a row of the generated list it presents: a documented scope, an error reason, a webhook data type, a Fitbit mapping row, or the rate-limits table.
MCP-SERVER-ROWSA health MCP server directory missing a row for any server the registry generator kept, a generated list below the generator's own floor, or a directory page that was not built.
MCP-SERVER-OFFICIALAn MCP server labelled official when the generator did not find it under the vendor's own domain namespace, or one marked as the vendor's whose namespace is not the reverse-DNS form of a domain listed for a source it names.
MCP-SERVER-EVIDENCEAn MCP server listed without a matched term, with a match whose text is not in the field it names, or with a row that does not quote the registry description it was kept for.
BT-GATT-ROWSA Bluetooth GATT reference shorter than the 97 in-scope characteristics, 90 structures and 44 pages the Bluetooth SIG's repository gave on 2026-10-17, a hub or characteristic page that was not built, or a page that does not carry its characteristic's marker.
BT-GATT-HUBA Bluetooth GATT hub that lacks a row for any in-scope characteristic, does not link every characteristic page, or leaves out the field of a structure it keeps as a row instead of a page.
BT-GATT-THINA Bluetooth characteristic page built for a structure with fewer than two fields and no flags field, or a characteristic whose page flag disagrees with that rule.
BT-GATT-FIELDSA Bluetooth characteristic page missing a layout row for any field of the SIG's structure, a row that does not show the field's name, type and size as published, or a page that leaves out any definition or struct row the SIG's file gives.
BT-GATT-EVIDENCEA Bluetooth field whose unit or flag condition is published without the line of the SIG's text it was read from, or whose layout row does not show the condition that line states.
WORKOUT-TYPE-ROWSA workout-type reference with fewer than the 84 HealthKit, 61 Health Connect, 85 Wear OS and 182 Google Health API constants read on 2026-10-18, a platform list page that was not built, or one missing the row for any constant or showing a name other than its source's spelling.
WORKOUT-TYPE-MAPPINGA workout-type crosswalk that joins two constants whose names are not identical after removing EXERCISE_TYPE_, case and separators, names a constant a platform does not have, joins one platform to itself, leaves out a name two platforms share, or carries a stated mapping without its source and the source's row.
WORKOUT-TYPE-CROSSWALKA /workout-types hub that was not built, whose crosswalk has no column for one of the four platforms, or that is missing a row or a cell's link and source spelling.
WORKOUT-TYPE-FLAG-SHOWNA workout-type hub or platform page that shows fewer of the disagreements between Google's and Apple's pages than the generator published for it.
WORKOUT-TYPE-PAGE-RULEAn activity page built for a crosswalk row that fails the page rule (three platforms and two facts from the sources beyond names), a passing row without its page, a page whose declared facts differ from the data, a counted fact whose text is not quoted on the page, or an activity page the hub does not link.
TYPE-PAGE-RULEA page for a HealthKit identifier or a Wear OS data type that fails its thin-page rule — fewer than two evidence-backed facts specific to the type, recomputed by the gate from the generated files rather than trusted from the page code — a type that passes the rule left without a page, or a page whose declared facts differ from the recomputed ones.
TYPE-PAGE-EVIDENCEA per-type page that counts a fact without rendering the evidence for it in the page text: Apple's abstract or Google's description, the aggregation or unit sentence, the value enum, the read-only sentence, the matrix row and its caveat, the deprecation note, the metadata key, the permissions-table row, the table quirk, or the counterpart and its own description.
METRIC-MAP-EVIDENCEA pairing in the metric map — a /data guide and the Google Health API, HealthKit, Health Connect, Wear OS or Bluetooth type that carries its metric — with no quoted evidence, with a quote that is no longer in that type's own generated text after a regeneration, or citing a matrix row that does not name the type for that guide.
METRIC-FACTSA /data guide that quietly lost its derived HealthKit facts block because the join behind it stopped matching.
ARCH-DIAGRAMAn /architecture page publishing without its hand-drawn mechanism figure.
ARCH-DIAGRAM-LEAKThe architecture diagram marker appearing on any page outside the /architecture cluster.

Hosting and crawl (7)

CodeWhat the build refuses to ship
SITEMAP-NOINDEXA route listed in sitemap.xml whose own HTML says noindex. The two are contradictory instructions — the sitemap asks a crawler to index what the page tells it to skip — and the contradiction is easy to create, because noindexing a page and de-listing it are edits in different files.
IMAGE-PROXY-OPENA build whose image optimizer is on and allowed to fetch remote images, which lets anyone run resize jobs from any host on the site's compute.
DYNAMIC-FALLBACKA dynamic route that renders parameters it did not prerender, so an unknown address under it is rendered on request instead of answering 404.
SITEMAP-MISSINGA build with no sitemap.xml in its output.
SITEMAP-NO-PAGEA sitemap row for an address that no built page answers, or that answers with a 404.
SITEMAP-LASTMODA sitemap row whose lastmod is missing or differs from the dateModified its page declares in its structured data.
SITEMAP-CHANGEFREQA sitemap carrying changefreq or priority values, fields that were never facts anyone kept true.

What the gates cannot do

Every check above tests form, not truth. A rate limit copied wrong from a vendor page, a benchmark recalled from memory, a deprecation date off by a quarter — each of those is a well-formed sentence on a well-formed page, and it would pass all 193 of these gates without a murmur. Nothing automated catches a claim that is simply false. That is what the verification rules in methodology are for: primary sources fetched at write time, unverifiable claims marked rather than filled in, and dated review stamps you can hold us to. The gates make the mechanical failures impossible. They do not make us right.