Save The Tree implementation and acceptance work in progress

Preserve production code, regression fixtures, audio assets and provenance, test infrastructure, and the original-completion plan and progress ledger. Final game and Windows acceptance remain pending; excluded local artifacts and native experiments are not part of this snapshot.
This commit is contained in:
Takeshi
2026-10-11 15:58:00 +09:00
parent 39f6068461
commit b84bade045
235 changed files with 495831 additions and 312 deletions
@@ -0,0 +1,196 @@
{
"review_date_jst": "2026-10-02",
"reviewer": "atomic_requirements independent task",
"review_mode": "read-only code and retained evidence audit",
"production_edits": 0,
"new_godot_runs": 0,
"source_head": "285528b7a3b1b46a2a67af5aa90d9085539b42f4",
"reviewed_source_sha256": {
"scripts/core/save_service.gd": "7c107a509b3afccb478ba89d051fbaa9a8c93165326fac8e4cef2249c05879d0",
"scripts/core/simulation_snapshot.gd": "fc528a3d1db1f439c10f70d6cba2f72bd65abc0d3866eb8b582df60918af0adf",
"autoload/simulation_runtime.gd": "d3ad4aab6ded19eb137c5494481cc7333e846746a25b18dbad3c8b663e9f6b72",
"tests/s6/test_save_preflight.gd": "49e24247649839b6f50d19b2284368efb7f8f8b189c5010491ad428e97c1c8b9"
},
"focused_evidence": {
"checks": 485,
"suites": 7,
"all_passed_verified": true,
"logs": [
{
"test": "tests/s6/test_save_preflight.gd",
"exit_code": 0,
"passed": true,
"checks": 128,
"seconds": 3.15,
"log": "tests__s6__test_save_preflight.gd-r02.log",
"log_sha256": "171e2af4cdd6c9d00928110642f20de6d678f300947d16b53e4485f4988206c9",
"completion_check_counts": [
128
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/s6/test_save_operations.gd",
"exit_code": 0,
"passed": true,
"checks": 127,
"seconds": 2.79,
"log": "tests__s6__test_save_operations.gd-r02.log",
"log_sha256": "c353636c82f54e49a88ab56ca000c14a78687921e5cc5ceeea8982a2275ed2c9",
"completion_check_counts": [
127
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/s6/test_runtime_save_lifecycle.gd",
"exit_code": 0,
"passed": true,
"checks": 96,
"seconds": 6.68,
"log": "tests__s6__test_runtime_save_lifecycle.gd-r02.log",
"log_sha256": "6ab68137561c286f85cfb1b7f970023207659cb061f8ba1db41e3ed1f1a33157",
"completion_check_counts": [
96
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/run_tests.gd",
"exit_code": 0,
"passed": true,
"checks": 73,
"seconds": 1.13,
"log": "tests__run_tests.gd-r02.log",
"log_sha256": "91ecdbe39f081ef6124499b9cec042600e7154d72c89f029298966aa560606ab",
"completion_check_counts": [
73
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/transport/test_transport_save.gd",
"exit_code": 0,
"passed": true,
"checks": 29,
"seconds": 1.7,
"log": "tests__transport__test_transport_save.gd-r02.log",
"log_sha256": "f0d51dfd583cd9b08d19790a39fedc9169c8802cab72f7817d9ecfa40fe93306",
"completion_check_counts": [
29
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/ui/test_dimension_migration_ui.gd",
"exit_code": 0,
"passed": true,
"checks": 12,
"seconds": 2.33,
"log": "tests__ui__test_dimension_migration_ui.gd-r02.log",
"log_sha256": "db9f3e78c7670558b9871c1c78abbad8be27bb45fd8d3c79e7535df4d3adfe4d",
"completion_check_counts": [
12
],
"completion_matches": true,
"passed_verified": true
},
{
"test": "tests/supply/test_supply_save_migration.gd",
"exit_code": 0,
"passed": true,
"checks": 20,
"seconds": 1.18,
"log": "tests__supply__test_supply_save_migration.gd-r02.log",
"log_sha256": "b26de7e09b864e70fc36822dec40851ef08a056404e25373a9c1d6e26d45211d",
"completion_check_counts": [
20
],
"completion_matches": true,
"passed_verified": true
}
],
"source_map_count": 318,
"source_map_drift_paths": [
"tests/performance/test_digest_performance.gd"
],
"changed_files_pins_match": true
},
"new_difference_induced_major_findings": 0,
"findings": [
{
"id": "SFR-01",
"priority": 1,
"state": "candidate_only_static_reproduction_path",
"preexisting": true,
"file": "scripts/core/save_service.gd",
"line": 932,
"symbol": "_reconcile_interrupted_formal_save",
"condition": "identifiable unsupported formal version + valid transaction marker + current tmp/bak",
"effect": "formal package deleted/replaced by old backup before unsupported-version rejection",
"affected_entries": [
"load_snapshot",
"load_with_recovery",
"inspect_recovery_candidates",
"migrate_save",
"load_recovery_candidate"
]
},
{
"id": "SFR-02",
"priority": 2,
"state": "candidate_only_static_reproduction_path",
"preexisting": true,
"file": "scripts/core/save_service.gd",
"line": 334,
"symbol": "_load_recovery_candidate_impl",
"condition": "explicit backup selection + stale marker/tmp, formal either present or missing",
"effect": "reconcile may delete tmp/marker or promote tmp before nominal read_only result"
}
],
"candidate_artifact": "artifacts/original-completion-2026-10-02/p03-recovery-readonly-candidate/candidate_receipt.json",
"adoption_recommendation": "Reproduce and verify both preservation defects in an isolated candidate stage before claiming P03 acceptance; no main edits during ongoing full regression.",
"all_p03_accepted": false,
"full157_regression_result_included": false,
"limitations": [
"128 preflight does not combine unknown formal with valid marker/current backup",
"256 MiB is a serialized world limit, not total peak memory",
"inclusive upper-size test stops at manifest mismatch, not successful full-size decompression",
"20000-cell measurement is world-only, not full Runtime acceptance",
"new candidate has not been executed"
],
"report_sha256": "57de52db51a6b0b3dcbcf20f6df3a825b83ba2d9a9a7707e9bab7026cb3fc6c6",
"existing_contract_static_review": {
"save_operations_lines": [
349,
450
],
"runtime_save_lifecycle_lines": [
170,
200,
230,
380
],
"preserved": [
"registry continuity and purity",
"current schema rejection",
"registered legacy migration and exact original backup",
"failed migration original preservation",
"current-format interrupted migration backup/promotion/rollback",
"current-format normal recovery"
],
"strengthened": [
"unsupported recognizable formal never replaced before rejection",
"explicit candidate read does not reconcile",
"registered legacy failed source keeps normal stale artifacts"
],
"candidate_execution_verified": false,
"candidate_driver_operations": 8,
"candidate_foreign_shapes": 5
}
}