{
	"article_slug": "building-a-navigation-debug-panel-in-godot",
	"cases": [
		{
			"case_id": "astargrid-goal-solid-guard",
			"message": "Goal cell is solid; reject before allow_partial_path scans the grid.",
			"passed": true,
			"title": "Goal solidity is checked before allow_partial_path",
			"verdict": "GOAL_SOLID"
		},
		{
			"case_id": "astargrid-allow-partial-endpoint",
			"panel_message": "allow_partial_path ended at (2, 2) before the requested goal.",
			"panel_verdict": "PARTIAL_PATH",
			"passed": true,
			"raw_last_cell": {
				"x": 2,
				"y": 2
			},
			"raw_path_size": 2,
			"requested_goal": {
				"x": 6,
				"y": 2
			},
			"title": "AStarGrid2D allow_partial_path can return a path ending short"
		},
		{
			"case_id": "navigationserver-unsynced-map",
			"map_iteration_id": 0,
			"passed": true,
			"title": "Same-frame query exposes map iteration 0",
			"verdict": "UNSYNCED_NAVIGATION_MAP"
		},
		{
			"case_id": "navigationserver-region-bake-missing",
			"map_iteration_id": 1,
			"passed": true,
			"region_count": 1,
			"title": "Synced region without polygons is not the same as iteration 0",
			"verdict": "REGION_BAKE_MISSING"
		},
		{
			"case_id": "navigationserver-disconnected-island-probe",
			"disconnected_endpoint_distance_px": 154.0,
			"disconnected_path_points": 2,
			"disconnected_verdict": "PATH_ENDED_SHORT",
			"passed": true,
			"region_count": 2,
			"same_island_verdict": "OK",
			"title": "Two valid islands still fail the endpoint probe"
		}
	],
	"claim": "A small NavigationServer2D panel can distinguish unsynced maps, missing regions, endpoint snap problems, disconnected islands, and AStarGrid2D partial-path semantics before treating an empty path as the root cause.",
	"failed": [],
	"generated_utc": "2026-07-08T21:21:17",
	"godot_version": "4.7-stable (official)",
	"passed": true
}