Files
TheTree_mock/Makefile
T
TakeshiandClaude Opus 5.5 f6f9c9c0d4 P06-02: Prove whole-tower stop under natural A06 depletion across PIDs
An ordinary operating tower whose upkeep exceeds the world tree's supply runs
dry on its own; for an hour every facility is stopped with no sales, income,
production, admissions, warp travel or elevator boarding, and no guest is lost
except through ordinary departure. A mid-outage save continues identically in
a new process.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 15:18:38 +09:00

282 lines
16 KiB
Makefile

GODOT ?= godot
.PHONY: editor run test test-s0 test-s1 test-s2 test-s3 test-s4 test-s5 test-s6 test-mvp test-acceptance test-ui test-perf test-perf-full check export-windows
editor:
$(GODOT) --editor --path .
run:
$(GODOT) --path .
test:
$(MAKE) test-s0
$(MAKE) test-s1
$(MAKE) test-s2
$(MAKE) test-s3
$(MAKE) test-supply
$(MAKE) test-business
$(MAKE) test-s4
$(MAKE) test-s5
$(MAKE) test-s6
$(MAKE) test-mvp
$(MAKE) test-acceptance
$(MAKE) test-ui
$(MAKE) test-transport
$(MAKE) test-perf
test-s0:
$(GODOT) --headless --path . --script res://tests/run_tests.gd
$(GODOT) --headless --path . --script res://tests/s0/test_definition_registry.gd
$(GODOT) --headless --path . --script res://tests/s0/test_command_transaction.gd
$(GODOT) --headless --path . --script res://tests/s0/test_determinism.gd
$(GODOT) --headless --path . --script res://tests/s0/test_stable_id_generator.gd
$(GODOT) --headless --path . --script res://tests/s0/test_domain_events.gd
$(GODOT) --headless --path . --script res://tests/s0/test_runtime_integration.gd
test-s1:
$(GODOT) --headless --path . --script res://tests/s1/test_dimension_batch_save.gd
$(GODOT) --headless --path . --script res://tests/s1/test_facility_resize_preview.gd
$(GODOT) --headless --path . --script res://tests/s1/test_weighted_resize_runtime.gd
$(GODOT) --headless --path . --script res://tests/s1/test_original_facility_dimensions.gd
$(GODOT) --headless --path . --script res://tests/s1/test_world_service.gd
$(GODOT) --headless --path . --script res://tests/s1/test_path_service.gd
$(GODOT) --headless --path . --script res://tests/s1/test_path_snapshot_transit_guard.gd
$(GODOT) --headless --path . --script res://tests/s1/test_path_congestion.gd
$(GODOT) --headless --path . --script res://tests/s1/test_construction_service.gd
$(GODOT) --headless --path . --script res://tests/s1/test_excavation_service.gd
$(GODOT) --headless --path . --script res://tests/s1/test_spatial_subslot_service.gd
$(GODOT) --headless --path . --script res://tests/s1/test_route_subslot_path_adapter.gd
$(GODOT) --headless --path . --script res://tests/s1/test_facility_infrastructure_projector.gd
$(GODOT) --headless --path . --script res://tests/s1/test_runtime_infrastructure_integration.gd
$(GODOT) --headless --path . --script res://tests/s1/test_runtime_world_construction.gd
test-s2:
$(GODOT) --headless --path . --script tests/environment/test_cleaning_access.gd
$(GODOT) --headless --path . --script tests/ui/test_cleaning_gameplay.gd
$(GODOT) --headless --path . --script tests/environment/test_runtime_cleanliness.gd
$(GODOT) --headless --path . --script res://tests/environment/test_facility_cleanliness.gd
$(GODOT) --headless --path . --script res://tests/s2/test_facility_upkeep_accrual.gd
$(GODOT) --headless --path . --script res://tests/s2/test_facility_upkeep_settlement.gd
$(GODOT) --headless --path . --script res://tests/s2/test_facility_service.gd
$(GODOT) --headless --path . --script res://tests/s2/test_service_start_slots.gd
$(GODOT) --headless --path . --script res://tests/s2/test_inventory_logistics.gd
$(GODOT) --headless --path . --script res://tests/s2/test_economy_service.gd
$(GODOT) --headless --path . --script res://tests/s2/test_ledger_backed_resources.gd
$(GODOT) --headless --path . --script res://tests/s2/test_mana_network_service.gd
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_cycle.gd
$(GODOT) --headless --path . --script res://tests/s2/test_runtime_mana_reserve.gd
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_new_pid.gd -- writer
$(GODOT) --headless --path . --script res://tests/s2/test_mana_reserve_new_pid.gd -- reader
$(GODOT) --headless --path . --script res://tests/s2/test_mana_recovery_new_pid.gd -- writer
$(GODOT) --headless --path . --script res://tests/s2/test_mana_recovery_new_pid.gd -- reader
$(GODOT) --headless --path . --script res://tests/s2/test_runtime_operations_cycle.gd
test-s3:
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_staff_assignment.gd
$(GODOT) --headless --path . --script res://tests/s3/test_guest_service.gd
$(GODOT) --headless --path . --script res://tests/s3/test_staff_service.gd
$(GODOT) --headless --path . --script res://tests/s3/test_staff_payroll_operations.gd
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_actor_cycle.gd
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_actor_hardening.gd
$(GODOT) --headless --path . --script res://tests/s3/test_runtime_path_traffic.gd
test-s4:
$(GODOT) --headless --path . --script res://tests/s4/test_relationship_event_service.gd
$(GODOT) --headless --path . --script res://tests/s4/test_placement_risk_preview_service.gd
$(GODOT) --headless --path . --script res://tests/s4/test_runtime_relationship_events.gd
test-s5:
$(GODOT) --headless --path . --script res://tests/s5/test_authority_service.gd
$(GODOT) --headless --path . --script res://tests/s5/test_defense_service.gd
$(GODOT) --headless --path . --script res://tests/s5/test_runtime_authority_cycle.gd
$(GODOT) --headless --path . --script res://tests/s5/test_runtime_defense_cycle.gd
test-s6:
$(GODOT) --headless --path . --script res://tests/s6/test_save_operations.gd
$(GODOT) --headless --path . --script res://tests/s6/test_save_preflight.gd
$(GODOT) --headless --path . --script res://tests/s6/test_save_recovery_preservation.gd
$(GODOT) --headless --path . --script res://tests/s6/test_runtime_snapshot_serialization.gd
$(GODOT) --headless --path . --script res://tests/s6/test_performance_budget.gd
$(GODOT) --headless --path . --script res://tests/s6/test_runtime_save_lifecycle.gd
test-mvp:
$(GODOT) --headless --path . --script res://tests/mvp/test_premium_room_guest_flow.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_mana_depletion.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_whole_tower_outage.gd -- writer
$(GODOT) --headless --path . --script res://tests/mvp/test_whole_tower_outage.gd -- reader
$(GODOT) --headless --path . --script res://tests/mvp/test_premium_room.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_original_room_zones.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_loss_streak.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_legacy_midnight.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_upkeep.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_upkeep_construction_boundaries.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_operations_coordinator.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_mvp_content_catalog.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_progression_service.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_content_progression.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_operations_integration.gd
test-acceptance:
$(GODOT) --headless --path . --script res://tests/mvp/test_runtime_operations_acceptance.gd
test-ui:
$(GODOT) --headless --path . --script res://tests/mvp/test_chapel_boundaries.gd
$(GODOT) --headless --path . --script res://tests/ui/test_chapel_gameplay.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_chapel_service.gd
$(GODOT) --headless --path . --script res://tests/ui/test_dashboard_coalescing.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_anri_floor_pricing.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_fine_cleaning_effect.gd
$(GODOT) --headless --path . --script res://tests/mvp/test_amelia_donations.gd
$(GODOT) --headless --path . --script res://tests/ui/test_anri_recruitment.gd
$(GODOT) --headless --path . --script res://tests/ui/test_layer_skin.gd
$(GODOT) --headless --path . --script res://tests/ui/test_world_tree_rank.gd
$(GODOT) --headless --path . --script res://tests/ui/test_rank_pointer.gd
$(GODOT) --headless --path . --script res://tests/ui/test_layer_presentation.gd
$(GODOT) --headless --path . --script res://tests/ui/test_original_build_pointer.gd
$(GODOT) --headless --path . --script res://tests/ui/test_dimension_migration_ui.gd
python3 tools/run_upkeep_ui_flow.py --godot "$(GODOT)"
$(GODOT) --headless --path . --script res://tests/ui/test_upkeep_inspector.gd
$(GODOT) --headless --path . --script res://tests/ui/test_staff_rest.gd
$(GODOT) --headless --path . --script res://tests/ui/test_staff_rescue.gd
$(GODOT) --headless --path . --script res://tests/ui/test_guest_observation.gd
$(GODOT) --headless --path . --script res://tests/ui/test_guest_decision_log.gd
$(MAKE) test-pixel-ui
$(GODOT) --headless --path . --script res://tests/ui/test_main_dashboard.gd
$(GODOT) --headless --path . --script res://tests/ui/test_staff_management.gd
$(GODOT) --headless --path . --script res://tests/ui/test_supply_management.gd
$(GODOT) --headless --path . --script res://tests/ui/test_supply_auto_purchase_ui.gd
$(GODOT) --headless --path . --script res://tests/ui/test_business_management.gd
$(GODOT) --headless --path . --script res://tests/ui/test_elevator_management.gd
$(MAKE) test-opening
test-perf:
$(GODOT) --headless --path . --script res://tests/performance/test_facility_reachability.gd
$(GODOT) --headless --path . --script res://tests/performance/test_snapshot_ownership.gd
$(GODOT) --headless --path . --script res://tests/performance/test_world_snapshot_cache.gd
$(GODOT) --headless --path . --script res://tests/performance/test_lazy_digest.gd
$(GODOT) --headless --path . --script res://tests/performance/test_path_membership.gd
$(GODOT) --headless --path . --script res://tests/performance/test_system_optimization.gd
$(GODOT) --headless --path . --script res://tests/performance/test_digest_performance.gd
$(GODOT) --headless --path . --script res://tests/performance/test_perf_mvp_001.gd
test-perf-full:
PERF_MVP_FULL=1 $(GODOT) --headless --path . --script res://tests/performance/test_perf_mvp_001.gd
check:
$(GODOT) --headless --editor --path . --quit
$(GODOT) --headless --path . --quit-after 2
export-windows:
mkdir -p build/windows
$(GODOT) --headless --path . --export-release "Windows Desktop"
$(MAKE) test-exported-opening
# Pixel cutaway: interactive disposable inn, capture and input regression.
.PHONY: preview-pixel capture-pixel test-pixel-ui
preview-pixel:
THE_TREE_PIXEL_PLAY=1 $(GODOT) --path . --script res://tests/ui/capture_pixel_tower.gd
capture-pixel:
$(GODOT) --path . --script res://tests/ui/capture_pixel_tower.gd
test-pixel-ui:
$(GODOT) --headless --path . --script res://tests/ui/test_room_presentation.gd
$(GODOT) --headless --path . --script res://tests/ui/test_pixel_tower.gd
.PHONY: test-opening capture-opening
test-opening:
$(GODOT) --headless --path . --script res://tests/ui/test_first_operating_day.gd
capture-opening:
THE_TREE_OPENING_CAPTURE=1 $(GODOT) --path . --script res://tests/ui/test_first_operating_day.gd
# Paid purchases, kitchen batches, and porter deliveries; isolated test saves.
.PHONY: test-supply capture-supply preview-supply
test-supply:
$(GODOT) --headless --path . --script res://tests/s2/test_kitchen_production.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_save_migration.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_logistics_bridge.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_management_service.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase.gd
$(GODOT) --headless --path . --script res://tests/supply/test_normal_auto_purchase_chain.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase_boundaries.gd
$(GODOT) --headless --path . --script res://tests/supply/test_supply_auto_purchase_destruction.gd
$(GODOT) --headless --path . --script res://tests/supply/test_normal_supply_chain.gd
capture-supply:
THE_TREE_SUPPLY_CAPTURE=1 THE_TREE_SUPPLY_CAPTURE_ONLY=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
preview-supply:
THE_TREE_SUPPLY_PREVIEW=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
.PHONY: test-business
test-business:
$(GODOT) --headless --path . --script res://tests/s2/test_facility_pricing.gd
$(GODOT) --headless --path . --script res://tests/business/test_business_operations.gd
$(GODOT) --headless --path . --script res://tests/business/test_business_closure.gd
.PHONY: preview-business capture-business
preview-business:
THE_TREE_BUSINESS_PREVIEW=1 THE_TREE_SUPPLY_PREVIEW=1 $(GODOT) --path . --script res://tests/supply/test_normal_supply_chain.gd
capture-business:
THE_TREE_BUSINESS_UI_CAPTURE=1 $(GODOT) --path . --script res://tests/ui/test_business_management.gd
.PHONY: test-transport capture-transport preview-transport
test-transport:
$(GODOT) --headless --path . --script res://tests/staff/test_dormitory_dimension_migration.gd
$(GODOT) --headless --path . --script res://tests/staff/test_staff_dormitory.gd
$(GODOT) --headless --path . --script res://tests/staff/test_dormitory_shift_cycle.gd
$(GODOT) --headless --path . --script res://tests/staff/test_shift_rush.gd
$(GODOT) --headless --path . --script res://tests/staff/test_staff_rest.gd
$(GODOT) --headless --path . --script res://tests/staff/test_rescue_elevator.gd
$(GODOT) --headless --path . --script res://tests/staff/test_staff_rescue.gd
$(GODOT) --headless --path . --script res://tests/staff/test_task_work_clock.gd
$(MAKE) test-stairs
$(GODOT) --headless --path . --script res://tests/world/test_elevator_topology.gd
$(GODOT) --headless --path . --script res://tests/transport/test_elevator_service.gd
$(GODOT) --headless --path . --script res://tests/staff/test_staff_commute.gd
$(GODOT) --headless --path . --script res://tests/transport/test_transport_save.gd
$(GODOT) --headless --path . --script res://tests/transport/test_transport_density_migration.gd
$(GODOT) --headless --path . --script res://tests/transport/test_transport_boundaries.gd
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_transport.gd
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_warp.gd -- writer
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_warp.gd -- reader
capture-transport:
THE_TREE_TRANSPORT_CAPTURE=1 $(GODOT) --path . --script res://tests/transport/test_runtime_transport.gd
preview-transport:
THE_TREE_TRANSPORT_PREVIEW=1 $(GODOT) --path . --script res://tests/transport/test_runtime_transport.gd
.PHONY: test-stairs test-transport-comparison
test-stairs:
$(GODOT) --headless --path . --script res://tests/world/test_path_vertical_policy.gd
$(GODOT) --headless --path . --script res://tests/world/test_path_transit_density.gd
$(GODOT) --headless --path . --script res://tests/world/test_stair_infrastructure.gd
$(GODOT) --headless --path . --script res://tests/world/test_legacy_stairs.gd
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_stairs.gd
$(GODOT) --headless --path . --script res://tests/ui/test_stair_transport_details.gd
test-transport-comparison:
$(GODOT) --headless --path . --script res://tests/transport/test_transport_comparison.gd
$(GODOT) --headless --path . --script res://tests/transport/test_runtime_transport_comparison.gd
# Check the actual shipped data outside this checkout, including first build.
WINDOWS_PCK ?= build/windows/TheTree.pck
MACOS_APP ?= build/macos/TheTree.app
.PHONY: export-macos
export-macos:
mkdir -p build/macos
$(GODOT) --headless --path . --export-release "macOS" "$(MACOS_APP)"
python3 tools/verify_exported_opening.py "$(MACOS_APP)/Contents/Resources/The Tree.pck" --godot "$(GODOT)"
.PHONY: test-exported-opening
test-exported-opening:
python3 tools/verify_exported_opening.py "$(WINDOWS_PCK)" --godot "$(GODOT)"
# Exhaustive discovery includes comparison suites outside the ordinary smoke run.
.PHONY: test-all
test-all:
python3 tools/run_all_tests.py --godot "$(GODOT)"