{
  "schema_version": "grandet-ai-answer-v1",
  "catalog_revision": 2,
  "as_of": "2026-09-06T00:00:00.000Z",
  "source_catalog_as_of": "2026-09-06T00:00:00.000Z",
  "provenance": {
    "scope": "LEGACY_PRODUCT_CONTRACT_CATALOGUE",
    "source_catalog_as_of": "2026-09-06T00:00:00.000Z",
    "price_observations_included": false,
    "answer_review_clock": "PER_ANSWER_LAST_REVIEWED_AT",
    "current_release_metadata_url": "https://grandet.ai/public-data/runtime-version.json",
    "price_methods_url": "https://grandet.ai/methods/"
  },
  "algorithm_version": "ai-discovery-query-catalog-v1",
  "locale": "en",
  "semantic_source_locale": "en",
  "intent_id": "MULTI_PROVIDER_FAILOVER",
  "slug": "llm-api-failover",
  "canonical_path": "/answers/llm-api-failover/",
  "canonical_url": "https://grandet.ai/answers/llm-api-failover/",
  "semantic_source_url": "https://grandet.ai/answers/llm-api-failover/",
  "machine_path": "/answers/llm-api-failover/index.json",
  "question": "How can I keep an LLM API working when one provider fails?",
  "answer": "Grandet freezes an ordered plan of eligible routes and can move to an approved fallback after supported failures. It does not broadcast a request, exceed hard budgets, silently substitute a different model or replay a request whose side effects are uncertain, so failover reduces interruption risk without promising uninterrupted service.",
  "required_facts": [
    "frozen ordered RoutePlan",
    "supported failure classes",
    "side-effect and hard-budget safety"
  ],
  "prohibited_claims": [
    "Grandet guarantees uninterrupted service",
    "failover broadcasts or blindly replays requests"
  ],
  "coverage_status": "COVERED",
  "last_reviewed_at": "2026-08-29T00:00:00.000Z",
  "evidence_state": "CANONICAL_PRODUCT_CONTRACT",
  "evidence_refs": [
    "/methods/multi-provider-failover-v1/"
  ],
  "license": {
    "spdx_id": "CC-BY-4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  }
}
