{
  "schema_version": "grandet-public-method-v1",
  "method_id": "multi-provider-failover-v1",
  "method_revision": 1,
  "algorithm_identifier": "single-objective-continuity-v2",
  "as_of": "2026-09-06T00:00:00.000Z",
  "title": "Multi-provider failover method",
  "summary": "Grandet freezes an ordered RoutePlan of eligible routes and considers only supported, replay-safe failures within its duration and hard-cost envelope.",
  "canonical_path": "/methods/multi-provider-failover-v1/",
  "machine_path": "/methods/multi-provider-failover-v1/index.json",
  "pdf_path": "/methods/multi-provider-failover-v1/method.pdf",
  "source_modules": [
    "lib/control-plane/routes/continuity.ts",
    "lib/control-plane/routes/failure-domains.ts"
  ],
  "public_invariants": [
    "The RoutePlan freezes one primary route and an ordered set of fallbacks before execution; it does not broadcast the request.",
    "Fallbacks must remain within the task hard budget, the fixed absolute premium ceiling, and the fixed percentage premium ceiling.",
    "Automatic switching is limited to supported transient classes and work proven replay-safe; uncertain side effects stop.",
    "Multi-domain protection requires at least two independently identified gateway operator domains."
  ],
  "limitations": [
    "Failover reduces interruption risk but does not guarantee uninterrupted service.",
    "Authentication, policy, invalid-request, content, partial-response, cancellation, and unknown failures do not authorize blind replay.",
    "The website describes the frozen-plan contract and never executes or recalculates a route."
  ],
  "authority": "HTML_AND_VERSIONED_JSON",
  "pdf_role": "HUMAN_ARCHIVE_ONLY",
  "license": {
    "spdx_id": "CC-BY-4.0",
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  }
}
