{
  "schema_version": "1.2.0",
  "canonical": "https://approximated.app/guides/examples/sveltekit--v2.json",
  "example": {
    "id": "sveltekit--v2",
    "framework": "SvelteKit",
    "edition": "v2",
    "edition_status": "current",
    "guide": "https://approximated.app/guides/sveltekit-custom-domains-guide/",
    "version_url": "https://approximated.app/guides/sveltekit-custom-domains-guide/v2/",
    "source_file": "src/guides/sveltekit-custom-domains-guide/index.html",
    "edition_source": "src/_partials/guide-editions/sveltekit/v2.html",
    "upstream_repository": "https://github.com/Approximated-Inc/sveltekit-custom-domains-example",
    "upstream_exists": true,
    "published": null,
    "prepared_at": "2026-09-09",
    "publication_status": "local_draft",
    "last_reviewed": "2026-09-09",
    "review_scope": "A fresh copied workspace installed from package-lock.json on Node 24.20.0. Then 24 behavioral and real local HTTP transport tests passed, including keep_host payload and failed-delete retry coverage; svelte-check reported zero errors and warnings; the Vite 8 adapter-node build passed. Production smoke returned distinct Alpha/Beta pages with 200, unknown Host 404, fixture login 404, unauthenticated mutation 401, and wrong-scheme mutation 403. Development smoke covered fixture login 200, pending creation 201 with null monitors, pending Host 404, activation and Host 200, removal 202 with Host 404, GET-404 confirmation, and wrong-scheme 403. npm audit reported three low-severity entries caused by one transitive cookie advisory in the current SvelteKit dependency graph and offered no current non-breaking fix. September 9 provider-mode follow-up: 29 tests passed on Node 24.20.0. Svelte-check returned zero errors or warnings, and the SvelteKit 2.70.3 build passed. Forced-local HTTP smoke served Alpha (200), rejected an unknown host (404), and showed local simulation after login. Root review pinned validation entry points to local mode and removed a stale TXT requirement from the companion agent instructions; all 29 tests passed again.",
    "runtime_test_status": "passed_local",
    "upstream_revision": "d00cac108e7fd833c5a769efe9a932d6ea000c08",
    "tested_versions": {
      "node": "24.20.0",
      "sveltekit": "2.70.3",
      "svelte": "5.57.0",
      "vite": "8.2.2",
      "adapter_node": "5.5.7",
      "vite_plugin_svelte": "7.3.0",
      "typescript": "6.0.3",
      "svelte_check": "4.7.6",
      "tsx": "4.23.13",
      "types_node": "24.13.3"
    },
    "test_commands": [
      "npm ci",
      "npm test",
      "npm run check",
      "npm run build",
      "npm start",
      "npm run dev",
      "curl -H 'Host: alpha.test' http://127.0.0.1:3088/",
      "curl -H 'Host: beta.test' http://127.0.0.1:3088/",
      "curl -i -H 'Host: unknown.test' http://127.0.0.1:3088/"
    ],
    "api_contract_revision": "99f0de6b74f4a88a7c5674d86c852036f22dcd13",
    "api_paths": [
      "/api/vhosts",
      "/api/vhosts/{id}"
    ],
    "not_tested": [
      "Live Approximated API requests or credentials",
      "Public DNS propagation, certificate issuance, and requests through live hosting infrastructure were not exercised.",
      "Public TLS certificate issuance",
      "Real asynchronous provider deletion convergence",
      "The provider-independent walkthrough snippets are illustrative; companion runtime results do not verify every guide snippet.",
      "Production deployment"
    ],
    "direct_resource": "https://approximated.app/guides/examples/sveltekit--v2.json",
    "snippet_count": 13,
    "snippets": [
      {
        "id": "sveltekit--v2--snippet-1-typescript",
        "language": "typescript",
        "sha256": "489dca263a37fda69941abad694b3c424bda1583e4fcb816674069b2cdbe710d"
      },
      {
        "id": "sveltekit--v2--snippet-2-typescript",
        "language": "typescript",
        "sha256": "7d192919b2a9180eeb13c425e9a2d0da7866d6f3c4c9d220b75fc83022904ab4"
      },
      {
        "id": "sveltekit--v2--snippet-3-typescript",
        "language": "typescript",
        "sha256": "6ec281e4d6e9e33d52482c0d1c54145b55357ea6223ff330cf0219e27388547b"
      },
      {
        "id": "sveltekit--v2--snippet-4-html",
        "language": "html",
        "sha256": "aa2c5de143c6ab2d4fa4ff8b01f3c54e77ab640e29e88cd61ed326f7d9b89182"
      },
      {
        "id": "sveltekit--v2--snippet-5-bash",
        "language": "bash",
        "sha256": "c55e9c971bb7425b7fdeb5c1e7ffbce85e9c8357fe64400eeb827a5aac4dfe9a"
      },
      {
        "id": "sveltekit--v2--snippet-6-sql",
        "language": "sql",
        "sha256": "55a8f2a9e477755a659e3a8d65854ba20af97bed6427b72ba76c29cd1c2b2b7e"
      },
      {
        "id": "sveltekit--v2--snippet-7-typescript",
        "language": "typescript",
        "sha256": "c1fbfa520cfdc0cf7c6a1c543c5f800755763eea7ee817753267561e7a7d12dd"
      },
      {
        "id": "sveltekit--v2--snippet-8-bash",
        "language": "bash",
        "sha256": "b575ebf89c5d2e0ab93e02f10d21bb60d5d0f098ac4ec73b25d5fea91e568939"
      },
      {
        "id": "sveltekit--v2--snippet-9-bash",
        "language": "bash",
        "sha256": "31f910c7e0c775fa007c0994a28c36b08d9c07f6ef6afc57a197de58f7160aa0"
      },
      {
        "id": "sveltekit--v2--snippet-10-typescript",
        "language": "typescript",
        "sha256": "b7071d5d89fadf2d897ffdd9064a35c8ba2556fdafdddb921addf36695f0bb2c"
      },
      {
        "id": "sveltekit--v2--snippet-11-typescript",
        "language": "typescript",
        "sha256": "f5cd3a1c400667c5b72d3aa518de4e7c4edc3167277fc265e90e043c051c61e1"
      },
      {
        "id": "sveltekit--v2--snippet-12-typescript",
        "language": "typescript",
        "sha256": "e869949020ccd7d18acb1dc07f97d41080ec122577ca3375da301bcb0f6ac8df"
      },
      {
        "id": "sveltekit--v2--snippet-13-bash",
        "language": "bash",
        "sha256": "bb703daf765b2cd339febee8c6557e5fa04f264fa9bd691d5d7b291b9d7172cd"
      }
    ],
    "sources": [
      {
        "url": "https://svelte.dev/docs/kit/hooks",
        "title": "SvelteKit hooks"
      },
      {
        "url": "https://svelte.dev/docs/kit/adapter-node",
        "title": "SvelteKit adapter-node"
      },
      {
        "url": "https://www.npmjs.com/package/@sveltejs/kit/v/2.70.3",
        "title": "SvelteKit 2.70.3 package metadata"
      },
      {
        "url": "https://approximated.app/docs/#virtual-hosts-api",
        "title": "Approximated virtual-host API documentation"
      },
      {
        "url": "https://approximated.app/openapi.yaml",
        "title": "Approximated public OpenAPI contract"
      },
      {
        "url": "https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html",
        "title": "A, AAAA, and CNAME records and apex restrictions"
      },
      {
        "url": "https://developers.cloudflare.com/dns/cname-flattening/",
        "title": "Provider-specific CNAME flattening at the apex"
      },
      {
        "url": "https://approximated.app/docs/#how-approximated-works",
        "title": "Approximated routing, certificates, and dedicated IPv4"
      },
      {
        "url": "https://approximated.app/docs/#edge-verify",
        "title": "Form bot protection with Edge Verify"
      },
      {
        "url": "https://approximated.app/docs/#edge-sequences",
        "title": "Request rules and rate limiting with Edge Sequences"
      },
      {
        "url": "https://approximated.app/docs/#dns-widget",
        "title": "DNS onboarding widget and provider-specific support"
      },
      {
        "url": "https://approximated.app/docs/#webhook-events-virtual-host-monitor-updated",
        "title": "Domain monitoring status webhooks"
      }
    ],
    "walkthrough": {
      "provider_independent": true,
      "optional_integration_anchor": "bonus-approximated",
      "code_scope": "Main walkthrough snippets illustrate adding custom domains to an existing app. They are not a complete standalone application or a copy of the companion implementation.",
      "runtime_verification_scope": "Recorded runtime versions, commands, and results apply to the companion repository implementation. They do not imply that every illustrative guide snippet was executed.",
      "domain_connection_policy": {
        "txt_challenge_required": false,
        "dns_check_in_main": "A brief recommendation to check that DNS points directly or indirectly to the app or its receiving service.",
        "automated_dns_checks": "Explained in the optional Approximated bonus, alongside HTTPS readiness."
      }
    },
    "companion_provider_mode": {
      "default": "auto",
      "api_key_environment_variable": "APPROXIMATED_API_KEY",
      "without_key": "local mock",
      "with_key": "real Approximated API at https://cloud.approximated.app",
      "explicit_mock_override": "PROVIDER_MODE=local",
      "verification": {
        "date": "2026-09-09",
        "summary": "29 tests passed on Node 24.20.0. Svelte-check returned zero errors or warnings, and the SvelteKit 2.70.3 build passed. Forced-local HTTP smoke served Alpha (200), rejected an unknown host (404), and showed local simulation after login. Root review pinned validation entry points to local mode and removed a stale TXT requirement from the companion agent instructions; all 29 tests passed again.",
        "live_api_used": false
      }
    },
    "publication_evidence": {
      "type": "public_companion_git_tag",
      "published_at": "2026-09-09",
      "repository": "https://github.com/Approximated-Inc/sveltekit-custom-domains-example",
      "revision": "d00cac108e7fd833c5a769efe9a932d6ea000c08",
      "tag": "guide-sveltekit2-r1",
      "tag_url": "https://github.com/Approximated-Inc/sveltekit-custom-domains-example/tree/guide-sveltekit2-r1",
      "anonymous_clone_verified_at": "2026-09-09",
      "scope": "Companion source publication and anonymous HTTPS clone verified. This does not establish guide deployment or live API, DNS, or HTTPS acceptance."
    }
  }
}
