# 実装状況 この文書は仕様書そのものではなく、現在のコードがどこまで到達しているかを記録する。ゲームルールの正本は `GAME_SPECIFICATION.md`、System境界と不変条件の正本は `SYSTEM_SPECIFICATION.md` とする。 ## 実装・自動検証済み ### S0: 決定的Simulation基盤 - 1ゲーム分固定Tickと11段階の処理順 - Command Queue、priority、予約時刻、処理後も保持する受理ID/idempotency対応、旧Queue Snapshot移行 - 原子的State Transaction - subsystem別の決定的RNG Stream - Stable ID、全件検証後に一括Commitする再入安全なDomain Event Batch、Simulation Digest - Directory単位のAtomic Save、Checksum、backup、Load直後の時刻維持 - 同一Seed・Command列を24時間再生したDigest一致 ### S1: 世界・建設 - `(x, y, layer)` Cell、ZoneとFRONT/BACKの分離 - Rank 1〜7の非破壊World拡張 - Occupancy、掘削、構造支持Component - 決定的A*、Path Cache、明示Connectorと利用権限 - セル容量・密度・動的Cost、Soft Collision、混雑回避 - Cost低下・通行再開時のCache失効、権限別の正確な経路Cost、無関係な障害を除いた不到達理由 - Elevator稼働状態と有限Queue、Request/Unit二重登録防止、停止時迂回、30分停滞検知と安全復旧候補 - Placement検証、ConstructionJob、取消、完成、撤去 - 建設完了通知の保留・確定・破棄境界。完成処理の検証中は外部通知を出さず、成功時だけ順序を保って一度ずつ公開する - 硬度別の地下掘削Job、入口までの接続、支保条件、中断再開、FRONT/BACK同時解放 - 地下施設の全Footprint掘削済み検証と、Zoneを跨ぐFootprintの拒否 - 境界施設はanchorを境界へ固定し地上側へのFootprint展開を許可、地上/地下施設は全Footprintを指定Zoneへ厳格固定 - 主要施設占有と独立して同一Cellへ共存できるROUTE/DECORATION/UTILITYの3種subslot、複数Cell横断、Path投影用query、厳密Snapshot - ROUTE subslotの追加・置換・撤去とPath graphを原子的に同期し、失敗時の双方復元、revision/stale判定、冪等再送、隔離まで扱うAdapter - 完成した客用通路/業務用通路を実ROUTEへ、従業員ドアを職員専用FRONT↔BACK Connectorへ原子的に投影・撤去する境界。安定ID、crosslink、exact rollback、隔離、厳密Snapshotを含む - Runtime v6で掘削、subslot、Path投影、施設投影を1分Tick・Rank拡張・建設完了・撤去・Saveへ統合。Runtime v5の旧代理施設を決定的に実ROUTEへ移行する - World、Path、Constructionを含むSnapshot往復 ### S2: 施設・在庫・物流・Mana・経済 - Facility状態の優先評価と複数reason - 営業時間、Policy Snapshot、priority Queue、Capacity Slot - Service開始・進行・中断・完了Callback - owner別Inventory Stack、FEFO Reservation、期限切れ、監査修復、既定IDの再利用を防ぐTombstone - 入力fingerprint付き冪等性、競合する一括操作の事前拒否、全件原子rollback - Logistics Request、貨物所有権移転、決定的Dispatcher、候補外になった運搬人の予約積載保持 - 歩行Graphと独立したMana Network、優先供給、蓄電、Brownout、復旧保持 - Goldを直接代入しない複式Ledger、逆仕訳、部分返金、日次照合 - 建設費・撤去返金とLedgerの原子的Adapter - 原料予約から施設Serviceと売上記帳までの統合Cycle - Cycle途中のSave→Load→再実行でDigest完全一致 - §7.6のMVP施設16種をStable ID付きDefinitionとして登録・Schema検証 - 施設詳細Schema version 2を追加。静的Definitionと可変Instance/日次履歴の境界、Access、Upgrade、営業時間、Policy、環境・リスク、客層、解禁、統計、サービス種別ごとの時間・品質・価格・処理単位・欲求効果を定義し、Registryで厳密検証 - 受付、厨房、成人向け個室を詳細Schemaへ先行移行し、複数接客・BACK生産・夜間成人向け営業の3類型を自動検証。その他MVP 13施設と拡張16施設は互換Schema version 1で段階移行可能 - MVP互換性を保つ拡張施設16種を`data/facilities/expansion/`へ分離して定義。地上一般向け5種、地下FRONT5種、BACK6種についてZone/Layer、建設費、Footprint、人員、容量、時間、価格、在庫、Risk Tagを固定し、通常建築パレットへの解放前に個別検証できるCatalog境界を追加 ### S3: 客・従業員 - 6種のGuest Need(Hunger/Sleep/Hygiene/Medical/Leisure/Intimacy)、Utility、状態遷移、実経路を1セル/分で移動 - 旧5欲求Saveだけの決定的移行、現行経路での旧Need名・欠落・混在拒否、成人確認付き昼夜Intimacy - 所持金と未決済予約を考慮した施設選択 - Queue、Service、退出、経路失敗の安全な復旧 - Staffの複数Shift、Task Dispatcher、実移動、疲労と危険作業制約 - 雇用区分、人物別日給、ID順の日次給与入力、当日発生と繰越債務を分けた部分清算、退職者の未払給与別台帳、旧Saveの互換移行 - 清算ID/日付/入力fingerprintによる二重発生防止と、派生合計まで照合する給与履歴Snapshot - 勤務終了、施設人員喪失、Service猶予と失敗の連動 - Guest/Staffのnamespaced Path投影、密度同期、固定小数点混雑速度、30分停滞復旧 - Guest/Staff/Facility/Inventory/Ledgerの24時間決定的再生 - 破損Snapshotと孤児参照を副作用なしで拒否 ### S4: 関係・Event - Affection、Trust、Fear、Corruption、Rival Bond、Shield - Shield攻撃、反復Penalty、段階閾値、Route Lock確認境界 - データ駆動Condition/Action/Choice - foreground Event排他、Actor Lock、Cost escrow - Content FilterのFADE/REPLACE/DISABLE - 選択二重送信、Actor欠落、Action失敗、Save途中再開の安全な復旧 - Threshold発火と24時間exact replayのRuntime統合 - 配置確定前に共有施設・重複時間、Shield攻撃候補、発火可能Event、Route Lock警告、施設/時間の回避案を決定的に比較する読み取り専用Preview ### S5: 行政・監査 - Heat、Suspicion、Incident重複排除、日次減衰とactive-case下限 - Evidenceの位置、視線、到達、証言、既知施設による発見根拠 - 監査予告、専用RNG、監査官の実Path巡回、到達不能時の安全退出 - 証拠点による処分、罰金の複式台帳反映、`resolution_id`二重適用防止 - Authority全Command、Domain Event、Snapshot、原子的RestoreのRuntime統合 - 毎日06:00評価、途中Save、24時間exact replay - Raid Wave、明示参加者と画面外戦力、扉・設備・目的物のラウンド更新 - 防衛Score、疲労・奇襲・複数入口、Active Skill、撤退方針、複数Wave - Round再送、操作種別付き解決ID、外部効果/RNG rollback、厳密な時刻契約 - Cancel終了の原子反映、Wave別侵入口、防具軽減、途中Save、JSON輸送、破損Snapshot拒否 - Defense全10 Command、専用RNG、Skill費用、Staff/Facility損害、Raid排他LockのRuntime統合 - 終了Raidの履歴化と後続治療/修理、scheduled Command時刻、Runtime v1からDefense付きv2への決定的移行 ### S6: 保存・運用の基礎 - 正式Saveを維持する3世代Autosave - Checksum付きRecovery候補と明示的Recovery Load - N→N+1の連続Migration RegistryとMigration前backup - Migration/Autosave回転中断の自己修復とRecovery候補 - 保存root・親directory・非package・package内symlink越境を全Load入口で拒否するパス安全性 - 通常Saveのrename中断マーカーと自己復旧、Autosave世代縮小時の検証済み候補だけを安全に整理 - 安定Save ID、完全Manifest既定値、Thumbnail生成と上書き時のidentity保持 - 実行画面だけが有効化する本番Autosave policyと、Test/独立Runtimeの保存先分離 - 毎日06:00の固定境界Checkpoint、3世代回転、手動保存Queue、復旧候補の検査・明示Load - Load直後の時刻保持と、壊れたTask/終了Event Lockだけを対象とする原子的なRecovery限定修復 - 正式、backup、移行前、Autosaveの各候補をRuntime全Domainへ隔離復元し、ゲームとして成立する最初の候補だけを採用する復旧fallback - Saveより厳しいContent FilterをLoadで弱めない安全な統合と、不明enumの厳密拒否 - Simulation、Path、Save、Load、stallの実測付き性能予算Collector - PERF-MVP-001の正確なFixtureと24時間Harness。完全条件を3回連続24/24合格(x4 P95 8.14~8.45ms、最大停止予算も合格)。これは独立Service合成の論理負荷であり、Runtime全Domainや実描画Frameの計測とは区別する ### 14日運営Coordinator基盤 - 暦日は00:00に更新し、06:00に前営業日の日次締めと朝運用境界を固定順で一度だけ実行 - 需要の60分更新と30分ごとの来客計画、fixed-point carry、収容・来客上限 - DaySummary、前日差、7日移動平均、施設別損益、未払解消と3回連続破綻 - 外部Domainのcapture/validate/apply/rollback境界、14日間の省略なしexact replay、Snapshot v3と旧版移行 ### MVP人物・進行データ境界 - 客8クラスと種族4種を別軸にした32通りの成人確認済みGuestDefinition生成 - 自由雇用候補20人の固定ID、成人確認、役割、契約費、日給、4技能、許可業務 - ヒロイン`heroine_anri`とライバル`rival_rai`の相互参照、固有効果、通常売却禁止タグ - 不明field/tag、重複ID、成人未確認、18歳未満、孤児参照、型の暗黙変換を全体fail-closedで拒否 - Rank 1~7の逐次条件、累計Faith/客、地上・地下稼働条件、派生MapBounds、冪等昇格Request - World拡張用capture/apply/rollback境界、rollback失敗時の隔離、厳密Snapshot往復 - 32 Guest定義のRuntime登録、候補雇用時の契約費・日給・Shift・Pathの一括確定、重複雇用防止 - 累計Faith/累計客の実取引連動、Rank昇格とWorld/Path/GameStateの原子的確定、旧Runtime Rank 1保存の安全な移行 ### 操作画面 - V3モックを基準にした暖色の木・革・羊皮紙UI。上部の常設HUD、左の管理カテゴリ、中央の生きたMap、右の施設Inspector、下部の建築パレットへ領域を分離 - 表層の世界樹宿と地下根域の製品向け背景アセットを導入。背景Texture、UI Palette、重ね描画Opacityを`VisualThemeProfile`へ分離し、Main SceneのTheme指定だけで一括交換可能。Theme欠落時は手続き描画へ安全にFallbackする - 施設16種、管理カテゴリ6種、資源4種、表裏層・掘削・回転・保存などの操作アイコンを、実透明の4×4 Atlas Assetとして導入。UIは安定IDから`VisualThemeProfile`の割り当てを取得し、画像名やAtlas座標を直接参照しないため、後からTheme単位または個別割り当てで交換可能 - 施設Iconを中央Mapの完成施設・建設中施設・配置Previewへも接続。占有CellとHit Testは従来どおりWorldServiceを正とし、Iconは占有範囲中央へ視覚的に重ねるだけなのでSimulationとSave互換性を維持する。選択中の施設/工事は右Inspectorにも同じTheme Iconを表示 - 客8クラスと従業員8役割群の成人キャラクターMarkerを実透明4×4 Atlasとして導入。客種別/従業員役割の安定IDからTheme割り当てを解決し、派生客種別はクラス接頭辞へ、未知IDは既定MarkerへFallbackする - 外枠・木・革・羊皮紙Panel、Button 4状態、選択/警告枠、待機Badge、工事中、客/従業員経路、FRONT/BACK境界装飾を4×4 UI Skin Atlasとして導入。主要Panel、全Button、Map経路、工事中Cell、待機Badgeを意味ID経由で接続し、Theme欠落時は従来のStyleBoxFlat/手続き描画へFallbackする - 外部の画像生成AIで正式素材を再制作するための`ART_ASSET_PRODUCTION_SPECIFICATION.md`を追加。現在接続済みの全画像について推奨解像度、Alpha、Atlas順序、生成指示、差し替え手順、納品判定を固定した - 1440×810を基準解像度として、`canvas_items`/`expand`/fractional stretchとHiDPIを有効化。背景、施設、共通操作、人物AtlasにはMipmapを生成し、720p・1080p・1440p・4Kで同一UI構造を維持する - 上部HUDへ営業日、時刻、時間帯、来客、宿泊予定、所持金、Mana、資材、Faith、Heat、一時停止、x1/x2/x4を常設 - 実World Cell、占有、工事、施設、Guest、StaffのFRONT/BACK別描画 - PathServiceの実密度/容量から緑・黄・赤の混雑経路を描画し、FacilityServiceの実待機列をMap上の数字Badgeとして表示 - 施設選択と状態、reason、待機列、Service、配置人員の表示 - 仕様表のMVP施設16種を選べる画面下部の横スクロール建設パレット - 回転、配置Preview、重なり等の失敗理由、建設Command - 掘削モード、正式な費用・入口接続・支保Preview、Rank/運営gate、進捗表示、FRONT/BACK同時解放Command - 時間、一時停止、x1/x2/x4、Event、Heat、手動Save/Load - 本番運営の明示起動、個人AP、未払給与、前日損益、要確認/破綻状態、失敗境界の再試行表示 - 検証済み雇用候補20人の一覧。氏名、役割、勤務帯、契約金、日給、4技能を表示し、原子的な雇用Command、未払/破綻gate、二重クリック防止、即時/予約実行結果、Save済みCommand履歴からの再試行連番復元へ追従する - foreground Eventの日本語Choiceボタン、安定した選択Command、解決後の停止解除と選択欄消去 - 1280×720、1440×810、1920×1080、2560×1440、3840×2160で、左Navigation/中央Map/右Inspector/下部Paletteの位置関係を含むLayout自動検証 ## 統合済みの運営縦断 - 14日運営CoordinatorをEconomy/Guest/Staff/Facility/Authority/Eventへ接続し、06:00の営業日締め・朝処理、給与、未払、3回連続支払不能による破綻までRuntimeから実行する - 人物カタログを使った自動来客・雇用時の日給と、累計客/Faith/稼働施設によるRank条件を日次運営へ接続する - 実Simulation Tickによる24時間連続運転、選択待ち停止再開、Save復元、部分給与、破綻後no-opを受入試験で確認する - 14日20,160分については運営境界を加速した連続/Day 7復元の一致を確認する。全Actor AIを含む20,160回の実Tick受入とは区別する - 掘削と客用通路/業務用通路/従業員ドアをRuntime v6へ統合し、完成失敗時のConstruction・World・Path・通知を一括で戻す ## MVP垂直スライスとして残る範囲 現在は、安全に保存・再生できる「操作可能なSystem縦断」であり、14日MVPの内容完成ではない。次の範囲は引き続き必要となる。 - 全Actor AI、全Event、監査、経路移動を含む20,160分の実TickによるS14-CORE受入 - ユニーク2人の配置・接触判定と、そこから生成する14日Event列 - 通常隣接Edgeを安全に抑制する垂直Topologyと、客用/業務用昇降機 - 配置と同一Shiftから関係Event候補を生成する接触判定と事前リスクPreview - 夕方混雑、FRONT/BACK比較、健全/地下収支を直接比較するScenario Test - 100客・30従業員の実描画Frame試験 - 製品用アート、音響、物語本文、完全なチュートリアル、バランス調整 ## 実行方法 make test make check make run 試遊の手順は `PLAYTEST_GUIDE.md`、仕様とTestの対応は `TEST_MATRIX.md` を参照する。各Systemのテストは画面Nodeに依存せずheadlessで実行でき、新しいSystemを追加する際はSnapshot、Atomic Restore、決定性Testを同じ変更に含める。 14日受入の共通Fixtureと数値境界は `MVP_ACCEPTANCE_SCENARIOS.md` に固定する。