{
  "algorithm_contract": {
    "failure": "Invalid, blocked, or unreachable endpoints return an empty path.",
    "frontier": "Stable custom binary min-heap ordered by total estimated cost, then insertion order.",
    "grid": "Rectangular bounded grid.",
    "heuristic": "Manhattan distance.",
    "movement_cost": "Every legal step costs one.",
    "neighbours": "Four cardinal neighbours in a fixed order.",
    "state": "Closed set, integer cost-so-far map, and parent reconstruction."
  },
  "article_slug": "a-star-pathfinding-starter-godot-gdscript",
  "artifact": "Standalone Godot GDScript A* pathfinding starter scene",
  "checks": [
    {
      "id": "finds_shortest_path_on_open_grid",
      "observed": {
        "actual_cell_count": 8,
        "expected_cell_count": 8,
        "path": [
          {
            "x": 0,
            "y": 0
          },
          {
            "x": 1,
            "y": 0
          },
          {
            "x": 2,
            "y": 0
          },
          {
            "x": 3,
            "y": 0
          },
          {
            "x": 4,
            "y": 0
          },
          {
            "x": 4,
            "y": 1
          },
          {
            "x": 4,
            "y": 2
          },
          {
            "x": 4,
            "y": 3
          }
        ]
      },
      "passed": true
    },
    {
      "id": "routes_around_blocked_cells_with_shortest_length",
      "observed": {
        "astar_steps": 16,
        "path": [
          {
            "x": 0,
            "y": 3
          },
          {
            "x": 1,
            "y": 3
          },
          {
            "x": 2,
            "y": 3
          },
          {
            "x": 2,
            "y": 4
          },
          {
            "x": 3,
            "y": 4
          },
          {
            "x": 4,
            "y": 4
          },
          {
            "x": 5,
            "y": 4
          },
          {
            "x": 5,
            "y": 3
          },
          {
            "x": 5,
            "y": 2
          },
          {
            "x": 5,
            "y": 1
          },
          {
            "x": 5,
            "y": 0
          },
          {
            "x": 6,
            "y": 0
          },
          {
            "x": 7,
            "y": 0
          },
          {
            "x": 8,
            "y": 0
          },
          {
            "x": 8,
            "y": 1
          },
          {
            "x": 8,
            "y": 2
          },
          {
            "x": 8,
            "y": 3
          }
        ],
        "reference_bfs_steps": 16
      },
      "passed": true
    },
    {
      "id": "returns_empty_when_destination_is_unreachable",
      "observed": {
        "isolated_goal": {
          "x": 1,
          "y": 1
        },
        "path": []
      },
      "passed": true
    },
    {
      "id": "path_contains_only_cardinal_neighbours",
      "observed": {
        "path": [
          {
            "x": 0,
            "y": 2
          },
          {
            "x": 1,
            "y": 2
          },
          {
            "x": 1,
            "y": 3
          },
          {
            "x": 1,
            "y": 4
          },
          {
            "x": 2,
            "y": 4
          },
          {
            "x": 3,
            "y": 4
          },
          {
            "x": 4,
            "y": 4
          },
          {
            "x": 5,
            "y": 4
          },
          {
            "x": 5,
            "y": 3
          },
          {
            "x": 5,
            "y": 2
          }
        ]
      },
      "passed": true
    },
    {
      "id": "path_never_enters_blocked_cells",
      "observed": {
        "blocked": [
          {
            "x": 2,
            "y": 1
          },
          {
            "x": 2,
            "y": 2
          },
          {
            "x": 2,
            "y": 3
          }
        ],
        "path": [
          {
            "x": 0,
            "y": 2
          },
          {
            "x": 1,
            "y": 2
          },
          {
            "x": 1,
            "y": 3
          },
          {
            "x": 1,
            "y": 4
          },
          {
            "x": 2,
            "y": 4
          },
          {
            "x": 3,
            "y": 4
          },
          {
            "x": 4,
            "y": 4
          },
          {
            "x": 5,
            "y": 4
          },
          {
            "x": 5,
            "y": 3
          },
          {
            "x": 5,
            "y": 2
          }
        ]
      },
      "passed": true
    },
    {
      "id": "start_equals_goal_returns_single_cell",
      "observed": {
        "path": [
          {
            "x": 2,
            "y": 2
          }
        ]
      },
      "passed": true
    },
    {
      "id": "out_of_bounds_endpoints_return_empty",
      "observed": {
        "invalid_goal_path": [],
        "invalid_start_path": []
      },
      "passed": true
    },
    {
      "id": "heap_pops_lowest_priority_first",
      "observed": {
        "cells": [
          {
            "x": 2,
            "y": 0
          },
          {
            "x": 4,
            "y": 0
          },
          {
            "x": 3,
            "y": 0
          },
          {
            "x": 1,
            "y": 0
          }
        ],
        "priorities": [
          3,
          3,
          5,
          8
        ]
      },
      "passed": true
    },
    {
      "id": "runnable_scene_draws_path_moves_agent_and_shows_no_path",
      "observed": {
        "after_movement": {
          "agent_cell": {
            "x": 13,
            "y": 4
          },
          "authored_scene_nodes": {
            "agent": true,
            "board": true,
            "goal": true,
            "path_dots": true,
            "path_line": true,
            "status": true
          },
          "destination_reached": true,
          "goal_cell": {
            "x": 13,
            "y": 4
          },
          "grid_size": {
            "x": 15,
            "y": 9
          },
          "isolated_cell": {
            "x": 12,
            "y": 1
          },
          "moving": false,
          "no_path_visible": false,
          "path_avoids_blocked_cells": true,
          "path_cell_count": 21,
          "path_is_cardinal": true,
          "ready": true,
          "start_cell": {
            "x": 1,
            "y": 4
          },
          "status": "Destination reached • click another cell or press R",
          "visible_path_segment_count": 20
        },
        "authored_scene_complete": true,
        "initial": {
          "agent_cell": {
            "x": 1,
            "y": 4
          },
          "authored_scene_nodes": {
            "agent": true,
            "board": true,
            "goal": true,
            "path_dots": true,
            "path_line": true,
            "status": true
          },
          "destination_reached": false,
          "goal_cell": {
            "x": 13,
            "y": 4
          },
          "grid_size": {
            "x": 15,
            "y": 9
          },
          "isolated_cell": {
            "x": 12,
            "y": 1
          },
          "moving": true,
          "no_path_visible": false,
          "path_avoids_blocked_cells": true,
          "path_cell_count": 21,
          "path_is_cardinal": true,
          "ready": true,
          "start_cell": {
            "x": 1,
            "y": 4
          },
          "status": "Path: 20 steps • moving",
          "visible_path_segment_count": 20
        },
        "isolated_destination": {
          "agent_cell": {
            "x": 13,
            "y": 4
          },
          "authored_scene_nodes": {
            "agent": true,
            "board": true,
            "goal": true,
            "path_dots": true,
            "path_line": true,
            "status": true
          },
          "destination_reached": false,
          "goal_cell": {
            "x": 12,
            "y": 1
          },
          "grid_size": {
            "x": 15,
            "y": 9
          },
          "isolated_cell": {
            "x": 12,
            "y": 1
          },
          "moving": false,
          "no_path_visible": true,
          "path_avoids_blocked_cells": true,
          "path_cell_count": 0,
          "path_is_cardinal": true,
          "ready": true,
          "start_cell": {
            "x": 1,
            "y": 4
          },
          "status": "No path to (12, 1)",
          "visible_path_segment_count": 0
        },
        "waited_process_frames": 1
      },
      "passed": true
    },
    {
      "id": "packaged_project_reruns_cleanly",
      "passed": true,
      "observed": {
        "extracted_check_count": 9,
        "check_ids_match_workspace": true,
        "scene_smoke_passed": true,
        "engine": "4.7.1-stable (official)"
      }
    }
  ],
  "engine": {
    "build": "official",
    "hash": "a13da4feb8d8aefc283c3763d33a2f170a18d541",
    "hex": 263937,
    "major": 4,
    "minor": 7,
    "patch": 1,
    "status": "stable",
    "string": "4.7.1-stable (official)",
    "timestamp": 0
  },
  "failed": [],
  "failed_count": 0,
  "measurement_scope": "Deterministic baseline-path correctness and runnable-scene behavior only. No timing, FPS, memory, engine-comparison, or production-readiness claim.",
  "passed": true,
  "passed_count": 10,
  "proof_boundary": {
    "comparison": "This receipt covers only the Godot GDScript starter. It makes no matched-output, code-size, or engine-ranking claim.",
    "not_verified": "Weighted terrain, diagonal movement, path smoothing, dynamic blockers, multi-cell footprints, avoidance, navigation meshes, crowds, or runtime performance.",
    "product_scope": "This standalone educational project does not use or claim a released PathForge product API.",
    "verified_here": "Shortest path length against an independent BFS reference, obstacle avoidance, cardinal adjacency, endpoint guards, heap ordering, visible route state, agent traversal, and a visible no-path case."
  },
  "scene_smoke": {
    "details": {
      "after_movement": {
        "agent_cell": {
          "x": 13,
          "y": 4
        },
        "authored_scene_nodes": {
          "agent": true,
          "board": true,
          "goal": true,
          "path_dots": true,
          "path_line": true,
          "status": true
        },
        "destination_reached": true,
        "goal_cell": {
          "x": 13,
          "y": 4
        },
        "grid_size": {
          "x": 15,
          "y": 9
        },
        "isolated_cell": {
          "x": 12,
          "y": 1
        },
        "moving": false,
        "no_path_visible": false,
        "path_avoids_blocked_cells": true,
        "path_cell_count": 21,
        "path_is_cardinal": true,
        "ready": true,
        "start_cell": {
          "x": 1,
          "y": 4
        },
        "status": "Destination reached • click another cell or press R",
        "visible_path_segment_count": 20
      },
      "authored_scene_complete": true,
      "initial": {
        "agent_cell": {
          "x": 1,
          "y": 4
        },
        "authored_scene_nodes": {
          "agent": true,
          "board": true,
          "goal": true,
          "path_dots": true,
          "path_line": true,
          "status": true
        },
        "destination_reached": false,
        "goal_cell": {
          "x": 13,
          "y": 4
        },
        "grid_size": {
          "x": 15,
          "y": 9
        },
        "isolated_cell": {
          "x": 12,
          "y": 1
        },
        "moving": true,
        "no_path_visible": false,
        "path_avoids_blocked_cells": true,
        "path_cell_count": 21,
        "path_is_cardinal": true,
        "ready": true,
        "start_cell": {
          "x": 1,
          "y": 4
        },
        "status": "Path: 20 steps • moving",
        "visible_path_segment_count": 20
      },
      "isolated_destination": {
        "agent_cell": {
          "x": 13,
          "y": 4
        },
        "authored_scene_nodes": {
          "agent": true,
          "board": true,
          "goal": true,
          "path_dots": true,
          "path_line": true,
          "status": true
        },
        "destination_reached": false,
        "goal_cell": {
          "x": 12,
          "y": 1
        },
        "grid_size": {
          "x": 15,
          "y": 9
        },
        "isolated_cell": {
          "x": 12,
          "y": 1
        },
        "moving": false,
        "no_path_visible": true,
        "path_avoids_blocked_cells": true,
        "path_cell_count": 0,
        "path_is_cardinal": true,
        "ready": true,
        "start_cell": {
          "x": 1,
          "y": 4
        },
        "status": "No path to (12, 1)",
        "visible_path_segment_count": 0
      },
      "waited_process_frames": 1
    },
    "passed": true
  },
  "verified_at": "2026-07-16T08:23:55",
  "published_files": {
    "source_zip": {
      "path": "/downloads/pathfinding/a-star-pathfinding-starter-godot-gdscript-source.zip",
      "bytes": 12801,
      "sha256": "e98e6528d6c6259f2e1104b0d8fc78e456b8b89046db9460606db4eb14dde502"
    },
    "algorithm_source": {
      "path_in_zip": "scripts/articles/astar_starter/astar_grid.gd",
      "sha256": "fde88eae27f5faaad7c234dfa48562a8c5043e4bc3fe3414e009458dd82af4ab"
    },
    "demo_source": {
      "path_in_zip": "scripts/articles/astar_starter/astar_starter_gdscript.gd",
      "sha256": "49a1ae69eabfc7de7294620dce0b29e6dd643248a9f1dc34454acd5a884699b1"
    },
    "board_source": {
      "path_in_zip": "scripts/articles/astar_starter/astar_starter_board.gd",
      "sha256": "289278a16493e4e4e325d3b4cbdced1d73d14ec8954978f81450a4afa2427e98"
    },
    "marker_source": {
      "path_in_zip": "scripts/articles/astar_starter/astar_starter_marker.gd",
      "sha256": "23beb49655e60df8962aa2e432738596fe20640b98dcba2bf14fb603256909c5"
    },
    "path_dots_source": {
      "path_in_zip": "scripts/articles/astar_starter/astar_starter_path_dots.gd",
      "sha256": "ba3a5234ce46c33b102b7553275e9904be440d44985c78dced0979d6bb886eb6"
    },
    "scene": {
      "path_in_zip": "scenes/articles/astar_starter_gdscript.tscn",
      "sha256": "594b3f15ab1637cac352a8e730590a1d9d20ea3ea512e0192ddee3ed11513cd4"
    },
    "verifier_source": {
      "path_in_zip": "tools/verify_astar_starter_gdscript.gd",
      "sha256": "f1884e4f0f1f953d800a27009c9bb12571a7e707ae09836f00fe504d506e97ed"
    }
  },
  "extracted_package_rerun": {
    "passed": true,
    "workspace_check_count": 9,
    "published_check_count": 10,
    "check_ids_match_workspace": true,
    "scene_smoke_passed": true,
    "engine": "4.7.1-stable (official)"
  }
}
