# P07 天候の接続調査 原本 `baseline-fetched-2026-09-29.txt` 74–75行: 雨で客足減/滞在延長、嵐で新規客0、マナの霧で魔法効率/興奮度UP、数日ごとの流行ニュース。214行は上部HUDに天候表示。計画上の要件はP07/P04/P15/P23/P24へ連携する。 現制作コピーのscriptsにweather/environmentサービスはなく、Runtime/GameState/mainにも天候状態・接続がない。したがって未実装を既存PASSと混同しない。 次の縦断変更は、天候種別・発効時刻・決定的な予約遷移を専用モデルに置き、保存/移行→時刻境界更新→入館判定→HUDへ接続する。嵐の新規入館0は原文明示なので係数の承認待ちは不要。既存客を消去しない。入館境界は `SimulationRuntime._operations_arrival_boundary` の捕捉上限と連携し、同じ時刻の天候反映を入館抽選より先に確定する。失敗時の再送で乱数や天候を二重更新しないことを検証する。 雨/霧の倍率・天候遷移確率/期間・流行対象と倍率は原本に数値なし。これらを無言で原本の既定値にしない。旧保存の天候は履歴を捏造せず、移行時の初期状態と発効時刻を記録する。マナ数値回答待ちであることは、嵐の入館抑止や保存契約の作業を止める理由にはしない。 現在は調査のみ。コード、天候の実際の出現、画面・受入は未実装。 ## 天候モデルの実装 `weather_timeline.gd` を追加。呼出側が初期天候と開始分を明示し、晴れ/雨/嵐/マナ霧の発効予定を登録する。未来の時刻に限定し、同一時刻の同じ予約は再送、異なる予約は拒否する。時刻を進めると該当する遷移を時刻順に一度だけ返す。嵐の期間だけ新規入館不可を返す。倍率・発生確率・期間の既定値は導入していない。 保存版1に現在時刻・天候・開始時刻・未発効予定を保持。未知版/未知天候/欠損/非整数/過去の予定/順序逆転を拒否し、不正読込で既存状態を変えない。外部に返す予定は複製する。部品試験30項目PASS。初回の試験はJSON数値が浮動小数になるため失敗し、実セーブが使うVariantバイナリ方式へ試験を修正。初回ログを残した。実ファイル保存とRuntime接続は別途必要。 証拠 `artifacts/weather-2026-09-29/timeline-validation.json`。まだ本番Runtime・HUDから呼ばれておらず、通常営業で嵐が出現するわけではない。次はRuntime保存への組込みと旧版移行、入館より前の発効、UI表示、実営業受入を接続する。P07全体は未完了。 ## Runtime・HUD接続(保存形式11) ローカル制作コピーに接続。天候をTIME_BOUNDARIESの`simulation_runtime.0_weather`で決算/入館より先に確定し、嵐の入館捕捉上限を0にする。天候自体は同分の再送で変化を重複発行しない。供給・入館の既存トランザクション失敗時の受入は別途追加する。 Runtime保存を11に更新しweatherを必須にした。維持費が導入された版10の判定は独立定数に固定し、版10保存の維持費履歴を旧形式扱いで失わない。版1〜10の天候は保存時刻から晴天で初期化し、過去の天候履歴を推測しない。版11で天候が欠ける/時計が一致しない保存は拒否。旧形式試験は新しい天候データを除去し、移行での天候開始時刻を期待値に明示した。 Runtime試験16項目PASS: 390分の嵐で同分の入館0、420分の晴天で枠回復、途中保存からの完全再現、v10移行と不正保存拒否。HUDに晴れ/雨/嵐/マナ霧を表示し、実描画ダッシュボード135項目PASS、storm-hud.pngを確認した。 初回パースで初期化ハンドラの挿入位置・インデントを修正。旧物流移行試験は晴天開始時刻を移行時刻へ直す期待値修正後PASS。いずれも初回ログを残している。保存形式に影響する既存10本の回帰を実行中。セッション8854、詳細`weather-validation-progress.json`。回帰完了までは全体PASSとしない。 天候を自然に生成する確率/期間はまだ導入していない。予約は試験から投入しており、通常プレイが自然に雨/嵐へ変わる完成状態ではない。雨/霧の効果、流行、環境効果も残る。 ## 切替時の障害復旧・実ファイル保存 `test_weather_recovery.gd` 14項目PASS。390分の嵐切替と入館処理失敗を重ね、天候は390分の嵐、営業は再試行待ちで保存。実SaveServiceパッケージへ書込/読込し、嵐と420分の晴天予定を保持。同分の再試行で入館0かつ天候スナップショット不変、完全Runtime復元も一致。予定された晴天へ一度だけ復帰し、隔離状態を残さない。試験用保存は専用パスで削除。初回の試験コードはdelete_saveのbool戻り値を辞書扱いしたためパース失敗し、修正後に実行PASS。証拠 `artifacts/weather-2026-09-29/recovery-validation.json`。 自然な天候生成について、6時間ごとに晴れ60%/雨25%/嵐5%/マナ霧10%で抽選する初期試験案をユーザーへ確認した。未回答であり本番に適用していない。雨・霧の効果倍率はこの案に含めない。 関連回帰10本が終了し、9本は初回PASS。対象243ファイルのSHAは実行中不変。インフラ試験の旧定数10を11へ更新した再試験は162項目PASS。同じ定数を持つ営業受入試験も更新して実行中(セッション48857、その後make check)。初回失敗ログは保持し、再試験はrechecks.jsonへ別記録する。 ## 関連回帰の終了 営業受入の短縮時間試験が天候時計を進めずに保存していたため、初回は破産保存/14日再現など4項目が失敗。試験用境界処理へ本番と同順の天候更新を加え、再試験46項目PASS。保存検証の厳密さは緩めていない。関連11本は修正再試験を含めPASS、実描画135/天候障害復旧14もPASS、make check終了コード0。初回失敗・修正後を別ログに保持。証拠 `integration-regression/final-gate.json`。これは天候接続の限定ゲートであり、自然生成やP07全体の完成ではない。