Files
TheTree_mock/Makefile
T
TakeshiandClaude Opus 5.5 0754f412a8 P14-03: Price whole-shaft elevator waits in A* route choice
Riders queued for any floor pair in a shaft now delay every pair: the
elevator service publishes the rest of the shaft queue as each connector's
dynamic cost, refreshed on trip changes and each cabin minute, and restore
rejects saves whose wait disagrees with their trips. A two-shaft fixture with
real guests shows rush diversion, shared cabins within capacity, recovery,
route loss and warp-exit congestion.

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

283 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
$(GODOT) --headless --path . --script res://tests/transport/test_route_wait_choice.gd
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)"