État de la validation à l'exécution

Documentation de la version v0.1.0-beta.3Voir la source sur GitHub

Traduction de la page originale en anglais d’OmsiLaunch 0.1.0-beta3. La page anglaise fait foi : en cas de divergence, la page anglaise et le code prévalent.

Cette page est l'unique tableau de preuves d'OmsiLaunch 0.1.0-beta3. Chaque ligne nomme une capacité ou une fonctionnalité et l'état de ses preuves. RUNTIME_VALIDATED peut citer soit research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (identifiants de matrice RV-nnn, blocages BI-nnn, identifiants de session issus de son tableau d'exécution du 2026-09-20), soit le rapport post-Fable Round A research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn) ; tout le reste est déduit du code et des suites de tests hors ligne. La campagne de durcissement du 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, constats S-01 à S-34) a modifié le comportement de la restauration, de la récupération, du plan de contrôle et des frontières ; ces modifications ne disposaient que de preuves hors ligne. La campagne finale de clôture runtime du 2026-09-23 (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md, identifiants de scénario tels que F01, S05, T01, candidats 2 et 3) les a exécutées dans des sessions réelles sur l'installation autorisée ; les lignes promues par cette campagne citent ses identifiants de scénario et de session. RUNTIME_VALIDATED peut donc également citer ce rapport.

États des preuves :

ÉtatSignification
RUNTIME_VALIDATEDObservé dans une session canonique enregistrée dans la matrice (identifiant et session cités).
STATICALLY_VALIDATEDImplémenté et couvert par des tests hors ligne (tools/OmsiLaunch.TestHost, tests/*), non observé dans une session réelle depuis la dernière modification.
PARTIALImplémenté, mais les preuves sont incomplètes ou contredites, ou le comportement est connu pour être limité.
RUNTIME_VALIDATION_REQUIREDComportement modifié ou jamais observé ; doit être validé dans une session réelle avant de pouvoir être promu.
UNAVAILABLENon implémenté ou délibérément rejeté.

Cycle de vie de la session et transaction#

FonctionnalitéÉtatPreuves
Démarrage headless NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start)RUNTIME_VALIDATEDMatrice, section « Existing Runtime Evidence » ; sessions e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf)
Démarrage SAVED_SITUATION (world.saved-situation)RUNTIME_VALIDATEDNote de GetCapabilitiesAsync et matrice (Berlin-Spandau, formulaire Start et Button1Click)
Arrêt forcé session.stop et restauration exacteRUNTIME_VALIDATEDSession 50a1f1ec : l'arrêt normal n'a laissé ni processus OMSI ni journal
Idempotence du démarrage (PluginStart répété)RUNTIME_VALIDATEDSession 50a1f1ec
Overlay sémantique de options.cfg et restauration à l'octet près (RV-005)RUNTIME_VALIDATEDSession 1e8e0548 : AIMaxCountRandom 150/200 avec fin de fichier préservée ; hash restauré A12982C3...
Écran de démarrage géré et transaction d'overlay (RV-006)RUNTIME_VALIDATEDMatrice RV-006 PASS (lot de présentation : géré par défaut, géré personnalisé, Unset) ; sessions Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb
Récupération après sortie prématurée (RV-008, arrêt forcé d'OMSI)RUNTIME_VALIDATEDSessions post-Fable Round A 9e7cad79-9c35-4f93-bfc8-71f455513f82 (après la phase de jeu) et dcac497e-ff35-4c97-b5e4-98b660f88032 (après world.starting, avant la phase de jeu) : le propriétaire s'est terminé, le journal et le bail ont été effacés, options.cfg et l'état de l'écran de démarrage initialement absent correspondaient aux instantanés. L'injection d'un échec de démarrage natif et d'un échec de restauration reste distincte.
Frontières de l'échec de démarrage et de l'échec délibéré de restauration (reste de RV-008)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) : le timeout de démarrage SF01 session 0b21c664-b0b2-46b2-9b6b-def536765fff et l'échec du monde signalé par le plugin SF02 session 53358c75-469b-41d5-9ddb-cdb1d1ff828d se sont terminés en Failed avec des codes typés et une restauration exacte ; l'échec de restauration F01 session d4194a69-d858-42fe-97c7-ce93ccbdc3f6 (un fichier appartenant à la session verrouillé par un processus de test pendant l'arrêt) a produit OL_E_RESTORE_FAILED, a conservé le journal et la sauvegarde, et /recover a restauré exactement l'état antérieur à la session. Les producteurs d'échec relèvent uniquement de l'infrastructure de test.
Restauration des artefacts de session pour les cibles .itx et Texture\standard.ipr (S-01)RUNTIME_VALIDATEDLe Round A a restauré des chemins existants dans 47efd323-4ce1-400a-ac83-74893cf82f26 ; a créé puis supprimé une cible enregistrée initialement absente lors d'un arrêt normal dans 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b ; et a répété ce nettoyage via une interruption du propriétaire suivie de /recover dans aa9a45d4-302e-4cf5-8490-f5a1c9e44b79.
closecheck comme suppression de session et suppression des marqueurs obsolètes (S-13)RUNTIME_VALIDATEDLes sessions du Round A, dont 47efd323-4ce1-400a-ac83-74893cf82f26, ont enregistré closecheck.stale-removed suivi de restore.session-artifact-removed ; aucun journal n'est resté.
Récupération anticipée avant la construction de l'overlay, récupération différée antérieure aux empreintes (S-05)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05 : le propriétaire de la session f755ed51-b85c-4df2-b062-5bf65c768b32 a été tué avec un journal en attente (maxFPS=77 actif) ; le démarrage suivant, session 291ea22b-f9b3-42a4-be07-7f0c055c7113, a journalisé PENDING_JOURNAL_RECOVERED avant TRANSACTION_STARTED, s'est exécuté avec son propre overlay (88) et s'est terminé identique à l'octet près à l'état antérieur à la première session. La branche différée antérieure aux empreintes reste hors ligne (transaction.legacy-journal-ownership-migration).
Restauration des métadonnées (horodatages, attributs, lecture seule), vidage en écriture directe (write-through), nettoyage des sauvegardes (S-12)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) : S12a session 40de172b-e144-4f0a-9207-09c80b5d7df7 (horodatage connu de options.cfg) et S12b session d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (horodatage et ReadOnly) : l'overlay était actif pendant la session (ReadOnly retiré pour OMSI), et les octets, la date de dernière écriture, la date de création et les attributs ont été restaurés exactement ; aucun répertoire de sauvegarde n'est resté.
/recover sous le bail d'installation ; refus pendant la fenêtre antérieure au PID (S-04)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) : S04 session 1fb2aad5-2985-4fa4-9c5a-6186f51d37b8 : avec un propriétaire actif, /recovery-status et /recover ont renvoyé OL_E_INSTALLATION_BUSY et un second démarrage a été refusé ; propriétaire tué et OMSI laissé en cours d'exécution, /recover et un nouveau démarrage ont été refusés jusqu'à la fermeture d'OMSI, puis /recover a restauré exactement. S04b session 5e57ca51-ab5e-4e94-a0d0-531735ee4057 : un journal antérieur au PID (injection de fautes par le harnais) a été refusé tant qu'un Omsi.exe quelconque s'exécutait depuis la racine, puis récupéré après sa fermeture ; un closecheck écrit par cet OMSI est conservé avec OL_W_RESTORE_FOREIGN_FILE_RETAINED (documenté, conservateur).
Nouvelle planification dans StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE sur un plan périmé (S-15)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02 : un plugin listé dans le manifeste ayant été mis de côté après la planification, StartSessionAsync a levé OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING avant qu'aucune session n'existe (plan 4797c9ce-6eb3-47b1-b09d-03562dd3bd44, candidat 2, après le correctif BUG-01)
Cycle de vie du propriétaire : arrêt par pipe, Ctrl+C, arrêt depuis la zone de notification, sortie d'OMSI, propriétaire tué, /observe-secondsRUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) : arrêt par pipe pendant /observe-seconds L06 session 300a563e-7b0e-4f01-afbd-9e15df32c7e6 ; Ctrl+C L03 session 5e2aca54-bae2-4fc6-a106-93699e755bfc (propriétaire terminé 577 ms après le signal) ; OMSI tué L05a session d69658f9-16f6-43e9-8e36-682114b97e14 ; fenêtre principale d'OMSI fermée L05b session 76b11ba4-8ddb-4611-9a1c-8be317cd0337 (OMSI ignore WM_CLOSE ; terminé par kill) ; arrêt depuis la zone de notification T01/T03 sessions 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8 ; propriétaire tué S05. Chaque chemin s'est terminé par une restauration exacte. Lorsque le propriétaire est tué brutalement, Omsi.exe continue de s'exécuter (par conception) ; la récupération est refusée jusqu'à sa fermeture (S04).
Budget ProcessExit de 4 s à la fermeture de la console ou à la déconnexionRUNTIME_VALIDATED (fermeture de la console)Campagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04 session 559d0f1d-7d5b-4b6b-b70c-0acb272d53db : fenêtre de console fermée ; la restauration s'est achevée dans le budget, la session a atteint Completed sans journal ; Windows a mis fin au propriétaire environ 5 s après la fermeture (sortie 0xC000013A). La déconnexion n'a pas été testée.
Arrêt coopératif par WM_CLOSEUNAVAILABLENon implémenté (décision produit, S-11). Clôture runtime L05b : OMSI ne s'est pas fermé dans les 30 s suivant l'envoi de WM_CLOSE à sa fenêtre principale. ShutdownTimeoutSeconds n'est pas utilisé.
Sémantique du bail d'installation (sémaphore Local\)STATICALLY_VALIDATEDlease.cross-thread-release ; limites documentées comme risque accepté (S-18)
Préservation du CP1252 lors de la modification des fichiers OMSI (S-07)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) C01 session 84a71235-d618-4917-9af4-c2a6025742f4 : options.cfg contenant une valeur CP1252 accentuée (dont 0x80 et 0x96) modifié par /set ; le fichier actif a conservé les octets CP1252 sans EF BF BD, et le fichier était identique à l'octet près après la session
Découverte du contenu ignorant les points d'analyse (reparse points) (S-23)STATICALLY_VALIDATEDTests discovery.*
Rétention des diagnostics (50 sessions les plus récentes) (S-26)STATICALLY_VALIDATEDHostTrace.Prune
Verrous de fichiers transitoires (antivirus, indexeur) sur les écritures et suppressions de la transaction réessayés pendant environ 1.5 s ; les verrous persistants échouent toujours (passe de correction CP-10)STATICALLY_VALIDATEDtransaction.transient-lock-retried, transaction.restore-failure-recovery (un verrou persistant échoue toujours) ; deux échecs intermittents hors ligne observés avant le correctif, aucun sur 16 exécutions après

Plugin permanent et plateforme#

FonctionnalitéÉtatPreuves
Profil Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 octets)RUNTIME_VALIDATEDToutes les sessions de la matrice
Exécutable Steam LAA (7DAB063D...D759)PARTIALClôture runtime LAA01 session 9ec975ca-7820-47be-b806-5f5a94aad4ab : une copie contrôlée (dérivée de l'original non patché de l'installation avec IMAGE_FILE_LARGE_ADDRESS_AWARE et une somme de contrôle PE recalculée ; 8,503,440 octets, caractéristiques 0x81AE) correspondait au hash, l'empreinte a été acceptée et le plan était exécutable. L'image est l'exécutable Steam d'origine protégé par DRM : hors d'une véritable installation Steam, il passe la main au client Steam et se termine, si bien que la session a échoué avec OL_E_PROCESS_EXITED_EARLY et une restauration exacte. La phase de jeu, les lectures, les commandes et l'arrêt nécessitent une véritable installation Steam (ENVIRONMENT).
Identité de l'installation : le bail et le nom du pipe de contrôle dérivent d'une seule définition, InstallationPaths.IdentityKey (C:\OMSI = C:\OMSI\ = C:\OMSI\. = C:\foo\..\OMSI = variantes de casse ; C:\OMSI-A diffère de C:\OMSI-B) (passe de correction CP-02, addendum A/B)STATICALLY_VALIDATED ; observé à l'exécutionlease.root-normalization, paths.installation-identity-and-containment. Clôture runtime ID01 : pendant l'exécution de la session 01bfc780-10ef-4390-b700-c08bf809a42f, les seconds démarrages et /recovery-status avec la racine écrite avec \., un segment .., en minuscules et en majuscules ont été refusés (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY) ; de même pour l'écriture avec séparateur final (ID01b, session ba3ea7c9-9826-453d-b447-81c48763e18f).
Cohérence du paquet de version : staging propre, reçu de build Native.x86 (contenu, pas horodatage), manifeste sans BOM, intégrité de la closure en staging et de l'archive ré-extraite, l'installateur copie le manifeste (passe de correction CP-01, Round A RA-007, addendum F/G/H)STATICALLY_VALIDATED ; observé sur l'installationTest-PackagingPipeline.ps1 (candidat cohérent et 16 cas négatifs), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Clôture runtime : les paquets installés dans l'installation autorisée étaient cohérents avec leurs manifestes, et chaque session a été planifiée avec plugin.integrity.reference = manifest (registre des candidats research/reports/runtime-closure/CANDIDATES.md).
Intégrité de la closure du plugin par rapport à release-manifest.json (S-09)RUNTIME_VALIDATEDSession Round A 47efd323-4ce1-400a-ac83-74893cf82f26 ; les sessions de clôture runtime sur des paquets de version installés (par exemple R01 session 878b5e3c-2f9d-46bf-a918-11bb2e227e55, candidat 3) ont été planifiées avec plugin.integrity.reference = manifest ; R02 a montré qu'un plugin listé manquant bloque le démarrage.
Validation du build dans le processus (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED)RUNTIME_VALIDATEDSessions de la matrice ; deux sessions plugin.build.invalid antérieures sur un plugin périmé
Handoff v4 avec SHA-256RUNTIME_VALIDATEDTests d'intégration handoff.* ; toutes les sessions
Plugin inerte sans OmsiLaunch (pas de handoff)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) P01 (démarrage simple d'OMSI, sans session OmsiLaunch ; pid OMSI 35564) : la closure du plugin et l'hôte .NET ont été chargés, OmsiLaunch.Native.x86.dll n'a pas été chargé, les trois sites de patch natif contenaient les octets non patchés de Omsi.exe, et aucun pipe de contrôle, journal ni diagnostic n'est apparu
Politique de recherche des DLL (AssemblyDirectory | System32) (S-24)STATICALLY_VALIDATEDAttributs d'assembly
Détection de Windows 10+ x64 et rejet des autres plateformesSTATICALLY_VALIDATEDCurrentWindowsX64Platform.Detect

Canal de contrôle runtime et plan de contrôle#

FonctionnalitéÉtatPreuves
Intégrité du format de la boîte aux lettres, liaison à la sessionRUNTIME_VALIDATEDToutes les sessions runtime ; runtime-command.wire-guard, runtime-command.session-binding
Abandon des réponses tardives et absence de blocage du canal après un timeout (S-08)RUNTIME_VALIDATEDSession Round A 173414a5-ee53-4b10-aeb7-046f40b851e9 : un client externe a abandonné road-vehicles.spawn après 250 ms ; un map.read ultérieur a réussi et l'arrêt canonique a nettoyé la session. Le rejet des réponses surdimensionnées reste couvert hors ligne uniquement.
Plan de contrôle local : nom de pipe par installation, liaison session_id, erreurs typées des gestionnaires, limite de 64 KiB (S-06)RUNTIME_VALIDATEDSession Round A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf : un protocole invalide, un arrêt non lié, une requête runtime de mauvaise session et une trame surdimensionnée ont été rejetés ; une requête d'état valide et un arrêt lié ultérieurs ont réussi. Le rejet des réponses surdimensionnées reste couvert hors ligne uniquement.
Slot de séquence de télémétrie, omission des échantillons déchirés, événements consécutifs identiques (S-25)STATICALLY_VALIDATEDtelemetry.sequence-samples
La frontière de l'API rejette internal.* et retire les clés de résultat internes (S-02)STATICALLY_VALIDATEDOmsiLaunchService.ExecuteRuntimeAsync ; validation du registre
Une réponse de boîte aux lettres invalide ou surdimensionnée libère le slot ; la requête suivante réussit (passe de correction CP-03)STATICALLY_VALIDATEDruntime-command.oversized-response-rejected ; côté plugin plugin-runtime.oversized-and-abandoned-responses. Non reproductible à l'exécution : aucune opération publique ne renvoie plus d'un slot (la plus grande fait environ 37.8 KB, clôture runtime R03).
Chaque chemin terminal d'une requête runtime laisse la boîte aux lettres réutilisable : rejet typé, timeout, annulation par l'appelant, identifiant de requête réutilisé, opération interne, mauvaise session, argument manquant (à l'exécution) ; réponses malformées, surdimensionnées, corrompues, périmées et orphelines (hors ligne)RUNTIME_VALIDATED (chemins atteignables)Campagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03 session 1134fdc3-a469-4ff5-a511-9964ed65e7cd : chaque échec a été typé et la requête valide suivante a réussi. Les chemins de corruption de réponse ne peuvent pas être produits de l'extérieur et restent hors ligne (runtime-command.terminal-paths-leave-channel-usable).
Réponse surdimensionnée du plan de contrôle renvoyée sous forme de OL_E_CONTROL_RESPONSE_TOO_LARGE ; état et événements réduits en commençant par les plus anciens pour tenir dans une trame (passe de correction CP-04)STATICALLY_VALIDATEDcontrol-plane.binding-and-typed-errors. Non reproductible à l'exécution : la plus grande réponse publique observée lors de la campagne de clôture runtime faisait environ 37.8 KB (R03), et l'historique des événements d'une session reste très en deçà d'une trame.
Plan de contrôle jamais muet une fois connecté : trames malformées, surdimensionnées, de longueur négative, vides, JSON null, sans commande, avec argument non chaîne, de protocole invalide, de commande inconnue, non liées et de mauvaise session ; trames client tronquées ; clients bloqués ; clients partant avant la réponseRUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R04 session faaaf8a8-126d-4a23-a8f3-381e47c58de6 (candidat 2, après le correctif BUG-02) : chaque trame a reçu son erreur typée, suivie à chaque fois d'un session.status réussi ; un client bloqué n'a pas bloqué les autres ; un arrêt lié en concurrence avec un road-vehicles.spawn en cours a terminé la session et l'appelant du spawn a reçu une fin de flux propre. OL_E_TIMEOUT et les métadonnées de troncature restent hors ligne (control-plane.errors-never-silent).
Harnais de lots runtime (/runtime-batch, /runtime-write-batch, /d3d-batch)INTERNAL (STATICALLY_VALIDATED)Harnais de validation uniquement (S-27)

Opérations runtime#

Opération(s)ÉtatPreuves
time.read, time.setRUNTIME_VALIDATEDSession e5454061 (écriture, SetTime, relecture, restauration)
weather.read, weather.actual.readRUNTIME_VALIDATEDSession e5454061
weather.setUNAVAILABLERejeté avec OL_E_RUNTIME_SETTING_NOT_PERSISTENT ; persistance FAIL dans les sessions e5454061 et 5f641c8d ; rejet PASS dans 50a1f1ec
map.readRUNTIME_VALIDATEDRevalidé après la correction du slot global Map dans la session 9dd62626-94c6-4cd7-bb6f-0288327696f4 : loaded=true, 19 tuiles, identité Grundorf, nom de fichier, description et plage d'années cohérents.
camera.read, camera.setRUNTIME_VALIDATEDSession e5454061 (écriture du FOV, relecture, restauration)
camera.lock, camera.unlockRUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01 session 5dfd9b96-fa94-4060-85af-0c9d19823a73 : la situation enregistrée Linie 5 a fourni un PlayerVehicle (rv-000001) ; les verrouillages sur les familles 0, 2 et 1 ont été confirmés par relecture de la caméra ; le déverrouillage a libéré la politique
road-vehicles.read, road-vehicles.list, road-vehicle.readRUNTIME_VALIDATEDSessions e5454061, 5f641c8d
Durée de vie des handles RoadVehicle et détection des handles obsolètes (RV-002)PARTIALAucun producteur de suppression sûr : dans trois fenêtres de clôture runtime (H01, H01b, H01c, jusqu'à 180 s, avec un saut d'horloge), les populations RoadVehicle et Human de Grundorf n'ont fait que croître ; aucune opération publique ne supprime un objet. La détection des handles obsolètes reste hors ligne (S-19). La règle de génération/ABA est validée à l'exécution pour les textures D3D (H02).
road-vehicles.spawn (RV-003)RUNTIME_VALIDATEDSession 5f641c8d : 2 -> 3, rv-000003 résolu
road-vehicles.place-randomRUNTIME_VALIDATEDMatrice : collection 2 -> 4
player-vehicle.readRUNTIME_VALIDATEDRound A RA-002 session 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false) ; la clôture runtime CAM01 session 5dfd9b96-fa94-4060-85af-0c9d19823a73 a lu un PlayerVehicle présent à partir d'une situation enregistrée
humans.read, humans.list, human.readRUNTIME_VALIDATEDSession e5454061
timetable.read, timetable.*.list, timetable.logs.readRUNTIME_VALIDATEDSession e5454061 ; entrées de trajet : 91 enregistrements
Troncature des listes bornées au lieu de OL_E_RUNTIME_RESPONSE_TOO_LARGE (audit de documentation BUG-05)RUNTIME_VALIDATEDNouveau test de l'audit de documentation sur le paquet 9F8CC87B..., situation enregistrée situations\Linie 5.osn (Berlin-Spandau) : timetable.track-entries.list a renvoyé 137 entrées sur 825 et timetable.tour-entries.list 224 sur 4747 avec truncated=true (sessions 08df97b8-06cc-4faa-be8b-f49ca1538dce et le nouveau test de capture de documentation) ; avant le correctif, les deux échouaient avec OL_E_RUNTIME_RESPONSE_TOO_LARGE (session f51dcb59-a723-4570-b6c5-b61e628a7993). Preuves : research/reports/documentation-audit/runtime/.
drivers.read, tickets.readRUNTIME_VALIDATEDSession e5454061
vehicle.variables.list, vehicle.variable.get, vehicle.variable.setRUNTIME_VALIDATEDRefresh_Strings 0 -> 1 -> 0 dans la session runtime enregistrée comme Runtime-Proven dans research/reports/OmsiHook-Parity-Wave-A-Closure-001.md (1,025 noms énumérés, selon OMSILAUNCH-AUTONOMOUS-BUILD-001.md) ; le rapport n'enregistre pas l'identifiant de session
vehicle.string-variables.list, vehicle.string-variable.getRUNTIME_VALIDATED (lecture seule)Session e5454061 ; écritures BI-004 UNAVAILABLE
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.readRUNTIME_VALIDATEDSession e5454061
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rejet des handles libérésRUNTIME_VALIDATEDMatrice, « basic D3D texture lifecycle » ; notes de capacité runtime.d3d.* (session 4378899d pour le slot du périphérique)
Événements de perte / réinitialisation / restauration du périphérique D3D, invalidation de génération (RV-007)RUNTIME_VALIDATED (resetting/restored)Campagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) D01 session fc07946e-58dd-4ddc-af7e-10c7e61a899a : un changement temporaire du mode d'affichage (producteur de test, jamais public, sans appel de réinitialisation synthétique) a amené OMSI à réinitialiser son périphérique deux fois. d3d.resetting/d3d.restored ont été émis, la génération a avancé à chaque cycle, une requête pendant la réinitialisation a reçu OL_E_D3D_RESET_IN_PROGRESS, la texture antérieure à la perte a été rejetée avec OL_E_D3D_STALE_RESOURCE_HANDLE et les nouvelles textures ont fonctionné. OMSI est passé directement à DEVICENOTRESET, si bien qu'aucune transition lost distincte n'a été produite. Une tentative a fait planter OMSI dans DSound.dll (changement de point de terminaison audio de l'affichage ; le propriétaire a restauré exactement).
events.read / events watchRUNTIME_VALIDATEDToutes les sessions (cycle de vie piloté par la télémétrie)
internal.road-vehicles.make-basicINTERNALInaccessible par les surfaces publiques

Fonctionnalités de lancement#

FonctionnalitéÉtatPreuves
/set et settings du profil (configuration.options.semantic)RUNTIME_VALIDATEDRV-005
Profils de session (compilateur strict, conflits, confinement des chemins y compris les reparse points S-17)RUNTIME_VALIDATED (périmètre du démarrage par profil)Round A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22 : écran de démarrage géré, textures Internet désactivées et préréglage graphics.maxFPS=30 ; options.cfg restauré, fixture intacte, aucun journal, bail ni processus.
Chargement de /spec (limite de 1 MiB, propriétés inconnues rejetées, timeouts respectés) (S-20)STATICALLY_VALIDATEDTests cli.*
Écran de démarrage géré PTB/ENG/DEU/FRARUNTIME_VALIDATEDRV-006
Textures Internet Disabled (suppression du téléchargeur dans le processus)STATICALLY_VALIDATEDChemin de télémétrie internet-textures.suppressed ; non cité dans la matrice
Garde des cibles .itx des textures Internet (Round A RA-011/RA-012, passe de correction CP-05, addendum E) : racine canonique, cible canonique, chemin relatif, règles de segments ; seul un segment de répertoire nommé texture sous la racine est admis (mytexture, texture_backup, texture2 et texture dans la racine absolue ne le sont pas) ; cibles par traversée, absolues, relatives à la racine et par jonction rejetées ; les différentes écritures convergent vers un seul chemin de transaction canoniqueSTATICALLY_VALIDATEDpresentation.itx-target-root-normalization, presentation.itx-target-guard-rejections
Textures Internet OverrideRUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) : I01 session 6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3 : le téléchargeur d'OMSI a envoyé HEAD et GET à un serveur loopback pour une cible existante et une cible initialement absente, a écrit les deux, et après l'arrêt canonique la cible absente a été supprimée et la cible existante restaurée à l'octet près ; I02 session a8f2b720-e41a-4e34-86bf-125bf519a5bd : même résultat après que le propriétaire et OMSI ont été tués, via /recover.
/date, /time, /year, options météo, options du véhicule du joueur (STATICALLY_PARTIAL)UNAVAILABLELe planificateur marque le plan comme non exécutable (OL_E_CAPABILITY_UNAVAILABLE) ; le plugin rejette les modes de date/heure autres que Unset
/entrypoint:<identity> (BI-001)PARTIALPlan non exécutable (RUNTIME_PARTIAL)
/last (LastMapState, BI-006)UNAVAILABLEUNSUPPORTED_FOR_CURRENT_PROFILE
Overlays clavier/manette InputSpec (BI-005)UNAVAILABLELes parseurs existent ; non appliqués
Attribution headless du PlayerVehicle (BI-007), SetActualDateTime (BI-002), contrôle météo ICAO (BI-003), écritures de variables chaîne (BI-004), relocalisation entre tuiles (BI-008)UNAVAILABLEBloqué jusqu'à la fin de l'implémentation
Découverte /list (content.*)STATICALLY_VALIDATED ; observé à l'exécutiondiscovery.fixture ; la clôture runtime a utilisé /list:situations sur l'installation autorisée (identités incluant le nom non ASCII situations\Nur für Fortgeschrittene.osn)
/quiet, /serveUNAVAILABLEACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Options de diagnostic (/log, /logall, /omsi-logall, /verbose, /trace*)PARTIALTransportées dans DiagnosticsSpec ; effet limité à la trace de l'hôte

Hôte Windows et zone de notification#

FonctionnalitéÉtatPreuves
Indicateur de la zone de notification (OmsiLaunchW.exe) : icône dans la zone de notification, état, « End session » (Terminer la session) avec confirmation et Cancel, redémarrage de l'Explorateur, boîtes de dialogue ouvertes à l'arrivée d'un arrêt, arrêt pendant /observe-seconds, boîtes de dialogue d'échec (S-16)RUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) sur le candidat 3 (après le correctif BUG-04) : T01 session 6d827c13-caf8-4221-832a-c91d26f130e0 (icône trouvée dans Shell_TrayWnd, fenêtre d'état en pt-BR, le redémarrage de l'Explorateur a réajouté l'icône, Cancel a conservé la session, End session l'a terminée en 607 ms et a retiré l'icône) ; T02 session 0939a151-bf03-4ca9-8294-8b0088df7d30 (fenêtre d'état et confirmation ouvertes pendant un arrêt par pipe) ; T03 session 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8 ; T04 session 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (boîtes de dialogue d'erreur d'argument, d'absence de session active et d'échec de session, avec codes). Les codes de sortie 100-106 du shim n'ont pas été produits.
Relancement /silent renvoyant 0 lorsque l'hôte a démarréRUNTIME_VALIDATEDCampagne de clôture runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) T04 session 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (candidat 3, après le correctif BUG-03) : le lanceur a renvoyé 0 et un appelant capturant sa sortie a reçu la fin de flux après 0.4 s, tandis que la session OmsiLaunchW s'exécutait sans fenêtre de console ; la session s'est arrêtée avec une restauration exacte
Codes de sortie 100-106 du shim d'amorçage, tampon de chemin dynamique (S-21)STATICALLY_VALIDATEDTest-ReleaseIdentity.ps1

Nouveau test de l'audit de documentation (clôture de la documentation 0.1.0-beta3)#

Paquet 9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17 sur l'installation autorisée, avec BUG-05, BUG-06, BUG-07 et le test de fumée répétés sur le paquet final B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35 (session R01 56cdee4b-9160-49fc-b0fd-5134ff9fe2d0, session de capture de documentation 40046805-5337-48fc-90dd-e7d3500ed3b4) ; preuves dans research/reports/documentation-audit/runtime/ et research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.

ÉlémentÉtatPreuves
OmsiLaunchW.exe signale un lancement non exécutable (BUG-06)RUNTIME_VALIDATED/new ... /date:2026-09-20 sous OmsiLaunchW.exe : boîte de dialogue Requested capability unavailable: world.explicit-date / Code: OL_E_CAPABILITY_UNAVAILABLE, sortie 1, aucun processus OMSI (doc-bug06-dialog.json ; paquet installé 9f8cc87b..., aucune session n'est créée, par conception)
Les routes CLI annoncées sont une syntaxe réelle (BUG-07)RUNTIME_VALIDATEDChaque variante de route client affichée par help --json et capabilities --json installés (32 descripteurs) a été acceptée par le parseur installé ; aucune n'a affiché l'aide d'utilisation (doc-bug07-routes.json ; paquet installé 9f8cc87b...)
Chaque ligne de commande de la page d'exemples CLIRUNTIME_VALIDATED43 lignes client exécutées contre la session propriétaire 08df97b8-06cc-4faa-be8b-f49ca1538dce (situation enregistrée ; events watch ignoré car il s'exécute jusqu'à Ctrl+C), se terminant par le propre session stop de la page (sortie du propriétaire 0). Toutes correspondaient à la page, sauf vehicle.constant.get avec name=max_speed, une constante que ce bus ne possède pas ; la page utilise désormais antrieb_getr_version. L'exemple de profil grundorf-quick ne se planifiait pas (barres obliques inverses doublées dans des scalaires YAML simples) et a été corrigé ; chaque ligne sans session a été exécutée depuis la racine de l'installation, les lignes de lancement avec /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json)
Test de fumée NEW_MAP avec /observe-seconds sur le paquet finalRUNTIME_VALIDATEDR01 session 08570134-cfd8-4726-a472-5f6dd2f04c8f, état final propre (research/reports/runtime-closure/doc-R01-*)

Liste consolidée RUNTIME_VALIDATION_REQUIRED#

La campagne de clôture runtime du 2026-09-23 a soldé la file précédente. Celle-ci reste vide, à l'exception des éléments qui ne peuvent pas être produits de façon sûre sur cette installation :

  1. Phase de jeu, lectures, commandes et arrêt avec Steam LAA : nécessitent une véritable installation Steam (environnement ; la ligne ci-dessus est PARTIAL).
  2. Suppression de RoadVehicle et de Human pour RV-002 : aucun producteur de suppression sûr (la ligne ci-dessus est PARTIAL).

Les éléments qui restent hors ligne parce qu'ils ne peuvent pas être produits depuis l'extérieur du produit sont signalés dans leurs lignes et ne font pas partie de la file : corruption des réponses de la boîte aux lettres, réponses surdimensionnées, troncature de l'historique des événements, transition D3D lost, déconnexion, codes de sortie 100-106 du shim et branche de récupération différée antérieure aux empreintes.

Voir aussi : capacités, limitations connues, transactions et récupération, compatibilité.