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
+20 -3
View File
@@ -1,4 +1,5 @@
extends SceneTree
const FixtureCleanup := preload("res://tests/helpers/ui_audio_fixture_cleanup.gd")
## Normal build/product controls exercise drafts, a real paid tick, queued Save,
## normal load, duplicate prevention and removal-free disabled restart state.
@@ -102,10 +103,22 @@ func run() -> void:
push_error("AUTO_PURCHASE_UI needs a fresh user://tests slot; player fallback forbidden")
quit(90); return
await setup_scene(slot)
if panel == null: quit(failures); return
if panel == null:
var _audio_cleanup_early_0: Dictionary = await FixtureCleanup.free_owner_and_wait(self, main)
if not bool(_audio_cleanup_early_0.get(&"passed", false)):
push_error("Ordinary fixture audio cleanup failed: %s" % str(_audio_cleanup_early_0))
quit(96)
return
quit(failures); return
expect(panel.auto_purchase_button.disabled, "no warehouse is a safe empty setting state")
build_warehouse()
if warehouse.is_empty(): quit(failures); return
if warehouse.is_empty():
var _audio_cleanup_early_1: Dictionary = await FixtureCleanup.free_owner_and_wait(self, main)
if not bool(_audio_cleanup_early_1.get(&"passed", false)):
push_error("Ordinary fixture audio cleanup failed: %s" % str(_audio_cleanup_early_1))
quit(96)
return
quit(failures); return
queue_intent()
save_button()
expect(SaveService.load_snapshot(slot)[&"ok"], "pending actual command is written to isolated disk")
@@ -132,7 +145,11 @@ func run() -> void:
expect(not panel.auto_purchase_enabled.button_pressed and stock() == 6, "normal load preserves disabled intent and paid stock")
await capture("normal-auto-purchase")
SaveService.delete_save(slot)
main.queue_free()
var _audio_cleanup_final: Dictionary = await FixtureCleanup.free_owner_and_wait(self, main)
if not bool(_audio_cleanup_final.get(&"passed", false)):
push_error("Ordinary fixture audio cleanup failed: %s" % str(_audio_cleanup_final))
quit(96)
return
await process_frame
print("SUPPLY_AUTO_PURCHASE_UI checks=%d failures=%d" % [checks, failures])
quit(failures)