# ランタイム検証ステータス > このページは OmsiLaunch 0.1.0-beta3 の[英語版の原文ページ](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/docs/status/runtime-validation-status.md)の翻訳です。規範となるのは英語版です。内容が異なる場合は、英語版のページとコードが優先されます。 このページは、OmsiLaunch 0.1.0-beta3 の唯一のエビデンス表です。各行はケイパビリティまたは機能と、そのエビデンスの状態を示します。`RUNTIME_VALIDATED` の根拠として引用できるのは、`research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md`(マトリクス ID RV-nnn、ブロッカー BI-nnn、および 2026-09-20 の実行表に記載されたセッション ID)、または Fable 後の Round A レポート `research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md`(RA-nnn)です。それ以外はすべてコードとオフラインテストスイートから導かれたものです。2026-09-21 の堅牢化ラウンド(`research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md`、指摘事項 S-01 〜 S-34)では、復元、リカバリ、コントロールプレーン、境界の動作が変更されましたが、これらの変更にはオフラインのエビデンスしかありませんでした。2026-09-23 の最終ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`、`F01`、`S05`、`T01` などのシナリオ ID、候補 2 および 3)では、承認済みのインストール環境上の実セッションでこれらを実行しました。このラウンドで昇格した行には、そのシナリオ ID とセッション ID を記載しています。したがって、`RUNTIME_VALIDATED` はこのレポートを引用することもできます。 エビデンスの状態: | 状態 | 意味 | | --- | --- | | RUNTIME_VALIDATED | マトリクスに記録された正規のセッションで観測済みです(ID とセッションを記載)。 | | STATICALLY_VALIDATED | 実装済みでオフラインテスト(`tools/OmsiLaunch.TestHost`、`tests/*`)でカバーされていますが、最後の変更以降、ライブセッションでは観測されていません。 | | PARTIAL | 実装済みですが、エビデンスが不完全であるか、矛盾しているか、動作が限定的であることが判明しています。 | | RUNTIME_VALIDATION_REQUIRED | 動作が変更されたか、一度も観測されていません。昇格させる前に実セッションで検証する必要があります。 | | UNAVAILABLE | 未実装、または意図的に拒否されています。 | ## セッションのライフサイクルとトランザクション | 機能 | 状態 | エビデンス | | --- | --- | --- | | NEW_MAP のヘッドレス開始(`world.new-map`、`world.presented-entrypoint`、`boot.headless-start`) | RUNTIME_VALIDATED | マトリクスの「Existing Runtime Evidence」、セッション `e5454061`、`1e8e0548`、`5f641c8d`、`50a1f1ec`(Grundorf) | | SAVED_SITUATION の開始(`world.saved-situation`) | RUNTIME_VALIDATED | `GetCapabilitiesAsync` の注記とマトリクス(Berlin-Spandau、Start フォームと `Button1Click`) | | `session.stop` による強制終了と正確な復元 | RUNTIME_VALIDATED | セッション `50a1f1ec`: 通常の停止後、OMSI プロセスもジャーナルも残りませんでした | | 起動時の冪等性(`PluginStart` の繰り返し) | RUNTIME_VALIDATED | セッション `50a1f1ec` | | `options.cfg` のセマンティックオーバーレイとバイト単位で正確な復元(RV-005) | RUNTIME_VALIDATED | セッション `1e8e0548`: `AIMaxCountRandom` 150/200 と保持された末尾部分、復元後のハッシュ `A12982C3...` | | 管理対象スプラッシュとオーバーレイのトランザクション(RV-006) | RUNTIME_VALIDATED | マトリクス RV-006 PASS(プレゼンテーションバッチ: 管理対象の既定、管理対象のカスタム、`Unset`)、Release Presentation 001 のセッション `388cf5d2-7310-4301-9313-e62c4c08a346`、`794cae34-a2ac-4fcf-8981-f142ac14c308`、`12a74b24-6c78-4863-8ffe-947651212eeb` | | 早期終了からのリカバリ(RV-008、OMSI の強制終了) | RUNTIME_VALIDATED | Fable 後の Round A セッション `9e7cad79-9c35-4f93-bfc8-71f455513f82`(ゲームプレイ後)と `dcac497e-ff35-4c97-b5e4-98b660f88032`(`world.starting` の後、ゲームプレイ前): オーナーは完了し、ジャーナル/リースは解除され、`options.cfg` と元々存在しなかったスプラッシュの状態はスナップショットと一致しました。ネイティブの起動失敗と、復元失敗の注入は別扱いのままです。 | | 起動失敗と意図的な復元失敗の境界(RV-008 の残り) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): 起動タイムアウト `SF01` セッション `0b21c664-b0b2-46b2-9b6b-def536765fff` と、プラグインが報告したワールド失敗 `SF02` セッション `53358c75-469b-41d5-9ddb-cdb1d1ff828d` は、型付きコードと正確な復元を伴って `Failed` で終了しました。復元失敗 `F01` セッション `d4194a69-d858-42fe-97c7-ce93ccbdc3f6`(停止中にテスト専用プロセスがセッション所有のファイルをロック)では `OL_E_RESTORE_FAILED` が返され、ジャーナルとバックアップが保持され、`/recover` によってセッション前の状態が正確に復元されました。失敗を発生させる仕組みはテストインフラ専用です。 | | `.itx` ターゲットと `Texture\standard.ipr` のセッション成果物の復元(S-01) | RUNTIME_VALIDATED | Round A では、`47efd323-4ce1-400a-ac83-74893cf82f26` で既存のパスを復元しました。`8d9bdedf-d7de-4c64-a8b1-627ae4deff7b` では、登録済みで元々存在しなかったターゲットを作成し、通常の停止時に削除しました。さらに `aa9a45d4-302e-4cf5-8490-f5a1c9e44b79` では、オーナーの中断と `/recover` を経て同じクリーンアップを繰り返しました。 | | セッションの削除と失効マーカーの除去としての `closecheck`(S-13) | RUNTIME_VALIDATED | `47efd323-4ce1-400a-ac83-74893cf82f26` を含む Round A セッションで、`closecheck.stale-removed` に続いて `restore.session-artifact-removed` が記録され、ジャーナルは残りませんでした。 | | オーバーレイ構築前の早期リカバリ、フィンガープリント前の遅延リカバリ(S-05) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`S05`: セッション `f755ed51-b85c-4df2-b062-5bf65c768b32` のオーナーを保留中のジャーナルがある状態(`maxFPS=77` が有効)で強制終了しました。次の開始であるセッション `291ea22b-f9b3-42a4-be07-7f0c055c7113` は `TRANSACTION_STARTED` の前に `PENDING_JOURNAL_RECOVERED` を記録し、独自のオーバーレイ(`88`)で実行され、最初のセッション前の状態とバイト単位で同一の状態で終了しました。フィンガープリント前の遅延分岐はオフラインのままです(`transaction.legacy-journal-ownership-migration`)。 | | メタデータの復元(タイムスタンプ、属性、読み取り専用)、ライトスルーのフラッシュ、バックアップのクリーンアップ(S-12) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): `S12a` セッション `40de172b-e144-4f0a-9207-09c80b5d7df7`(既知の `options.cfg` のタイムスタンプ)と `S12b` セッション `d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7`(タイムスタンプと ReadOnly): セッション中はオーバーレイが有効で(OMSI のために ReadOnly を解除)、バイト内容、最終書き込み日時、作成日時、属性が正確に復元されました。バックアップディレクトリは残りませんでした。 | | インストールリース下での `/recover`、PID 取得前の期間における拒否(S-04) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): `S04` セッション `1fb2aad5-2985-4fa4-9c5a-6186f51d37b8`: オーナーが稼働中の状態では `/recovery-status` と `/recover` が `OL_E_INSTALLATION_BUSY` を返し、2 回目の開始は拒否されました。オーナーを強制終了して OMSI を実行したままにすると、OMSI が終了するまで `/recover` と新しい開始は拒否され、その後 `/recover` が正確に復元しました。`S04b` セッション `5e57ca51-ab5e-4e94-a0d0-531735ee4057`: PID 取得前のジャーナル(ハーネスによる障害注入)は、ルートから `Omsi.exe` が実行されている間は拒否され、終了後にリカバリされました。その OMSI が書き込んだ `closecheck` は `OL_W_RESTORE_FOREIGN_FILE_RETAINED` とともに保持されます(文書化済み、保守的な動作)。 | | `StartSessionAsync` での再プランニング、失効したプランに対する `OL_E_PLAN_NOT_RUNNABLE`(S-15) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`R02`: プランニング後にマニフェスト記載のプラグインを退避させた状態で、`StartSessionAsync` はセッションが存在する前に `OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING` をスローしました(プラン `4797c9ce-6eb3-47b1-b09d-03562dd3bd44`、候補 2、BUG-01 の修正後) | | オーナーのライフサイクル: パイプによる停止、Ctrl+C、トレイからの停止、OMSI の終了、オーナーの強制終了、`/observe-seconds` | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): `/observe-seconds` 中のパイプによる停止 `L06` セッション `300a563e-7b0e-4f01-afbd-9e15df32c7e6`、Ctrl+C `L03` セッション `5e2aca54-bae2-4fc6-a106-93699e755bfc`(シグナルから 577 ms 後にオーナーが終了)、OMSI の強制終了 `L05a` セッション `d69658f9-16f6-43e9-8e36-682114b97e14`、OMSI メインウィンドウのクローズ `L05b` セッション `76b11ba4-8ddb-4611-9a1c-8be317cd0337`(OMSI は `WM_CLOSE` を無視するため、強制終了で終了)、トレイからの停止 `T01`/`T03` セッション `6d827c13-caf8-4221-832a-c91d26f130e0`、`7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8`、オーナーの強制終了 `S05`。すべての経路が正確な復元で終了しました。オーナーを直接強制終了した場合、`Omsi.exe` は実行を続けます(設計どおり)。リカバリは OMSI が終了するまで拒否されます(`S04`)。 | | コンソールのクローズまたはログオフ時の ProcessExit 4 s の猶予 | RUNTIME_VALIDATED(コンソールのクローズ) | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`L04` セッション `559d0f1d-7d5b-4b6b-b70c-0acb272d53db`: コンソールウィンドウを閉じました。復元は猶予時間内に完了し、セッションはジャーナルなしで `Completed` に到達しました。Windows はクローズの約 5 s 後にオーナーを終了させました(終了コード `0xC000013A`)。ログオフは検証していません。 | | 協調的な WM_CLOSE によるシャットダウン | UNAVAILABLE | 未実装(製品上の判断、S-11)。ランタイムクロージャー `L05b`: メインウィンドウへの `WM_CLOSE` から 30 s 以内に OMSI は閉じませんでした。`ShutdownTimeoutSeconds` は使用されません。 | | インストールリースのセマンティクス(`Local\` セマフォ) | STATICALLY_VALIDATED | `lease.cross-thread-release`。制限は受容済みリスクとして文書化されています(S-18) | | OMSI ファイルへのパッチ適用時の CP1252 の保持(S-07) | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`C01` セッション `84a71235-d618-4917-9af4-c2a6025742f4`: アクセント付きの CP1252 の値(0x80 と 0x96 を含む)を持つ `options.cfg` に `/set` でパッチを適用しました。ライブのファイルは CP1252 のバイトを保持して `EF BF BD` を含まず、セッション後のファイルはバイト単位で同一でした | | リパースポイントをスキップするコンテンツ検出(S-23) | STATICALLY_VALIDATED | `discovery.*` テスト | | 診断情報の保持(新しい順に 50 セッション)(S-26) | STATICALLY_VALIDATED | `HostTrace.Prune` | | トランザクションの書き込みと削除で発生する一時的なファイルロック(ウイルス対策ソフト、インデクサー)は約 1.5 s の間リトライされます。永続的なロックは引き続き失敗します(修正パス CP-10) | STATICALLY_VALIDATED | `transaction.transient-lock-retried`、`transaction.restore-failure-recovery`(永続的なロックは引き続き失敗)。修正前には断続的なオフライン失敗が 2 回観測されましたが、修正後は 16 回の実行で 1 回も発生していません | ## 常駐プラグインとプラットフォーム | 機能 | 状態 | エビデンス | | --- | --- | --- | | プロファイル `Omsi23004_692EBFBF`(`692EBFBF...6243`、8,503,440 バイト) | RUNTIME_VALIDATED | マトリクスのすべてのセッション | | Steam LAA 実行ファイル(`7DAB063D...D759`) | PARTIAL | ランタイムクロージャー `LAA01` セッション `9ec975ca-7820-47be-b806-5f5a94aad4ab`: 管理下のコピー(インストール環境にあるパッチ未適用のオリジナルから `IMAGE_FILE_LARGE_ADDRESS_AWARE` を付与し、PE チェックサムを再計算して派生させたもの。8,503,440 バイト、characteristics `0x81AE`)はハッシュと一致し、フィンガープリントは受け入れられ、プランは実行可能でした。このイメージは DRM で保護されたオリジナルの Steam 実行ファイルであり、正規の Steam インストール環境の外では Steam クライアントにハンドオフして終了するため、セッションは `OL_E_PROCESS_EXITED_EARLY` で失敗し、正確に復元されました。ゲームプレイ、読み取り、コマンド、停止には正規の Steam インストール環境が必要です(ENVIRONMENT)。 | | インストール環境の識別: リースとコントロールパイプ名は 1 つの定義 `InstallationPaths.IdentityKey` から導出されます(`C:\OMSI` = `C:\OMSI\` = `C:\OMSI\.` = `C:\foo\..\OMSI` = 大文字小文字の違い。`C:\OMSI-A` と `C:\OMSI-B` は異なる)(修正パス CP-02、補遺 A/B) | STATICALLY_VALIDATED、ランタイムで観測済み | `lease.root-normalization`、`paths.installation-identity-and-containment`。ランタイムクロージャー `ID01`: セッション `01bfc780-10ef-4390-b700-c08bf809a42f` の実行中に、ルートを `\.` 付き、`..` セグメント付き、小文字、大文字で表記した 2 回目の開始と `/recovery-status` は拒否されました(`OL_E_SESSION_ALREADY_ACTIVE`、`OL_E_INSTALLATION_BUSY`)。末尾に区切り文字を付けた表記も同様です(`ID01b`、セッション `ba3ea7c9-9826-453d-b447-81c48763e18f`)。 | | リリースパッケージの整合性: クリーンなステージング、`Native.x86` のビルドレシート(タイムスタンプではなく内容)、BOM なしのマニフェスト、ステージングしたクロージャーと再展開したアーカイブの完全性、インストーラーによるマニフェストのコピー(修正パス CP-01、Round A RA-007、補遺 F/G/H) | STATICALLY_VALIDATED、インストール環境で観測済み | `Test-PackagingPipeline.ps1`(整合した候補と 16 件のネガティブケース)、`runtime.release-manifest-bom`、`runtime.release-manifest-strict-parser`。ランタイムクロージャー: 承認済みのインストール環境にインストールされたパッケージはマニフェストと整合しており、すべてのセッションが `plugin.integrity.reference = manifest` でプランニングされました(候補台帳 `research/reports/runtime-closure/CANDIDATES.md`)。 | | `release-manifest.json` に対するプラグインクロージャーの完全性(S-09) | RUNTIME_VALIDATED | Round A セッション `47efd323-4ce1-400a-ac83-74893cf82f26`。インストール済みのリリースパッケージ上のランタイムクロージャーのセッション(例: `R01` セッション `878b5e3c-2f9d-46bf-a918-11bb2e227e55`、候補 3)は `plugin.integrity.reference = manifest` でプランニングされました。`R02` では、記載されたプラグインが欠落していると開始がブロックされることが示されました。 | | プロセス内のビルド検証(`plugin.build.invalid` -> `OL_E_BUILD_VALIDATION_FAILED`) | RUNTIME_VALIDATED | マトリクスのセッション。古いプラグインでの以前の `plugin.build.invalid` セッション 2 件 | | SHA-256 付きの Handoff v4 | RUNTIME_VALIDATED | 統合テスト `handoff.*`、すべてのセッション | | OmsiLaunch なし(ハンドオフなし)ではプラグインが何もしないこと | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`P01`(通常の OMSI 起動、OmsiLaunch セッションなし、OMSI pid 35564): プラグインクロージャーと .NET ホストは読み込まれましたが、`OmsiLaunch.Native.x86.dll` は読み込まれず、3 か所のネイティブパッチ箇所はパッチ未適用の `Omsi.exe` のバイトのままで、コントロールパイプ、ジャーナル、診断情報はいずれも現れませんでした | | DLL 検索ポリシー(`AssemblyDirectory | System32`)(S-24) | STATICALLY_VALIDATED | アセンブリ属性 | | Windows 10 以降の x64 の検出とその他のプラットフォームの拒否 | STATICALLY_VALIDATED | `CurrentWindowsX64Platform.Detect` | ## ランタイム制御チャネルとコントロールプレーン | 機能 | 状態 | エビデンス | | --- | --- | --- | | メールボックスのワイヤー完全性、セッションバインディング | RUNTIME_VALIDATED | すべてのランタイムセッション。`runtime-command.wire-guard`、`runtime-command.session-binding` | | 遅延応答の破棄とタイムアウト後のチャネル停滞の防止(S-08) | RUNTIME_VALIDATED | Round A セッション `173414a5-ee53-4b10-aeb7-046f40b851e9`: 外部クライアントが 250 ms 後に `road-vehicles.spawn` を放棄しました。その後の `map.read` は成功し、正規の停止によってセッションはクリーンアップされました。サイズ超過の応答の拒否はオフラインのみのままです。 | | ローカルコントロールプレーン: インストール環境ごとのパイプ名、`session_id` のバインディング、型付きハンドラーエラー、64 KiB の上限(S-06) | RUNTIME_VALIDATED | Round A セッション `a00c6ff8-9cc9-4bce-ae44-c4314daad7bf`: 無効なプロトコル、バインドされていない停止、誤ったセッションへのランタイム要求、サイズ超過のフレームはいずれも拒否されました。その後の有効なステータス要求とバインドされた停止は成功しました。サイズ超過の応答の拒否はオフラインのみのままです。 | | テレメトリのシーケンススロット、不完全なサンプルのスキップ、同一の連続イベント(S-25) | STATICALLY_VALIDATED | `telemetry.sequence-samples` | | API 境界による `internal.*` の拒否と内部の結果キーの除去(S-02) | STATICALLY_VALIDATED | `OmsiLaunchService.ExecuteRuntimeAsync`、レジストリの検証 | | 無効またはサイズ超過のメールボックス応答がスロットを解放し、次の要求が成功すること(修正パス CP-03) | STATICALLY_VALIDATED | `runtime-command.oversized-response-rejected`、プラグイン側は `plugin-runtime.oversized-and-abandoned-responses`。ランタイムでは発生させられません。1 スロットを超える結果を返す公開操作はありません(最大は約 37.8 KB、ランタイムクロージャー `R03`)。 | | ランタイム要求のすべての終端経路でメールボックスが再利用可能なまま残ること: 型付きの拒否、タイムアウト、呼び出し元によるキャンセル、再利用された要求 ID、内部操作、誤ったセッション、引数の欠落(ランタイム)。不正な形式、サイズ超過、破損、失効、孤立した応答(オフライン) | RUNTIME_VALIDATED(到達可能な経路) | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`R03` セッション `1134fdc3-a469-4ff5-a511-9964ed65e7cd`: 各失敗は型付きで返され、次の有効な要求は成功しました。応答破損の経路は外部から発生させることができないため、オフラインのままです(`runtime-command.terminal-paths-leave-channel-usable`)。 | | サイズ超過のコントロールプレーン応答を `OL_E_CONTROL_RESPONSE_TOO_LARGE` として返し、status/events を古い順に 1 フレームに収まるまで切り詰めること(修正パス CP-04) | STATICALLY_VALIDATED | `control-plane.binding-and-typed-errors`。ランタイムでは発生させられません。ランタイムクロージャーラウンドで観測された最大の公開応答は約 37.8 KB(`R03`)であり、セッションのイベント履歴は 1 フレームを大きく下回ります。 | | 接続後にコントロールプレーンが無応答にならないこと: 不正な形式、サイズ超過、負の長さ、空、JSON `null`、コマンド欠落、文字列でない引数、無効なプロトコル、不明なコマンド、未バインド、誤ったセッションの各フレーム。途中で切れたクライアントフレーム。停滞したクライアント。応答前に切断するクライアント | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`R04` セッション `faaaf8a8-126d-4a23-a8f3-381e47c58de6`(候補 2、BUG-02 の修正後): すべてのフレームが型付きエラーを受け取り、それぞれの後に `session.status` が成功しました。停滞したクライアントは他のクライアントをブロックしませんでした。実行中の `road-vehicles.spawn` と競合したバインド済みの停止はセッションを終了させ、spawn の呼び出し元はストリームの正常な終端を受け取りました。`OL_E_TIMEOUT` と切り詰めのメタデータはオフラインのままです(`control-plane.errors-never-silent`)。 | | ランタイムバッチハーネス(`/runtime-batch`、`/runtime-write-batch`、`/d3d-batch`) | INTERNAL(STATICALLY_VALIDATED) | 検証用ハーネスのみ(S-27) | ## ランタイム操作 | 操作 | 状態 | エビデンス | | --- | --- | --- | | `time.read`、`time.set` | RUNTIME_VALIDATED | セッション `e5454061`(書き込み、`SetTime`、読み戻し、復元) | | `weather.read`、`weather.actual.read` | RUNTIME_VALIDATED | セッション `e5454061` | | `weather.set` | UNAVAILABLE | `OL_E_RUNTIME_SETTING_NOT_PERSISTENT` で拒否されます。セッション `e5454061` と `5f641c8d` で永続性は FAIL、`50a1f1ec` で拒否は PASS | | `map.read` | RUNTIME_VALIDATED | Map のグローバルスロットの修正後、セッション `9dd62626-94c6-4cd7-bb6f-0288327696f4` で再検証しました: `loaded=true`、19 タイル、Grundorf の識別情報、ファイル名、説明、年の範囲が整合していました。 | | `camera.read`、`camera.set` | RUNTIME_VALIDATED | セッション `e5454061`(FOV の書き込み、読み戻し、復元) | | `camera.lock`、`camera.unlock` | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`CAM01` セッション `5dfd9b96-fa94-4060-85af-0c9d19823a73`: 保存済みシチュエーション `Linie 5` が PlayerVehicle(`rv-000001`)を提供しました。ファミリー 0、2、1 のロックはカメラの読み戻しで確認され、アンロックでポリシーが解除されました | | `road-vehicles.read`、`road-vehicles.list`、`road-vehicle.read` | RUNTIME_VALIDATED | セッション `e5454061`、`5f641c8d` | | RoadVehicle のハンドルの有効期間と失効の検出(RV-002) | PARTIAL | 安全な削除を発生させる手段がありません。ランタイムクロージャーの 3 つの観測期間(`H01`、`H01b`、`H01c`、最大 180 s、時刻ジャンプあり)で、Grundorf の RoadVehicle と Human の数は増加するだけでした。オブジェクトを削除する公開操作はありません。失効の検出はオフラインのままです(S-19)。世代/ABA ルールは D3D テクスチャについてランタイム検証済みです(`H02`)。 | | `road-vehicles.spawn`(RV-003) | RUNTIME_VALIDATED | セッション `5f641c8d`: `2 -> 3`、`rv-000003` が解決されました | | `road-vehicles.place-random` | RUNTIME_VALIDATED | マトリクス: コレクション `2 -> 4` | | `player-vehicle.read` | RUNTIME_VALIDATED | Round A RA-002 セッション `9dd62626-94c6-4cd7-bb6f-0288327696f4`(`present=false`)。ランタイムクロージャー `CAM01` セッション `5dfd9b96-fa94-4060-85af-0c9d19823a73` では、保存済みシチュエーションから存在する PlayerVehicle を読み取りました | | `humans.read`、`humans.list`、`human.read` | RUNTIME_VALIDATED | セッション `e5454061` | | `timetable.read`、`timetable.*.list`、`timetable.logs.read` | RUNTIME_VALIDATED | セッション `e5454061`。路線エントリ(track entry)91 レコード | | `OL_E_RUNTIME_RESPONSE_TOO_LARGE` の代わりに上限付きリストを切り詰めること(ドキュメント監査 BUG-05) | RUNTIME_VALIDATED | パッケージ `9F8CC87B...`、保存済みシチュエーション `situations\Linie 5.osn`(Berlin-Spandau)でのドキュメント監査の再テスト: `timetable.track-entries.list` は 825 件中 137 件、`timetable.tour-entries.list` は 4747 件中 224 件を `truncated=true` とともに返しました(セッション `08df97b8-06cc-4faa-be8b-f49ca1538dce` とドキュメントキャプチャの再テスト)。修正前は、どちらも `OL_E_RUNTIME_RESPONSE_TOO_LARGE` で失敗していました(セッション `f51dcb59-a723-4570-b6c5-b61e628a7993`)。エビデンス: `research/reports/documentation-audit/runtime/`。 | | `drivers.read`、`tickets.read` | RUNTIME_VALIDATED | セッション `e5454061` | | `vehicle.variables.list`、`vehicle.variable.get`、`vehicle.variable.set` | RUNTIME_VALIDATED | `research/reports/OmsiHook-Parity-Wave-A-Closure-001.md` に Runtime-Proven として記録されたランタイムセッションでの `Refresh_Strings` 0 -> 1 -> 0(`OMSILAUNCH-AUTONOMOUS-BUILD-001.md` によれば 1,025 個の名前を列挙)。レポートにはセッション ID が記録されていません | | `vehicle.string-variables.list`、`vehicle.string-variable.get` | RUNTIME_VALIDATED(読み取りのみ) | セッション `e5454061`。書き込みは BI-004 により UNAVAILABLE | | `vehicle.constants.list`、`vehicle.constant.get`、`vehicle.curves.list`、`vehicle.curve.evaluate`、`vehicle.hofs.read` | RUNTIME_VALIDATED | セッション `e5454061` | | `d3d.status`、`d3d.texture.create`、`d3d.texture.describe`、`d3d.texture.update`、`d3d.texture.release`、解放済みハンドルの拒否 | RUNTIME_VALIDATED | マトリクスの「basic D3D texture lifecycle」。`runtime.d3d.*` のケイパビリティ注記(デバイススロットについてはセッション `4378899d`) | | D3D デバイスの消失/リセット/復元イベント、世代の無効化(RV-007) | RUNTIME_VALIDATED(resetting/restored) | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`D01` セッション `fc07946e-58dd-4ddc-af7e-10c7e61a899a`: 一時的なディスプレイモードの変更(テスト用の発生手段であり、公開されることはなく、合成的なリセット呼び出しも行いません)により、OMSI はデバイスを 2 回リセットしました。`d3d.resetting`/`d3d.restored` が発行され、サイクルごとに世代が進み、リセット中の要求は `OL_E_D3D_RESET_IN_PROGRESS` を受け取り、消失前のテクスチャは `OL_E_D3D_STALE_RESOURCE_HANDLE` で拒否され、新しいテクスチャは機能しました。OMSI は直接 `DEVICENOTRESET` に移行したため、独立した `lost` 遷移は発生しませんでした。1 回の試行では OMSI が `DSound.dll` でクラッシュしました(ディスプレイオーディオのエンドポイント変更。オーナーは正確に復元しました)。 | | `events.read` / `events watch` | RUNTIME_VALIDATED | すべてのセッション(テレメトリ駆動のライフサイクル) | | `internal.road-vehicles.make-basic` | INTERNAL | 公開サーフェスからは到達できません | ## 起動機能 | 機能 | 状態 | エビデンス | | --- | --- | --- | | `/set` とプロファイルの `settings`(`configuration.options.semantic`) | RUNTIME_VALIDATED | RV-005 | | セッションプロファイル(厳格なコンパイラー、競合、リパースポイントを含むパスの閉じ込め S-17) | RUNTIME_VALIDATED(プロファイルによる開始の範囲) | Round A RA-009、`Test-Beta3SessionProfile.ps1`、2026-09-22: 管理対象スプラッシュ、無効化された Internet Textures、`graphics.maxFPS=30` プリセット。`options.cfg` は復元され、フィクスチャは無傷で、ジャーナル/リース/プロセスは残りませんでした。 | | `/spec` の読み込み(1 MiB の上限、不明なプロパティの拒否、タイムアウトの遵守)(S-20) | STATICALLY_VALIDATED | `cli.*` テスト | | 管理対象スプラッシュ `PTB`/`ENG`/`DEU`/`FRA` | RUNTIME_VALIDATED | RV-006 | | Internet Textures の `Disabled`(プロセス内ダウンローダーの抑止) | STATICALLY_VALIDATED | `internet-textures.suppressed` テレメトリ経路。マトリクスでは引用されていません | | Internet Textures の `.itx` ターゲットガード(Round A RA-011/RA-012、修正パス CP-05、補遺 E): 正規化されたルート、正規化されたターゲット、相対パス、セグメント規則。ルートより下にある `texture` という名前のディレクトリセグメントのみが対象となります(`mytexture`、`texture_backup`、`texture2`、および絶対ルート内の `texture` は対象外)。トラバーサル、絶対パス、ルート相対パス、ジャンクションのターゲットは拒否されます。表記の違いは 1 つの正規化されたトランザクションパスに集約されます | STATICALLY_VALIDATED | `presentation.itx-target-root-normalization`、`presentation.itx-target-guard-rejections` | | Internet Textures の `Override` | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): `I01` セッション `6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3`: OMSI のダウンローダーが既存のターゲットと元々存在しなかったターゲットについてループバックサーバーに `HEAD` と `GET` を送信し、両方を書き込みました。正規の停止後、存在しなかったターゲットは削除され、既存のターゲットはバイト単位で正確に復元されました。`I02` セッション `a8f2b720-e41a-4e34-86bf-125bf519a5bd`: オーナーと OMSI を強制終了した後、`/recover` によって同じ結果になりました。 | | `/date`、`/time`、`/year`、天候フラグ、プレイヤー車両フラグ(`STATICALLY_PARTIAL`) | UNAVAILABLE | プランナーはプランを実行不可としてマークします(`OL_E_CAPABILITY_UNAVAILABLE`)。プラグインは `Unset` 以外の日付/時刻モードを拒否します | | `/entrypoint:`(BI-001) | PARTIAL | プランは実行不可(`RUNTIME_PARTIAL`) | | `/last`(`LastMapState`、BI-006) | UNAVAILABLE | `UNSUPPORTED_FOR_CURRENT_PROFILE` | | `InputSpec` のキーボード/コントローラーのオーバーレイ(BI-005) | UNAVAILABLE | パーサーは存在しますが、適用されません | | ヘッドレスでの PlayerVehicle の割り当て(BI-007)、`SetActualDateTime`(BI-002)、ICAO 天候制御(BI-003)、文字列変数の書き込み(BI-004)、タイルをまたぐ再配置(BI-008) | UNAVAILABLE | 実装が完了するまでブロックされています | | `/list` による検出(`content.*`) | STATICALLY_VALIDATED、ランタイムで観測済み | `discovery.fixture`。ランタイムクロージャーでは、承認済みのインストール環境に対して `/list:situations` を使用しました(非 ASCII の `situations\Nur für Fortgeschrittene.osn` を含む識別子) | | `/quiet`、`/serve` | UNAVAILABLE | ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT | | 診断フラグ(`/log`、`/logall`、`/omsi-logall`、`/verbose`、`/trace*`) | PARTIAL | `DiagnosticsSpec` で伝達されます。効果はホストトレースに限られます | ## Windows ホストとトレイ | 機能 | 状態 | エビデンス | | --- | --- | --- | | トレイインジケーター(`OmsiLaunchW.exe`): 通知領域のアイコン、ステータス、確認とキャンセルを伴う「End session」(セッションを終了する項目)、エクスプローラーの再起動、停止が届いた時点で開いているダイアログ、`/observe-seconds` 中の停止、エラーダイアログ(S-16) | RUNTIME_VALIDATED | 候補 3(BUG-04 の修正後)でのランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`): `T01` セッション `6d827c13-caf8-4221-832a-c91d26f130e0`(`Shell_TrayWnd` でアイコンを確認、pt-BR のステータスウィンドウ、エクスプローラーの再起動でアイコンが再追加され、キャンセルではセッションが維持され、End session で 607 ms 後にセッションが終了してアイコンが削除されました)、`T02` セッション `0939a151-bf03-4ca9-8294-8b0088df7d30`(パイプによる停止中にステータスと確認ダイアログが開いた状態)、`T03` セッション `7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8`、`T04` セッション `8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a`(引数エラー、アクティブなセッションなし、セッション失敗の各ダイアログがコード付きで表示)。シムの終了コード 100-106 は発生しませんでした。 | | ホストが起動したときに 0 を返す `/silent` による再起動 | RUNTIME_VALIDATED | ランタイムクロージャーラウンド(`research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md`)`T04` セッション `8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a`(候補 3、BUG-03 の修正後): ランチャーは 0 を返し、その出力をキャプチャしていた呼び出し元は 0.4 s 後にストリームの終端を受け取りました。その間、OmsiLaunchW のセッションはコンソールウィンドウなしで実行されました。セッションは正確な復元とともに停止しました | | ブートストラッパーシムの終了コード 100-106、動的パスバッファー(S-21) | STATICALLY_VALIDATED | `Test-ReleaseIdentity.ps1` | ## ドキュメント監査の再テスト(0.1.0-beta3 ドキュメントクロージャー) 承認済みのインストール環境上のパッケージ `9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17` で実施し、BUG-05、BUG-06、BUG-07 とスモークテストは最終パッケージ `B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35` で繰り返しました(R01 セッション `56cdee4b-9160-49fc-b0fd-5134ff9fe2d0`、ドキュメントキャプチャセッション `40046805-5337-48fc-90dd-e7d3500ed3b4`)。エビデンスは `research/reports/documentation-audit/runtime/` と `research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md` にあります。 | 項目 | 状態 | エビデンス | | --- | --- | --- | | `OmsiLaunchW.exe` が実行不可の起動を報告すること(BUG-06) | RUNTIME_VALIDATED | `OmsiLaunchW.exe` での `/new ... /date:2026-09-20`: ダイアログに `Requested capability unavailable: world.explicit-date` / `Code: OL_E_CAPABILITY_UNAVAILABLE` が表示され、終了コード 1、OMSI プロセスなし(`doc-bug06-dialog.json`、インストール済みパッケージ `9f8cc87b...`、設計上セッションは作成されません) | | 公開されている CLI ルートが実際の構文であること(BUG-07) | RUNTIME_VALIDATED | インストール済みの `help --json` と `capabilities --json` が出力したクライアントルートのすべての代替形(32 個の記述子)が、インストール済みのパーサーに受け入れられ、使用方法を出力したものはありませんでした(`doc-bug07-routes.json`、インストール済みパッケージ `9f8cc87b...`) | | CLI の例ページのすべてのコマンドライン | RUNTIME_VALIDATED | オーナーセッション `08df97b8-06cc-4faa-be8b-f49ca1538dce`(保存済みシチュエーション。`events watch` は Ctrl+C まで実行し続けるためスキップ)に対して 43 行のクライアントコマンドを実行し、最後にページ自身の `session stop` で終了しました(オーナーの終了コード 0)。`name=max_speed` を指定した `vehicle.constant.get` を除き、すべてページの記載と一致しました。この定数はそのバスには存在しないため、ページでは現在 `antrieb_getr_version` を使用しています。`grundorf-quick` プロファイルの例はプランを作成できなかったため(プレーンな YAML スカラー内のバックスラッシュの二重化)、修正しました。セッションなしの行はすべてインストールルートから実行し、起動の行は `/plan` 付きで実行しました(`doc-client-examples.json`、`doc-examples-no-session.json`、`doc-profile-example.json`) | | 最終パッケージでの `/observe-seconds` 付き NEW_MAP のスモークテスト | RUNTIME_VALIDATED | `R01` セッション `08570134-cfd8-4726-a472-5f6dd2f04c8f`、クリーンな終了状態(`research/reports/runtime-closure/doc-R01-*`) | ## RUNTIME_VALIDATION_REQUIRED の統合リスト 2026-09-23 のランタイムクロージャーラウンドにより、以前のキューは完了しました。このインストール環境で安全に発生させることができない項目を除き、キューは空のままです。 1. Steam LAA のゲームプレイ、読み取り、コマンド、停止: 正規の Steam インストール環境が必要です(環境の問題。上の行は `PARTIAL`)。 2. RV-002 の RoadVehicle と Human の削除: 安全な削除を発生させる手段がありません(上の行は `PARTIAL`)。 製品の外部から発生させることができないためオフラインのままとなる項目は、それぞれの行に記載されており、キューには含まれません: メールボックス応答の破損、サイズ超過の応答、イベント履歴の切り詰め、D3D の `lost` 遷移、ログオフ、シムの終了コード 100-106、フィンガープリント前の遅延リカバリ分岐。 関連項目: [ケイパビリティ](https://omsilaunch.omsimods.com.br/ja/docs/reference/capabilities/index.md)、[既知の制限事項](https://omsilaunch.omsimods.com.br/ja/docs/reference/known-limitations/index.md)、[トランザクションとリカバリ](https://omsilaunch.omsimods.com.br/ja/docs/concepts/transactions-and-recovery/index.md)、[互換性](https://omsilaunch.omsimods.com.br/ja/docs/reference/compatibility/index.md)。