{
  "schema_version": "anchorfact.evals.v1",
  "generated": "2026-06-03T02:21:45.252Z",
  "provenance_url": "https://anchorfact.org/provenance.json",
  "eval_count": 53,
  "evals": [
    {
      "id": "api_discovery",
      "intent": "Confirm the compact live API index tells AI agents which read-only endpoints are available.",
      "call": {
        "method": "GET",
        "path": "/api",
        "url": "https://anchorfact.org/api"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.api-index.v1",
        "required_paths": [
          "/api/context",
          "/api/evidence",
          "/api/plan",
          "/api/search",
          "/api/article",
          "/api/claim",
          "/api/cite",
          "/api/source",
          "/api/resolve",
          "/api/resolve-batch"
        ],
        "required_primary_entrypoint_ids": [
          "context",
          "evidence",
          "plan"
        ]
      }
    },
    {
      "id": "llms_txt_primary_entrypoints",
      "intent": "Confirm llms.txt gives first-time AI crawlers the primary context, evidence, and coverage entrypoints before the article index.",
      "call": {
        "method": "GET",
        "path": "/llms.txt",
        "url": "https://anchorfact.org/llms.txt"
      },
      "expected": {
        "status": 200,
        "content_type": "text/plain",
        "contains_text": [
          "Recommended AI Entry Points",
          "/api/context?q={query}",
          "/api/evidence?q={query}",
          "/api/plan?q={query}",
          "/artifact-summary.json"
        ]
      }
    },
    {
      "id": "robots_txt_ai_entrypoints",
      "intent": "Confirm robots.txt exposes non-breaking AI hint fields for the primary read-only entrypoints.",
      "call": {
        "method": "GET",
        "path": "/robots.txt",
        "url": "https://anchorfact.org/robots.txt"
      },
      "expected": {
        "status": 200,
        "content_type": "text/plain",
        "contains_text": [
          "AI-Context",
          "AI-Evidence",
          "Artifact-Summary"
        ]
      }
    },
    {
      "id": "openapi_context_contract",
      "intent": "Confirm OpenAPI describes the context answer policy and compact citation claim contract.",
      "call": {
        "method": "GET",
        "path": "/openapi.json",
        "url": "https://anchorfact.org/openapi.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": null,
        "openapi_schema_version": "anchorfact.openapi.v1",
        "required_schema_properties": {
          "ContextApiResponse": [
            "answer_policy",
            "citation_ready_claims",
            "evidence_pack_count"
          ],
          "AnswerPolicy": [
            "can_answer_with_anchorfact",
            "answer_mode",
            "required_action",
            "guardrails"
          ],
          "CitationReadyClaim": [
            "claim_id",
            "statement",
            "source_url",
            "cite_api_path",
            "citation_markdown"
          ]
        }
      }
    },
    {
      "id": "query_plan",
      "intent": "Confirm the query planner routes a covered public query to the right next AnchorFact calls.",
      "call": {
        "method": "GET",
        "path": "/api/plan?q=gaussian+splatting&limit=3",
        "url": "https://anchorfact.org/api/plan?q=gaussian+splatting&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.plan-api.v1",
        "coverage_status": "supported",
        "should_use_anchorfact": true,
        "contains_canonical_slug": "ai/3d-generation-gaussian-splatting",
        "recommended_call_contains": "/api/evidence"
      }
    },
    {
      "id": "unsupported_query_plan",
      "intent": "Confirm the query planner tells agents not to cite AnchorFact for a fixed no-coverage query.",
      "call": {
        "method": "GET",
        "path": "/api/plan?q=lunar+dentistry&limit=3",
        "url": "https://anchorfact.org/api/plan?q=lunar+dentistry&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.plan-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "recommended_call_contains": "/coverage.json",
        "fallback_guidance_contains": "external primary"
      }
    },
    {
      "id": "evidence_pack_json",
      "intent": "Confirm the one-call evidence API returns source-grounded JSON for a canonical public query.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=gaussian+splatting&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=gaussian+splatting&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "contains_canonical_slug": "ai/3d-generation-gaussian-splatting",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_routing_retrieval_augmented_generation",
      "intent": "Confirm the high-intent AI query \"retrieval augmented generation\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=retrieval+augmented+generation&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=retrieval+augmented+generation&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/rag",
        "contains_canonical_slug": "ai/rag",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_routing_parameter_efficient_fine_tuning",
      "intent": "Confirm the high-intent AI query \"parameter efficient fine tuning\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=parameter+efficient+fine+tuning&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=parameter+efficient+fine+tuning&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/parameter-efficient-fine-tuning",
        "contains_canonical_slug": "ai/parameter-efficient-fine-tuning",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_intent_fine_tune_with_adapters",
      "intent": "Confirm the high-intent AI query \"fine tune a model cheaply with adapters\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=fine+tune+a+model+cheaply+with+adapters&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=fine+tune+a+model+cheaply+with+adapters&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/parameter-efficient-fine-tuning",
        "contains_canonical_slug": "ai/parameter-efficient-fine-tuning",
        "min_packs": 1,
        "min_claims_per_matching_pack": 2,
        "min_sources_per_matching_pack": 2
      }
    },
    {
      "id": "ai_query_routing_rlhf",
      "intent": "Confirm the high-intent AI query \"RLHF\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=RLHF&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=RLHF&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/rlhf",
        "contains_canonical_slug": "ai/rlhf",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_routing_mixture_of_experts",
      "intent": "Confirm the high-intent AI query \"mixture of experts\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=mixture+of+experts&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=mixture+of+experts&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/mixture-of-experts",
        "contains_canonical_slug": "ai/mixture-of-experts",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_routing_low_resource_nlp",
      "intent": "Confirm the high-intent AI query \"low resource NLP\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=low+resource+NLP&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=low+resource+NLP&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/low-resource-nlp",
        "contains_canonical_slug": "ai/low-resource-nlp",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "ai_query_routing_kolmogorov_arnold_networks",
      "intent": "Confirm the high-intent AI query \"kolmogorov arnold networks\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=kolmogorov+arnold+networks&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=kolmogorov+arnold+networks&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/kolmogorov-arnold-networks",
        "contains_canonical_slug": "ai/kolmogorov-arnold-networks",
        "min_packs": 1,
        "min_claims_per_matching_pack": 2,
        "min_sources_per_matching_pack": 2
      }
    },
    {
      "id": "ai_query_routing_vision_transformers",
      "intent": "Confirm the high-intent AI query \"vision transformers\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=vision+transformers&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=vision+transformers&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/vision-transformers",
        "contains_canonical_slug": "ai/vision-transformers",
        "min_packs": 1,
        "min_claims_per_matching_pack": 2,
        "min_sources_per_matching_pack": 2
      }
    },
    {
      "id": "ai_query_routing_meta_learning",
      "intent": "Confirm the high-intent AI query \"meta learning maml\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=meta+learning+maml&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=meta+learning+maml&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "ai/meta-learning",
        "contains_canonical_slug": "ai/meta-learning",
        "min_packs": 1,
        "min_claims_per_matching_pack": 2,
        "min_sources_per_matching_pack": 2
      }
    },
    {
      "id": "query_routing_postgresql",
      "intent": "Confirm the high-intent AI query \"postgresql\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=postgresql&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=postgresql&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "computer-science/postgresql",
        "contains_canonical_slug": "computer-science/postgresql",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_rest_api",
      "intent": "Confirm the high-intent AI query \"REST API\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=REST+API&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=REST+API&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "computer-science/rest-api",
        "contains_canonical_slug": "computer-science/rest-api",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_http_status_codes",
      "intent": "Confirm the high-intent AI query \"HTTP status codes\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=HTTP+status+codes&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=HTTP+status+codes&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "computer-science/http-status-codes",
        "contains_canonical_slug": "computer-science/http-status-codes",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_quic_protocol",
      "intent": "Confirm the high-intent AI query \"QUIC protocol\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=QUIC+protocol&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=QUIC+protocol&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "computer-science/quic-protocol",
        "contains_canonical_slug": "computer-science/quic-protocol",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_climate_change",
      "intent": "Confirm the high-intent AI query \"climate change\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=climate+change&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=climate+change&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "science/climate-change",
        "contains_canonical_slug": "science/climate-change",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_stock_market_basics",
      "intent": "Confirm the high-intent AI query \"stock market basics\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=stock+market+basics&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=stock+market+basics&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "business/stock-market-basics",
        "contains_canonical_slug": "business/stock-market-basics",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_ancient_egypt",
      "intent": "Confirm the high-intent AI query \"ancient egypt\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=ancient+egypt&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=ancient+egypt&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "history/ancient-egypt",
        "contains_canonical_slug": "history/ancient-egypt",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_public_speaking",
      "intent": "Confirm the high-intent AI query \"public speaking\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=public+speaking&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=public+speaking&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "self-improvement/public-speaking",
        "contains_canonical_slug": "self-improvement/public-speaking",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "query_routing_sports_biomechanics",
      "intent": "Confirm the high-intent AI query \"sports biomechanics\" resolves first to the intended evidence pack.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=sports+biomechanics&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=sports+biomechanics&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "top_canonical_slug": "sports/sports-biomechanics",
        "contains_canonical_slug": "sports/sports-biomechanics",
        "min_packs": 1,
        "min_claims_per_matching_pack": 1,
        "min_sources_per_matching_pack": 1
      }
    },
    {
      "id": "agent_usage_anchorfact_citation_help",
      "intent": "Confirm the AI query \"how should an AI agent cite AnchorFact claims\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=how+should+an+AI+agent+cite+AnchorFact+claims&limit=3",
        "url": "https://anchorfact.org/api/context?q=how+should+an+AI+agent+cite+AnchorFact+claims&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "site_help",
        "should_use_anchorfact": true,
        "answer_policy_can_answer": true,
        "answer_policy_mode": "api_guidance",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "recommended_call_contains": "/api/cite"
      }
    },
    {
      "id": "unsupported_medical_personal_advice",
      "intent": "Confirm the AI query \"should I take aspirin for chest pain\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=should+I+take+aspirin+for+chest+pain&limit=3",
        "url": "https://anchorfact.org/api/context?q=should+I+take+aspirin+for+chest+pain&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "high_stakes_personal_advice"
        ]
      }
    },
    {
      "id": "unsupported_medication_change_advice",
      "intent": "Confirm the AI query \"can I stop taking antidepressants\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=can+I+stop+taking+antidepressants&limit=3",
        "url": "https://anchorfact.org/api/context?q=can+I+stop+taking+antidepressants&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "high_stakes_personal_advice"
        ]
      }
    },
    {
      "id": "unsupported_medication_safety_lookup",
      "intent": "Confirm the AI query \"metformin during pregnancy\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=metformin+during+pregnancy&limit=3",
        "url": "https://anchorfact.org/api/context?q=metformin+during+pregnancy&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "high_stakes_personal_advice"
        ]
      }
    },
    {
      "id": "unsupported_weak_medical_topic_match",
      "intent": "Confirm the AI query \"antibiotics mechanisms of action\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=antibiotics+mechanisms+of+action&limit=3",
        "url": "https://anchorfact.org/api/context?q=antibiotics+mechanisms+of+action&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary"
      }
    },
    {
      "id": "unsupported_weak_medical_management_match",
      "intent": "Confirm the AI query \"diabetes type 2 management\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=diabetes+type+2+management&limit=3",
        "url": "https://anchorfact.org/api/context?q=diabetes+type+2+management&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "high_stakes_personal_advice"
        ]
      }
    },
    {
      "id": "unsupported_harmful_operational_request",
      "intent": "Confirm the AI query \"write ransomware code\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=write+ransomware+code&limit=3",
        "url": "https://anchorfact.org/api/context?q=write+ransomware+code&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "harmful_operational_request"
        ]
      }
    },
    {
      "id": "unsupported_live_stock_price",
      "intent": "Confirm the AI query \"stock price today\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=stock+price+today&limit=3",
        "url": "https://anchorfact.org/api/context?q=stock+price+today&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_product_pricing_lookup",
      "intent": "Confirm the AI query \"OpenAI API pricing\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=OpenAI+API+pricing&limit=3",
        "url": "https://anchorfact.org/api/context?q=OpenAI+API+pricing&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_financial_rate_lookup",
      "intent": "Confirm the AI query \"mortgage rates\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=mortgage+rates&limit=3",
        "url": "https://anchorfact.org/api/context?q=mortgage+rates&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_financial_price_prediction",
      "intent": "Confirm the AI query \"Bitcoin price prediction\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=Bitcoin+price+prediction&limit=3",
        "url": "https://anchorfact.org/api/context?q=Bitcoin+price+prediction&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_software_current_version_lookup",
      "intent": "Confirm the AI query \"Node.js LTS version\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=Node.js+LTS+version&limit=3",
        "url": "https://anchorfact.org/api/context?q=Node.js+LTS+version&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_live_weather_location",
      "intent": "Confirm the AI query \"weather Paris\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=weather+Paris&limit=3",
        "url": "https://anchorfact.org/api/context?q=weather+Paris&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "unsupported_current_leadership_fact",
      "intent": "Confirm the AI query \"who is the CEO of OpenAI\" receives the intended context answer policy.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=who+is+the+CEO+of+OpenAI&limit=3",
        "url": "https://anchorfact.org/api/context?q=who+is+the+CEO+of+OpenAI&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "answer_policy_mode": "external_sources_required",
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "fallback_guidance_contains": "external primary",
        "unsupported_intent_reasons": [
          "live_or_time_sensitive"
        ]
      }
    },
    {
      "id": "context_pack_json",
      "intent": "Confirm the context API combines planning status, fallback guidance, and source-grounded evidence packs.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=gaussian+splatting&limit=3",
        "url": "https://anchorfact.org/api/context?q=gaussian+splatting&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "supported",
        "should_use_anchorfact": true,
        "contains_canonical_slug": "ai/3d-generation-gaussian-splatting",
        "recommended_call_contains": "/api/evidence",
        "answer_policy_can_answer": true,
        "min_citation_ready_claims": 1,
        "min_content_health_public_articles": 1210,
        "content_health_trust_boundary": "draft_entries_excluded_from_ai_entrypoints"
      }
    },
    {
      "id": "unsupported_query_evidence",
      "intent": "Confirm the one-call evidence API returns an explicit empty result for the same no-coverage query.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=lunar+dentistry&limit=3",
        "url": "https://anchorfact.org/api/evidence?q=lunar+dentistry&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.evidence-api.v1",
        "result_count": 0
      }
    },
    {
      "id": "unsupported_context_pack_json",
      "intent": "Confirm the context API gives explicit non-citation policy for a fixed no-coverage query.",
      "call": {
        "method": "GET",
        "path": "/api/context?q=lunar+dentistry&limit=3",
        "url": "https://anchorfact.org/api/context?q=lunar+dentistry&limit=3"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.context-api.v1",
        "coverage_status": "unsupported",
        "should_use_anchorfact": false,
        "answer_policy_can_answer": false,
        "min_citation_ready_claims": 0,
        "max_citation_ready_claims": 0,
        "content_health_trust_boundary": "draft_entries_excluded_from_ai_entrypoints",
        "fallback_guidance_contains": "external primary"
      }
    },
    {
      "id": "evidence_pack_markdown",
      "intent": "Confirm answer-ready Markdown evidence packs stay available for prompt assembly.",
      "call": {
        "method": "GET",
        "path": "/api/evidence?q=gaussian+splatting&limit=1&format=markdown",
        "url": "https://anchorfact.org/api/evidence?q=gaussian+splatting&limit=1&format=markdown"
      },
      "expected": {
        "status": 200,
        "content_type": "text/markdown",
        "contains_text": [
          "AnchorFact Evidence Pack",
          "Citation contract:"
        ]
      }
    },
    {
      "id": "claim_dereference",
      "intent": "Confirm a public atomic claim can be dereferenced with article and source context.",
      "call": {
        "method": "GET",
        "path": "/api/claim?id=f1",
        "url": "https://anchorfact.org/api/claim?id=f1"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.claim-api.v1",
        "claim_id": "https://anchorfact.org/fact/f1",
        "canonical_slug": "ai/3d-generation-gaussian-splatting",
        "min_sources": 1
      }
    },
    {
      "id": "reference_resolver",
      "intent": "Confirm an arbitrary public AnchorFact reference resolves to the matching API payload.",
      "call": {
        "method": "GET",
        "path": "/api/resolve?ref=f1",
        "url": "https://anchorfact.org/api/resolve?ref=f1"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.resolve-api.v1",
        "resolved_type": "claim",
        "canonical_ref": "https://anchorfact.org/fact/f1",
        "result_schema_version": "anchorfact.claim-api.v1"
      }
    },
    {
      "id": "batch_reference_resolver",
      "intent": "Confirm several mixed public AnchorFact references resolve in one request.",
      "call": {
        "method": "GET",
        "path": "/api/resolve-batch?ref=f1&ref=https%3A%2F%2Farxiv.org%2Fabs%2F2308.04079",
        "url": "https://anchorfact.org/api/resolve-batch?ref=f1&ref=https%3A%2F%2Farxiv.org%2Fabs%2F2308.04079"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.resolve-batch-api.v1",
        "reference_count": 2,
        "ok_count_min": 2,
        "error_count": 0
      }
    },
    {
      "id": "citation_export",
      "intent": "Confirm one public atomic claim can be returned as a citation-ready payload.",
      "call": {
        "method": "GET",
        "path": "/api/cite?id=f1",
        "url": "https://anchorfact.org/api/cite?id=f1"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.cite-api.v1",
        "claim_id": "https://anchorfact.org/fact/f1",
        "canonical_slug": "ai/3d-generation-gaussian-splatting",
        "citation_export_contains": [
          "AnchorFact:",
          "https://arxiv.org/abs/2308.04079"
        ]
      }
    },
    {
      "id": "source_reuse_lookup",
      "intent": "Confirm a public source lookup returns mapped public claims for reuse-aware citation.",
      "call": {
        "method": "GET",
        "path": "/api/source?url=https%3A%2F%2Farxiv.org%2Fabs%2F2308.04079",
        "url": "https://anchorfact.org/api/source?url=https%3A%2F%2Farxiv.org%2Fabs%2F2308.04079"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.source-api.v1",
        "source_id": "source:58200638706697c4",
        "contains_claim_id": "https://anchorfact.org/fact/f1",
        "min_claims": 1
      }
    },
    {
      "id": "graph_relationships",
      "intent": "Confirm the signed graph exposes article-to-claim and claim-to-source traversal edges.",
      "call": {
        "method": "GET",
        "path": "/graph.json",
        "url": "https://anchorfact.org/graph.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.graph.v1",
        "min_nodes": 8005,
        "min_edges": 12208,
        "required_edge_types": [
          "article_has_claim",
          "claim_supported_by_source"
        ],
        "currently_present": {
          "article_has_claim": true,
          "claim_supported_by_source": true
        }
      }
    },
    {
      "id": "content_health_summary",
      "intent": "Confirm the signed content health artifact exposes public/draft counts, AI guidance, and trust boundaries.",
      "call": {
        "method": "GET",
        "path": "/content-health.json",
        "url": "https://anchorfact.org/content-health.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.content-health.v1",
        "min_public_articles": 1210,
        "min_public_claims": 3790,
        "machine_guidance_contains": "/api/context",
        "trust_boundary": "draft_entries_excluded_from_ai_entrypoints",
        "min_repair_queue_candidates": 1,
        "min_repair_queue_next_batch": 1,
        "repair_queue_policy_contains": [
          "AI-agent utility",
          "repair_complexity"
        ],
        "max_public_source_tier_c": 27
      }
    },
    {
      "id": "coverage_query_benchmark_catalog",
      "intent": "Confirm the signed coverage artifact exposes the representative AI query benchmark used to steer future content work.",
      "call": {
        "method": "GET",
        "path": "/coverage.json",
        "url": "https://anchorfact.org/coverage.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.coverage.v1",
        "min_query_benchmark_cases": 32,
        "required_query_benchmark_slugs": [
          "ai/rag",
          "ai/parameter-efficient-fine-tuning",
          "ai/parameter-efficient-fine-tuning",
          "ai/rlhf",
          "ai/mixture-of-experts",
          "ai/low-resource-nlp",
          "ai/kolmogorov-arnold-networks",
          "ai/vision-transformers",
          "ai/meta-learning",
          "computer-science/postgresql",
          "computer-science/rest-api",
          "computer-science/http-status-codes",
          "computer-science/quic-protocol",
          "science/climate-change",
          "business/stock-market-basics",
          "history/ancient-egypt",
          "self-improvement/public-speaking",
          "sports/sports-biomechanics"
        ],
        "query_benchmark_pass_gate_contains": "/evals.json"
      }
    },
    {
      "id": "mcp_tool_catalog",
      "intent": "Confirm the signed MCP profile declares local tools needed for planning, prompt context, search, retrieval, resolution, and citation.",
      "call": {
        "method": "GET",
        "path": "/mcp.json",
        "url": "https://anchorfact.org/mcp.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.mcp.v1",
        "required_tools": [
          "anchorfact_plan_query",
          "anchorfact_search",
          "anchorfact_context",
          "anchorfact_content_health",
          "anchorfact_get_article",
          "anchorfact_resolve_reference",
          "anchorfact_resolve_references",
          "anchorfact_cite_claim",
          "anchorfact_list_categories"
        ]
      }
    },
    {
      "id": "signed_provenance_static_artifacts",
      "intent": "Confirm static artifacts needed by AI consumers remain hash-covered by provenance.",
      "call": {
        "method": "GET",
        "path": "/provenance.json",
        "url": "https://anchorfact.org/provenance.json"
      },
      "expected": {
        "status": 200,
        "content_type": "application/json",
        "schema_version": "anchorfact.provenance.v1",
        "required_artifacts": [
          "agent_json",
          "openapi_json",
          "manifest_json",
          "claims_json",
          "topics_json",
          "capabilities_json",
          "content_health_json",
          "coverage_json",
          "examples_json",
          "graph_json",
          "evals_json",
          "mcp_json",
          "artifact_summary_json",
          "search_index_json",
          "sources_json",
          "llms_txt"
        ]
      }
    }
  ]
}