Preserve approved pixel tower prototype as development baseline
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# 自動テスト対応表
|
||||
|
||||
この表は、仕様上の主要な不変条件をどのHeadless Testで検証しているかを示す。ゲームルールの正本ではなく、実装の回帰防止範囲を確認するための索引である。
|
||||
|
||||
## 実行
|
||||
|
||||
全件:
|
||||
|
||||
make test
|
||||
|
||||
段階別:
|
||||
|
||||
make test-s0
|
||||
make test-s1
|
||||
make test-s2
|
||||
make test-s3
|
||||
make test-s4
|
||||
make test-s5
|
||||
make test-s6
|
||||
make test-mvp
|
||||
make test-acceptance
|
||||
make test-ui
|
||||
make test-perf
|
||||
make test-perf-full
|
||||
|
||||
構文、Autoload、Main Sceneの読み込み確認:
|
||||
|
||||
make check
|
||||
|
||||
## 対応表
|
||||
|
||||
| 段階 | Test | 主な検証対象 |
|
||||
|---|---|---|
|
||||
| S0 | `tests/run_tests.gd` | Clock、GameState、基本Snapshot、Atomic Save |
|
||||
| S0 | `tests/s0/test_definition_registry.gd` | Definition Schema、重複ID、参照検証 |
|
||||
| S0 | `tests/s0/test_command_transaction.gd` | Command順序、処理後も残る受理ID/冪等Key履歴、旧Snapshot移行、厳密復元、Transaction rollback |
|
||||
| S0 | `tests/s0/test_determinism.gd` | 24時間再生、RNG Stream、Digest一致 |
|
||||
| S0 | `tests/s0/test_stable_id_generator.gd` | 安定ID、Save/Load後の連番 |
|
||||
| S0 | `tests/s0/test_domain_events.gd` | Domain Event順序、再配送境界、Batch全件先行Commit、無変更拒否、再入配信順、配信中Restore拒否 |
|
||||
| S0 | `tests/s0/test_runtime_integration.gd` | Runtime Command、Snapshot、復元原子性 |
|
||||
| S1 | `tests/s1/test_world_service.gd` | Zone/Layer、Occupancy、支持、Rank拡張 |
|
||||
| S1 | `tests/s1/test_path_service.gd` | 決定的A*、権限Edge、Cache失効 |
|
||||
| S1 | `tests/s1/test_path_congestion.gd` | 密度Cost、Soft Collision、Cache低下側失効、Connector権限別Cost、Elevator Request一意性、停止時迂回、退場Cleanup、30分停滞 |
|
||||
| S1 | `tests/s1/test_construction_service.gd` | Placement、費用、取消、完成、撤去、完成通知の保留/確定/破棄、通知中の再入拒否 |
|
||||
| S1 | `tests/s1/test_excavation_service.gd` | 硬度別費用・時間、入口接続、支保、中断再開、二層解放、厳密Snapshot |
|
||||
| S1 | `tests/s1/test_spatial_subslot_service.gd` | ROUTE/DECORATION/UTILITY独立共存、複数Cell、crosslink、revision、Path query、外部検証境界、厳密Snapshot |
|
||||
| S1 | `tests/s1/test_route_subslot_path_adapter.gd` | base+ROUTEのPath投影、追加・置換・撤去の原子更新、到達性、revision、隔離、厳密Snapshot |
|
||||
| S1 | `tests/s1/test_facility_infrastructure_projector.gd` | 完成した客用/業務用通路と職員扉の実Path投影、利用権限、安定ID、撤去、replay、crosslink、exact rollback、隔離、厳密Snapshot、未対応昇降機の無変更拒否 |
|
||||
| S1 | `tests/s1/test_runtime_infrastructure_integration.gd` | Runtime v6、掘削29/30分境界、建設通知順、通路・職員扉完成/撤去、失敗時signalゼロ、Rank拡張、v5代理施設移行、破損Saveの原子的拒否 |
|
||||
| S1 | `tests/s1/test_runtime_world_construction.gd` | World/Path/Construction統合とReplay |
|
||||
| S2 | `tests/s2/test_facility_service.gd` | 状態優先、Queue、Slot、中断、原子的完了 |
|
||||
| S2 | `tests/s2/test_inventory_logistics.gd` | FEFO、Reservation、Cargo所有権、入力fingerprint冪等性、ID Tombstone、Carrier予約負荷、原子Batch |
|
||||
| S2 | `tests/s2/test_mana_network_service.gd` | 優先供給、Brownout、蓄電、復旧保持 |
|
||||
| S2 | `tests/s2/test_economy_service.gd` | 複式Ledger、冪等取引、逆仕訳、残高監査 |
|
||||
| S2 | `tests/s2/test_ledger_backed_resources.gd` | GameState資源とLedgerの原子的Adapter |
|
||||
| S2 | `tests/s2/test_runtime_operations_cycle.gd` | 入荷からService売上までの完全Cycle |
|
||||
| S3 | `tests/s3/test_guest_service.gd` | SYS-GST-001〜007、6欲求、旧5欲求移行、成人境界、Utility、退出復旧 |
|
||||
| S3 | `tests/s3/test_staff_service.gd` | SYS-STF-001〜006、複数Shift、Task原子性、雇用区分、日給、退職者未払台帳 |
|
||||
| S3 | `tests/s3/test_staff_payroll_operations.gd` | 当日日給と繰越債務、部分清算、退職後債務、日次冪等性、厳密履歴Snapshot |
|
||||
| S3 | `tests/s3/test_runtime_actor_cycle.gd` | Guest/Staff/Facility/Inventory/Ledgerの24時間統合 |
|
||||
| S3 | `tests/s3/test_runtime_actor_hardening.gd` | 実移動、残高予約、勤務終了、破損Snapshot拒否 |
|
||||
| S3 | `tests/s3/test_runtime_path_traffic.gd` | Guest/StaffのPath密度投影、固定小数点混雑速度、30分停滞復旧、旧Runtime移行、Dispatcher相互照合 |
|
||||
| S4 | `tests/s4/test_relationship_event_service.gd` | SYS-REL-001〜004、SYS-EVT-001〜004、限定Lock修復、Content Filter enum厳密復元 |
|
||||
| S4 | `tests/s4/test_placement_risk_preview_service.gd` | 同一施設・Shift接触時間、Shield/Event候補、Route Lock警告、Content Filter不変、決定的回避案、fail-closed入力 |
|
||||
| S4 | `tests/s4/test_runtime_relationship_events.gd` | Choice pause、Cost escrow、Actor欠落、exact Replay |
|
||||
| S5 | `tests/s5/test_authority_service.gd` | SYS-AUT-001〜004、Heat、Evidence、Inspection |
|
||||
| S5 | `tests/s5/test_defense_service.gd` | Wave、参加者、扉、設備、目的物、Skill、撤退、Snapshot |
|
||||
| S5 | `tests/s5/test_runtime_authority_cycle.gd` | Path/LOS/Ledger/Authority統合とexact Replay |
|
||||
| S5 | `tests/s5/test_runtime_defense_cycle.gd` | 全10 Command、専用RNG、Skill費用、Staff/Facility損害、Raid排他Lock、途中Save、原子rollback |
|
||||
| S6 | `tests/s6/test_save_operations.gd` | Autosave世代・縮小、Migration、Checksum Recovery、package内symlink拒否、rename中断復旧 |
|
||||
| S6 | `tests/s6/test_performance_budget.gd` | x1/x4、Path、Save/Loadの性能予算判定 |
|
||||
| S6 | `tests/s6/test_runtime_save_lifecycle.gd` | 06:00日次保存、3世代、Recovery、読込原子性、限定修復、Content Filter統合 |
|
||||
| MVP | `tests/mvp/test_operations_coordinator.gd` | 06:00営業日締め・朝境界、需要・自動来客、7日平均、未払・破綻、14日exact replay |
|
||||
| MVP | `tests/mvp/test_mvp_content_catalog.gd` | 客8クラス×種族4種、雇用候補20人、ユニーク2人、成人境界、厳密Schema、全体fail-closed |
|
||||
| MVP | `tests/mvp/test_progression_service.gd` | Rank 1~7条件、累計値、逐次昇格、原子的World境界、冪等性、rollback隔離、Snapshot |
|
||||
| MVP | `tests/mvp/test_runtime_content_progression.gd` | 32 Guest定義、候補雇用・契約費・日給・Shift・Path、未払時の無変更拒否、累計値、Rank拡張、旧Runtime移行、Runtime v6、24時間再生 |
|
||||
| MVP | `tests/mvp/test_runtime_operations_integration.gd` | 本番運営の明示有効化、06:00営業日境界、実来客、給与・未払・破綻、Runtime v6、14日運営境界再生 |
|
||||
| MVP | `tests/mvp/test_runtime_operations_acceptance.gd` | 実Tick 24時間、選択待ち停止再開、Save・Command再送、部分給与、破綻、破綻後no-op、14日運営境界の連続/Day 7復元一致 |
|
||||
| UI | `tests/ui/test_main_dashboard.gd` | 2解像度Layout、本番運営表示、雇用候補20人の表示と即時/予約雇用・二重送信防止・保存済み操作連番復元、座標変換、建設、掘削モード/Preview/Command、施設選択、前景Event Choice、手動Save/Load |
|
||||
| PERF | `tests/performance/test_perf_mvp_001.gd` | 独立Service合成の24時間負荷Smoke。`PERF_MVP_FULL=1`で仕様上限の完全Fixture。Runtime全Domain・UI・実描画Frameは別受入 |
|
||||
|
||||
## 横断的な合格条件
|
||||
|
||||
各System追加時は、少なくとも次を同じ段階のTestへ含める。
|
||||
|
||||
- 不正入力を副作用なしで拒否する。
|
||||
- 外部境界の途中失敗を原子的に巻き戻す。
|
||||
- 同じCommandまたは解決IDを再送しても二重適用しない。
|
||||
- Snapshotを完全往復でき、破損Snapshotの拒否が既存状態を変えない。
|
||||
- 同一Seed、同一Command列、同一開始Snapshotから同一Digestへ到達する。
|
||||
- Actor、Task、Reservation、Queue、Ledger、Event Lockに孤児参照を残さない。
|
||||
|
||||
性能Scenarioは機能回帰とは分離して測定する。時間超過時にもTickやEntityを間引いて合格扱いにはしない。
|
||||
|
||||
## MVP受入として未完了のScenario
|
||||
|
||||
System単体の合格と、ゲームとしてのMVP合格を混同しないため、次は別の受入Scenarioとして追加する。
|
||||
数値境界、共通Fixture、A/B分岐条件は `MVP_ACCEPTANCE_SCENARIOS.md` を正本とする。
|
||||
|
||||
- 全Actor AI、Event、監査、Path移動を含む20,160回の実Tickで14ゲーム日を完走する。現在の14日自動試験は運営境界を加速しており、実Tick受入の代替にはしていない。
|
||||
- 夕方混雑を、施設追加前後と動線改善前後で同一Seed比較する。
|
||||
- FRONTだけの動線と適切なBACK動線を、物流時間・従業員移動・客待ち時間で比較する。
|
||||
- 健全営業と地下営業を、Heat対策費込みの14日利益で比較する。
|
||||
- ヒロイン/ライバルの配置変更前に、接触・Shield・EventリスクPreviewが変化することを確認する。
|
||||
- 100客、30従業員を表示した状態で基準PCの実Frame rateを測定する。
|
||||
- 初見Playtestで地上/地下とFRONT/BACKの違いを30分以内に説明できるか観察する。
|
||||
Reference in New Issue
Block a user