Each fixture is a JSON file: a request body, the expected response shape, positive + negative assertions, and a reference to the spec section it verifies. A conformant implementation passes the fixture by running its query endpoint against the request body and matching the asserted shape.
Convention: WGCP-Lx-NNN.json (level x, fixture number NNN). Adversarial fixtures use WGCP-ADV-NNN.json and are mandatory at every level from L1 upward (§9.4).
| ID | Verifies | Status |
|---|---|---|
| WGCP-L0-001.json | Happy-path typed bundle with provenance (§5.5, §6.4); 8 positive + 3 negative assertions | Passes live against the-ai-news.web.app |
| WGCP-L0-002.json | Out-of-scope query returns typed out_of_scope failure (§5.4, §6.7); 4 positive + 3 negative assertions |
Passes live |
| WGCP-L0-003.json | DNS-layer SVCB discovery at _webgcp.<host> (§5.1.1); 7 positive + 2 negative assertions; runs via DoH, no local DNS tooling needed |
Live + passing 2026-05-16. SVCB record provisioned at Squarespace DNS for webgcp.org (TTL 14400); all 9 assertions (7 positive A01-A07 + 2 negative N01-N02) pass against the live record. Verifiable via Cloudflare DoH: https://cloudflare-dns.com/dns-query?name=_webgcp.webgcp.org&type=64. Expected to FAIL by design against the-ai-news.web.app per the §5.1.1 restricted-domain caveat (Firebase .web.app zone — operator does not control authoritative DNS at the hostname). |
| ID | Will verify |
|---|---|
| WGCP-L0-004.json | needs_input failure when required filter.query is missing |
| WGCP-L0-005.json | manifest_mismatch failure when contract_uri does not match any published contract |
| WGCP-L0-006.json | acl_denied failure when scope.allow_kbs excludes the server's KBs |
In progress. L1 adds: multiple KBs, multiple primitives (at least vector + direct lookup + one structured), versioned artifacts, refresh SLAs. See §4.
Design target only. Will ship with v0.2 of the spec.
# For each fixture, POST its `given.request_body` to the implementation's query endpoint
# and assert the response matches `expected_response_shape` per the fixture's `assertions`.
# Example, running L0-001 against the live reference instance:
curl -s -X POST https://the-ai-news.web.app/webgcp/v0/query \
-H 'Content-Type: application/json' \
-d @<(curl -s https://webgcp.org/conformance/v0.1/WGCP-L0-001.json | jq '.given.request_body') \
| jq '{
A01_status_ok: (.status == "ok"),
A03_meta_present: (.bundle.articles._meta != null),
A05_authority_valid: (.bundle.articles._meta.authority | IN("canonical", "derived"))
}'