{ "scope": "JSON numeric metadata type diagnostic only; no game acceptance", "actual_pid": 99508, "exit_code": 0, "command": [ "/Applications/Godot.app/Contents/MacOS/Godot", "--headless", "--path", "/private/tmp/the-tree-p24-json-c200043b18364206b2ca6f61179c4d62", "--script", "/private/tmp/the-tree-p24-json-c200043b18364206b2ca6f61179c4d62/probe.gd", "--log-file", "/private/tmp/the-tree-p24-json-c200043b18364206b2ca6f61179c4d62/engine.log" ], "raw": "Godot Engine v4.7.2.stable.official.ed1daf0bf - https://godotengine.org\n\n{\"engine_version\":{\"build\":\"official\",\"hash\":\"ed1daf0bf001b61586d9930840f2f1394092c079\",\"hex\":263938,\"major\":4,\"minor\":7,\"patch\":2,\"status\":\"stable\",\"string\":\"4.7.2-stable (official)\",\"timestamp\":0},\"is_float\":true,\"is_int\":false,\"profile\":\"/Users/korizatou114/Library/Application Support/TheTree-P24-JSON-5a698892c27c477f828a12f1841d8637\",\"version_value\":1.0}\n", "probe_sha256": "2b6cba8ceee004d1788f69ba27cba73ebcb049dcce418baa9048400969cd5d34", "finding": { "severity": "high", "file": "scenes/main/main.gd", "functions": [ "_restore_interface_selection", "_restore_actor_interface_selection" ], "candidate_observed": "not selection.get(\"version\", 0) is int", "impact": "SaveService._read_manifest JSON.parse_string produces 1.0 FLOAT, so normal version1 metadata will be silently rejected and valid selections lost.", "required_original_behavior": "accept numeric exact1 from normal JSON while rejecting bool/string/non1 version; preserve old optional metadata fallback", "acceptance_cases": [ "normal saved JSON version1 decoded asfloat must restore map/staff/guest selection", "bool true version must not count asnumeric1", "1.5/string1/wrongtype safely ignored", "no changes to gameplay snapshot or SaveService format needed" ] }, "read_only_review_report": true, "root_product_source_edits": 0 }