{
  "schema_version": 1,
  "article_slug": "2d-pathfinding-in-godot",
  "artifact": "2D Pathfinding Three Ways for Godot Web export",
  "generated_at_utc": "2026-07-19T15:29:39Z",
  "passed": true,
  "engine": {
    "string": "4.7.1-stable (official)",
    "build_hash": "a13da4feb8d8aefc283c3763d33a2f170a18d541",
    "renderer": "WebGL 2 / Compatibility",
    "webassembly": true,
    "thread_support": false,
    "gdextension_support": false
  },
  "source_binding": {
    "source_zip": {
      "path": "/downloads/pathfinding/2d-pathfinding-starter-godot-source.zip",
      "bytes": 11188,
      "sha256": "8ff236be11cf03bd0f4d24b4cd98da99aafd72a74007776f118324b0058877d7"
    },
    "source_receipt": {
      "path": "/downloads/pathfinding/2d-pathfinding-starter-godot-verification.json",
      "bytes": 6724,
      "sha256": "bbb6ec4d78daa9c2e71a7782a48d3d2f074e73617784fc69f6fc53a0ef5f1fcd",
      "check_count": 15
    },
    "main_scene": "res://scenes/articles/pathfinding_2d_three_ways_demo.tscn"
  },
  "hosting": {
    "public_app": "/demos/pathfinding/2d-pathfinding-starter-godot/app/",
    "embed_entrypoint": "/demos/pathfinding/2d-pathfinding-starter-godot/app/index.html",
    "r2_prefix": "demos/2d-pathfinding-starter-godot/2026-07-19/",
    "route_function": "/functions/demos/pathfinding/2d-pathfinding-starter-godot/app/[[path]].ts",
    "wasm_content_type": "application/wasm",
    "brotli_content_encoding": "br",
    "precompressed_wasm_present": true,
    "wasm_raw_bytes": 39513091,
    "wasm_brotli_bytes": 7997319,
    "brotli_quality": 9,
    "brotli_round_trip_matches_raw_wasm": true
  },
  "browser_smoke": {
    "browser": "Chromium 149.0.7827.55",
    "viewport": "1280x720",
    "passed": true,
    "checks": [
      {
        "id": "web_export_loads_without_console_or_page_errors",
        "passed": true
      },
      {
        "id": "godot_canvas_is_visible_at_1280x720",
        "passed": true
      },
      {
        "id": "grid_graph_navmesh_avoidance_and_reset_states_are_distinct",
        "passed": true
      }
    ],
    "errors": [],
    "screenshots": [
      {
        "name": "grid",
        "bytes": 54944,
        "sha256": "0bd20849a3700446f33703513c3c796f5b3b21f64a9077e2f298e6f3df5a54b3"
      },
      {
        "name": "graph",
        "bytes": 61558,
        "sha256": "64790a46a257d360d3d19808c5758ff73836d63c07e40791b9806a8702f48dcc"
      },
      {
        "name": "navmesh",
        "bytes": 74570,
        "sha256": "3dd93193b91daa2b35408f801f0984e9d8a484e51f4e1c68861136cb8d7af739"
      },
      {
        "name": "avoidance",
        "bytes": 70283,
        "sha256": "0c4442a67dbad0515f5eb7fdbfac7c2c40be40e10160a3ff5e72877e31a61295"
      },
      {
        "name": "reset",
        "bytes": 76447,
        "sha256": "86b8019116f704360be62fa6a606792a9863942b0806d26b24380e9e13d17a84"
      }
    ]
  },
  "files": [
    {
      "path": "index.apple-touch-icon.png",
      "bytes": 11944,
      "sha256": "01d4f63e525941e06ce74f5187dad030d20a8d52a07ce365ae4e94af97a3b1f5",
      "content_type": "image/png",
      "content_encoding": null
    },
    {
      "path": "index.audio.position.worklet.js",
      "bytes": 2973,
      "sha256": "be33985bc7160d6bf9646f259cd86b259cd67b02ccb297ee5c44f8ac84327bc8",
      "content_type": "application/javascript; charset=utf-8",
      "content_encoding": null
    },
    {
      "path": "index.audio.worklet.js",
      "bytes": 7298,
      "sha256": "5b476a9c9ce642c0ee4256436d1bc31d9c38f868aca0f9a8e2a57c18d2dec2a3",
      "content_type": "application/javascript; charset=utf-8",
      "content_encoding": null
    },
    {
      "path": "index.html",
      "bytes": 5478,
      "sha256": "d22a7b7ab3851a4d7000065058968bfa025ecf8573b1f95960b6f132ea896dda",
      "content_type": "text/html; charset=utf-8",
      "content_encoding": null
    },
    {
      "path": "index.icon.png",
      "bytes": 5700,
      "sha256": "ad3c35ad0facf487c618204bd98db543034fc95224eadc7f08c7a9ff38d5b3b5",
      "content_type": "image/png",
      "content_encoding": null
    },
    {
      "path": "index.js",
      "bytes": 279815,
      "sha256": "68586d6daafc93c6e697b3fb258976874aa7459b8931165ebb1dc3c9614cc42c",
      "content_type": "application/javascript; charset=utf-8",
      "content_encoding": null
    },
    {
      "path": "index.pck",
      "bytes": 28236,
      "sha256": "004abff89969d82bb065dac2b2033a6c4e264cb0f963185010382a00bf500bd9",
      "content_type": "application/octet-stream",
      "content_encoding": null
    },
    {
      "path": "index.png",
      "bytes": 21443,
      "sha256": "3cb4495c0b98dfbe4b663cbf2b6836473572339beb66d902367893162a70be0e",
      "content_type": "image/png",
      "content_encoding": null
    },
    {
      "path": "index.wasm",
      "bytes": 39513091,
      "sha256": "35116f68540ac41acf7d71ea457added91b5e960a9cca3e2acc72918eaf01277",
      "content_type": "application/wasm",
      "content_encoding": null
    },
    {
      "path": "index.wasm.br",
      "bytes": 7997319,
      "sha256": "bbe4231b5d8aaf7ffc13e07a6b5abf93f76757b48a8c8304a230a580ab95b719",
      "content_type": "application/wasm",
      "content_encoding": "br"
    }
  ],
  "proof_boundary": {
    "verified": [
      "single-threaded Godot Web export loads in Chromium without page or console errors",
      "the Godot canvas renders at 1280x720",
      "keyboard input reaches Grid, Graph, Navmesh, avoidance, and reset states",
      "the five captured rendered states have distinct hashes",
      "precompressed index.wasm.br decodes byte-for-byte to index.wasm",
      "the export is bound to the exact downloadable source ZIP and its 15-check source receipt"
    ],
    "not_verified": [
      "production R2 upload or live-route response headers",
      "mobile-browser controls or performance",
      "cross-browser performance",
      "query throughput, allocations, crowd scalability, or a fastest-system claim"
    ]
  }
}
