Estado de la validación en runtime

Documentación de la versión v0.1.0-beta.3Ver fuente en GitHub

Traducción de la página original en inglés de OmsiLaunch 0.1.0-beta3. La página en inglés es la referencia normativa: si difieren, prevalecen la página en inglés y el código.

Esta página es la tabla única de evidencias de OmsiLaunch 0.1.0-beta3. Cada fila nombra una capacidad o funcionalidad y su estado de evidencia. RUNTIME_VALIDATED puede citar research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (ids de la matriz RV-nnn, bloqueos BI-nnn, ids de sesión de su tabla de ejecución del 2026-09-20) o el informe de la ronda A posterior a Fable research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn); todo lo demás se deriva del código y de las suites de pruebas offline. La ronda de endurecimiento del 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, hallazgos S-01 a S-34) cambió el comportamiento de la restauración, la recuperación, el plano de control y los límites; esos cambios solo tenían evidencia offline. La ronda final de cierre de runtime del 2026-09-23 (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md, ids de escenario como F01, S05, T01, candidatos 2 y 3) los ejecutó en sesiones reales sobre la instalación autorizada; las filas promovidas por esa ronda citan sus ids de escenario y de sesión. Por tanto, RUNTIME_VALIDATED también puede citar ese informe.

Estados de evidencia:

EstadoSignificado
RUNTIME_VALIDATEDObservado en una sesión canónica registrada en la matriz (se citan el id y la sesión).
STATICALLY_VALIDATEDImplementado y cubierto por pruebas offline (tools/OmsiLaunch.TestHost, tests/*), no observado en una sesión real desde el último cambio.
PARTIALImplementado, pero la evidencia está incompleta o es contradictoria, o se sabe que el comportamiento es limitado.
RUNTIME_VALIDATION_REQUIREDEl comportamiento cambió o nunca se observó; debe validarse en una sesión real antes de poder promoverse.
UNAVAILABLENo implementado o rechazado deliberadamente.

Ciclo de vida de la sesión y transacción#

FuncionalidadEstadoEvidencia
Inicio headless de NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start)RUNTIME_VALIDATEDSección «Existing Runtime Evidence» de la matriz; sesiones e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf)
Inicio de SAVED_SITUATION (world.saved-situation)RUNTIME_VALIDATEDNota de GetCapabilitiesAsync y matriz (Berlin-Spandau, formulario Start y Button1Click)
Terminación forzada de session.stop y restauración exactaRUNTIME_VALIDATEDSesión 50a1f1ec: la detención normal no dejó ningún proceso de OMSI ni ningún diario
Idempotencia del arranque (PluginStart repetido)RUNTIME_VALIDATEDSesión 50a1f1ec
Overlay semántico de options.cfg y restauración exacta byte a byte (RV-005)RUNTIME_VALIDATEDSesión 1e8e0548: AIMaxCountRandom 150/200 más la cola conservada; hash restaurado A12982C3...
Splash gestionado más transacción del overlay (RV-006)RUNTIME_VALIDATEDMatriz RV-006 PASS (lote de presentación: gestionado predeterminado, gestionado personalizado, Unset); sesiones de Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb
Recuperación tras salida prematura (RV-008, terminación forzada de OMSI)RUNTIME_VALIDATEDSesiones de la ronda A posterior a Fable 9e7cad79-9c35-4f93-bfc8-71f455513f82 (tras la fase de juego) y dcac497e-ff35-4c97-b5e4-98b660f88032 (tras world.starting, antes de la fase de juego): el propietario terminó, el diario y el lease se eliminaron, y options.cfg y el estado del splash originalmente ausente coincidieron con los snapshots. La inyección de fallos de arranque nativos y de restauraciones fallidas sigue siendo aparte.
Límites de fallo de arranque y de restauración fallida deliberada (resto de RV-008)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): el timeout de arranque SF01 (sesión 0b21c664-b0b2-46b2-9b6b-def536765fff) y el fallo del mundo notificado por el plugin SF02 (sesión 53358c75-469b-41d5-9ddb-cdb1d1ff828d) terminaron en Failed con códigos tipados y una restauración exacta; la restauración fallida F01 (sesión d4194a69-d858-42fe-97c7-ce93ccbdc3f6, un archivo propiedad de la sesión bloqueado por un proceso solo de prueba durante la detención) dio OL_E_RESTORE_FAILED, conservó el diario y la copia de seguridad, y /recover restauró exactamente el estado previo a la sesión. Los productores de fallos son solo infraestructura de pruebas.
Restauración de artefactos de sesión para destinos .itx y Texture\standard.ipr (S-01)RUNTIME_VALIDATEDLa ronda A restauró rutas existentes en 47efd323-4ce1-400a-ac83-74893cf82f26; creó y eliminó un destino registrado y originalmente ausente en la detención normal en 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b; y repitió esa limpieza mediante la interrupción del propietario más /recover en aa9a45d4-302e-4cf5-8490-f5a1c9e44b79.
closecheck como eliminación de sesión y eliminación de marcadores obsoletos (S-13)RUNTIME_VALIDATEDLas sesiones de la ronda A, incluida 47efd323-4ce1-400a-ac83-74893cf82f26, registraron closecheck.stale-removed seguido de restore.session-artifact-removed; no quedó ningún diario.
Recuperación temprana antes de construir el overlay, recuperación diferida previa a las huellas (S-05)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05: se mató el propietario de la sesión f755ed51-b85c-4df2-b062-5bf65c768b32 con un diario pendiente (maxFPS=77 activo); el siguiente inicio, sesión 291ea22b-f9b3-42a4-be07-7f0c055c7113, registró PENDING_JOURNAL_RECOVERED antes de TRANSACTION_STARTED, se ejecutó con su propio overlay (88) y terminó idéntico byte a byte al estado anterior a la primera sesión. La rama diferida previa a las huellas sigue siendo offline (transaction.legacy-journal-ownership-migration).
Restauración de metadatos (marcas de tiempo, atributos, solo lectura), vaciado con escritura directa, limpieza de copias de seguridad (S-12)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S12a, sesión 40de172b-e144-4f0a-9207-09c80b5d7df7 (marca de tiempo conocida de options.cfg), y S12b, sesión d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (marca de tiempo más ReadOnly): el overlay estuvo activo durante la sesión (ReadOnly quitado para OMSI), y los bytes, la hora de última escritura, la hora de creación y los atributos se restauraron exactamente; no quedó ningún directorio de copias de seguridad.
/recover bajo el lease de la instalación; rechazo en la ventana previa al PID (S-04)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S04, sesión 1fb2aad5-2985-4fa4-9c5a-6186f51d37b8: con un propietario activo, /recovery-status y /recover dieron OL_E_INSTALLATION_BUSY y se rechazó un segundo inicio; con el propietario matado y OMSI aún en ejecución, /recover y un nuevo inicio se rechazaron hasta que OMSI salió, y entonces /recover restauró exactamente. S04b, sesión 5e57ca51-ab5e-4e94-a0d0-531735ee4057: un diario previo al PID (inyección de fallos del arnés) se rechazó mientras se ejecutaba cualquier Omsi.exe desde la raíz y se recuperó tras la salida; un closecheck escrito por ese OMSI se conserva con OL_W_RESTORE_FOREIGN_FILE_RETAINED (documentado, conservador).
Nueva planificación en StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE con un plan obsoleto (S-15)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02: con un plugin listado en el manifiesto apartado tras la planificación, StartSessionAsync lanzó OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING antes de que existiera ninguna sesión (plan 4797c9ce-6eb3-47b1-b09d-03562dd3bd44, candidato 2, tras la corrección BUG-01)
Ciclo de vida del propietario: detención por la canalización, Ctrl+C, detención desde la bandeja, salida de OMSI, propietario matado, /observe-secondsRUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): detención por la canalización durante /observe-seconds L06, sesión 300a563e-7b0e-4f01-afbd-9e15df32c7e6; Ctrl+C L03, sesión 5e2aca54-bae2-4fc6-a106-93699e755bfc (el propietario terminó 577 ms después de la señal); OMSI matado L05a, sesión d69658f9-16f6-43e9-8e36-682114b97e14; ventana principal de OMSI cerrada L05b, sesión 76b11ba4-8ddb-4611-9a1c-8be317cd0337 (OMSI ignora WM_CLOSE; terminado matándolo); detención desde la bandeja T01/T03, sesiones 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; propietario matado S05. Todas las rutas terminaron con una restauración exacta. Si se mata el propietario directamente, Omsi.exe sigue ejecutándose (por diseño); la recuperación se rechaza hasta que salga (S04).
Presupuesto de 4 s de ProcessExit al cerrar la consola o en el cierre de sesión de WindowsRUNTIME_VALIDATED (cierre de consola)Ronda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04, sesión 559d0f1d-7d5b-4b6b-b70c-0acb272d53db: se cerró la ventana de consola; la restauración terminó dentro del presupuesto, la sesión llegó a Completed sin diario; Windows terminó el propietario unos 5 s después del cierre (salida 0xC000013A). El cierre de sesión de Windows no se probó.
Cierre cooperativo mediante WM_CLOSEUNAVAILABLENo implementado (decisión de producto, S-11). Cierre de runtime L05b: OMSI no se cerró en los 30 s siguientes a WM_CLOSE enviado a su ventana principal. ShutdownTimeoutSeconds no se utiliza.
Semántica del lease de la instalación (semáforo Local\)STATICALLY_VALIDATEDlease.cross-thread-release; límites documentados como riesgo aceptado (S-18)
Conservación de CP1252 al parchear archivos de OMSI (S-07)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) C01, sesión 84a71235-d618-4917-9af4-c2a6025742f4: options.cfg con un valor CP1252 acentuado (incluidos 0x80 y 0x96) parcheado por /set; el archivo activo conservó los bytes CP1252 sin EF BF BD, y el archivo quedó idéntico byte a byte tras la sesión
Descubrimiento de contenido que omite puntos de reanálisis (S-23)STATICALLY_VALIDATEDPruebas discovery.*
Retención de diagnósticos (las 50 sesiones más recientes) (S-26)STATICALLY_VALIDATEDHostTrace.Prune
Los bloqueos transitorios de archivos (antivirus, indexador) en escrituras y eliminaciones de la transacción se reintentan durante unos 1.5 s; los bloqueos persistentes siguen fallando (pase de corrección CP-10)STATICALLY_VALIDATEDtransaction.transient-lock-retried, transaction.restore-failure-recovery (un bloqueo persistente sigue fallando); se observaron dos fallos offline intermitentes antes de la corrección y ninguno en 16 ejecuciones posteriores

Plugin permanente y plataforma#

FuncionalidadEstadoEvidencia
Perfil Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 bytes)RUNTIME_VALIDATEDTodas las sesiones de la matriz
Ejecutable Steam LAA (7DAB063D...D759)PARTIALCierre de runtime LAA01, sesión 9ec975ca-7820-47be-b806-5f5a94aad4ab: una copia controlada (derivada del original sin parchear de la instalación con IMAGE_FILE_LARGE_ADDRESS_AWARE y una suma de comprobación PE recalculada; 8,503,440 bytes, características 0x81AE) coincidió con el hash, la huella se aceptó y el plan era ejecutable. La imagen es el ejecutable original de Steam protegido con DRM: fuera de una instalación genuina de Steam cede el control al cliente de Steam y sale, por lo que la sesión falló con OL_E_PROCESS_EXITED_EARLY y una restauración exacta. La fase de juego, las lecturas, los comandos y la detención requieren una instalación genuina de Steam (ENTORNO).
Identidad de la instalación: el lease y el nombre de la canalización de control derivan de una única definición, InstallationPaths.IdentityKey (C:\OMSI = C:\OMSI\ = C:\OMSI\. = C:\foo\..\OMSI = variantes de mayúsculas y minúsculas; C:\OMSI-A difiere de C:\OMSI-B) (pase de corrección CP-02, adenda A/B)STATICALLY_VALIDATED; observado en runtimelease.root-normalization, paths.installation-identity-and-containment. Cierre de runtime ID01: mientras se ejecutaba la sesión 01bfc780-10ef-4390-b700-c08bf809a42f, se rechazaron segundos inicios y /recovery-status con la raíz escrita con \., con un segmento .., en minúsculas y en mayúsculas (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY); lo mismo con la grafía con separador final (ID01b, sesión ba3ea7c9-9826-453d-b447-81c48763e18f).
Coherencia del paquete de la versión: staging limpio, recibo de compilación de Native.x86 (contenido, no marca de tiempo), manifiesto sin BOM, integridad del conjunto preparado y del archivo reextraído, el instalador copia el manifiesto (pase de corrección CP-01, ronda A RA-007, adenda F/G/H)STATICALLY_VALIDATED; observado en la instalaciónTest-PackagingPipeline.ps1 (candidato coherente más 16 casos negativos), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Cierre de runtime: los paquetes instalados en la instalación autorizada eran coherentes con sus manifiestos, y todas las sesiones se planificaron con plugin.integrity.reference = manifest (registro de candidatos research/reports/runtime-closure/CANDIDATES.md).
Integridad del conjunto de archivos del plugin frente a release-manifest.json (S-09)RUNTIME_VALIDATEDSesión de la ronda A 47efd323-4ce1-400a-ac83-74893cf82f26; sesiones del cierre de runtime sobre paquetes de la versión instalados (por ejemplo R01, sesión 878b5e3c-2f9d-46bf-a918-11bb2e227e55, candidato 3) planificadas con plugin.integrity.reference = manifest; R02 mostró que un plugin listado que falta bloquea el inicio.
Validación de la build en el proceso (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED)RUNTIME_VALIDATEDSesiones de la matriz; dos sesiones anteriores con plugin.build.invalid sobre un plugin obsoleto
Handoff v4 con SHA-256RUNTIME_VALIDATEDPruebas de integración handoff.*; todas las sesiones
Plugin inerte sin OmsiLaunch (sin handoff)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) P01 (inicio normal de OMSI, sin sesión de OmsiLaunch; pid de OMSI 35564): el conjunto de archivos del plugin y el host de .NET se cargaron, OmsiLaunch.Native.x86.dll no se cargó, los tres puntos de parche nativos conservaban los bytes sin parchear de Omsi.exe, y no apareció ninguna canalización de control, diario ni diagnóstico
Política de búsqueda de DLL (AssemblyDirectory | System32) (S-24)STATICALLY_VALIDATEDAtributos del ensamblado
Detección de Windows 10+ x64 y rechazo de otras plataformasSTATICALLY_VALIDATEDCurrentWindowsX64Platform.Detect

Canal de control de runtime y plano de control#

FuncionalidadEstadoEvidencia
Integridad del protocolo del buzón, vinculación a la sesiónRUNTIME_VALIDATEDTodas las sesiones de runtime; runtime-command.wire-guard, runtime-command.session-binding
Descarte de respuestas tardías y ausencia de bloqueo del canal tras un timeout (S-08)RUNTIME_VALIDATEDSesión de la ronda A 173414a5-ee53-4b10-aeb7-046f40b851e9: un cliente externo abandonó road-vehicles.spawn tras 250 ms; un map.read posterior tuvo éxito y la detención canónica limpió la sesión. El rechazo de respuestas sobredimensionadas sigue siendo solo offline.
Plano de control local: nombre de canalización por instalación, vinculación a session_id, errores tipados del manejador, límite de 64 KiB (S-06)RUNTIME_VALIDATEDSesión de la ronda A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf: se rechazaron un protocolo no válido, una detención no vinculada, una solicitud de runtime de otra sesión y una trama sobredimensionada; una solicitud de estado válida y una detención vinculada posteriores tuvieron éxito. El rechazo de respuestas sobredimensionadas sigue siendo solo offline.
Slot de secuencia de telemetría, omisión de muestras incoherentes, eventos consecutivos idénticos (S-25)STATICALLY_VALIDATEDtelemetry.sequence-samples
El límite de la API rechaza internal.* y elimina las claves internas del resultado (S-02)STATICALLY_VALIDATEDOmsiLaunchService.ExecuteRuntimeAsync; validación del registro
Una respuesta del buzón no válida o sobredimensionada libera el slot; la siguiente solicitud tiene éxito (pase de corrección CP-03)STATICALLY_VALIDATEDruntime-command.oversized-response-rejected; en el lado del plugin, plugin-runtime.oversized-and-abandoned-responses. No reproducible en runtime: ninguna operación pública devuelve más de un slot (la mayor, unos 37.8 KB, cierre de runtime R03).
Todas las rutas terminales de una solicitud de runtime dejan el buzón reutilizable: rechazo tipado, timeout, cancelación por el llamador, id de solicitud reutilizado, operación interna, sesión incorrecta, argumento ausente (runtime); respuestas mal formadas, sobredimensionadas, corruptas, obsoletas y huérfanas (offline)RUNTIME_VALIDATED (rutas alcanzables)Ronda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03, sesión 1134fdc3-a469-4ff5-a511-9964ed65e7cd: cada fallo fue tipado y la siguiente solicitud válida tuvo éxito. Las rutas de corrupción de respuestas no pueden producirse desde fuera y siguen siendo offline (runtime-command.terminal-paths-leave-channel-usable).
La respuesta sobredimensionada del plano de control se contesta como OL_E_CONTROL_RESPONSE_TOO_LARGE; el estado y los eventos se recortan empezando por los más antiguos hasta caber en una trama (pase de corrección CP-04)STATICALLY_VALIDATEDcontrol-plane.binding-and-typed-errors. No reproducible en runtime: la mayor respuesta pública observada en la ronda de cierre de runtime fue de unos 37.8 KB (R03), y el historial de eventos de una sesión queda muy por debajo de una trama.
El plano de control nunca queda en silencio una vez conectado: tramas mal formadas, sobredimensionadas, de longitud negativa, vacías, JSON null, sin comando, con argumento que no es cadena, con protocolo no válido, con comando desconocido, no vinculadas y de otra sesión; tramas de cliente truncadas; clientes bloqueados; clientes que se van antes de la respuestaRUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R04, sesión faaaf8a8-126d-4a23-a8f3-381e47c58de6 (candidato 2, tras la corrección BUG-02): cada trama recibió su error tipado, seguido en cada caso de un session.status con éxito; un cliente bloqueado no bloqueó a los demás; una detención vinculada en carrera con un road-vehicles.spawn en curso terminó la sesión y el llamador del spawn recibió un fin de flujo limpio. OL_E_TIMEOUT y los metadatos de truncado siguen siendo offline (control-plane.errors-never-silent).
Arneses de lotes de runtime (/runtime-batch, /runtime-write-batch, /d3d-batch)INTERNAL (STATICALLY_VALIDATED)Solo arnés de validación (S-27)

Operaciones de runtime#

Operación u operacionesEstadoEvidencia
time.read, time.setRUNTIME_VALIDATEDSesión e5454061 (escritura, SetTime, relectura, restauración)
weather.read, weather.actual.readRUNTIME_VALIDATEDSesión e5454061
weather.setUNAVAILABLERechazado con OL_E_RUNTIME_SETTING_NOT_PERSISTENT; persistencia FAIL en las sesiones e5454061 y 5f641c8d; rechazo PASS en 50a1f1ec
map.readRUNTIME_VALIDATEDRevalidado tras la corrección del slot global de Map en la sesión 9dd62626-94c6-4cd7-bb6f-0288327696f4: loaded=true, 19 tiles, identidad de Grundorf, nombre de archivo, descripción e intervalo de años coherentes.
camera.read, camera.setRUNTIME_VALIDATEDSesión e5454061 (escritura del FOV, relectura, restauración)
camera.lock, camera.unlockRUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01, sesión 5dfd9b96-fa94-4060-85af-0c9d19823a73: la situación guardada Linie 5 proporcionó un PlayerVehicle (rv-000001); los bloqueos en las familias 0, 2 y 1 se confirmaron mediante relectura de la cámara; el desbloqueo liberó la política
road-vehicles.read, road-vehicles.list, road-vehicle.readRUNTIME_VALIDATEDSesiones e5454061, 5f641c8d
Vida útil de los handles de RoadVehicle y detección de handles obsoletos (RV-002)PARTIALNo hay un productor seguro de eliminaciones: en tres ventanas del cierre de runtime (H01, H01b, H01c, hasta 180 s, con un salto de reloj) las poblaciones de RoadVehicle y Human de Grundorf solo crecieron; ninguna operación pública elimina un objeto. La detección de handles obsoletos sigue siendo offline (S-19). La regla de generación/ABA está validada en runtime para las texturas D3D (H02).
road-vehicles.spawn (RV-003)RUNTIME_VALIDATEDSesión 5f641c8d: 2 -> 3, rv-000003 resuelto
road-vehicles.place-randomRUNTIME_VALIDATEDMatriz: colección 2 -> 4
player-vehicle.readRUNTIME_VALIDATEDRonda A RA-002, sesión 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false); el cierre de runtime CAM01, sesión 5dfd9b96-fa94-4060-85af-0c9d19823a73, leyó un PlayerVehicle presente desde una situación guardada
humans.read, humans.list, human.readRUNTIME_VALIDATEDSesión e5454061
timetable.read, timetable.*.list, timetable.logs.readRUNTIME_VALIDATEDSesión e5454061; entradas de trayecto: 91 registros
Truncado de listas acotadas en lugar de OL_E_RUNTIME_RESPONSE_TOO_LARGE (auditoría de documentación BUG-05)RUNTIME_VALIDATEDNueva prueba de la auditoría de documentación sobre el paquete 9F8CC87B..., situación guardada situations\Linie 5.osn (Berlin-Spandau): timetable.track-entries.list devolvió 137 de 825 entradas y timetable.tour-entries.list 224 de 4747 con truncated=true (sesiones 08df97b8-06cc-4faa-be8b-f49ca1538dce y la nueva prueba de captura para la documentación); antes de la corrección ambas fallaban con OL_E_RUNTIME_RESPONSE_TOO_LARGE (sesión f51dcb59-a723-4570-b6c5-b61e628a7993). Evidencia: research/reports/documentation-audit/runtime/.
drivers.read, tickets.readRUNTIME_VALIDATEDSesión e5454061
vehicle.variables.list, vehicle.variable.get, vehicle.variable.setRUNTIME_VALIDATEDRefresh_Strings 0 -> 1 -> 0 en la sesión de runtime registrada como Runtime-Proven en research/reports/OmsiHook-Parity-Wave-A-Closure-001.md (1,025 nombres enumerados, según OMSILAUNCH-AUTONOMOUS-BUILD-001.md); el informe no registra el id de sesión
vehicle.string-variables.list, vehicle.string-variable.getRUNTIME_VALIDATED (solo lectura)Sesión e5454061; escrituras BI-004 UNAVAILABLE
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.readRUNTIME_VALIDATEDSesión e5454061
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rechazo de handles liberadosRUNTIME_VALIDATEDSección «basic D3D texture lifecycle» de la matriz; notas de las capacidades runtime.d3d.* (sesión 4378899d para el slot del dispositivo)
Eventos de pérdida, reset y restauración del dispositivo D3D, invalidación de generación (RV-007)RUNTIME_VALIDATED (resetting/restored)Ronda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) D01, sesión fc07946e-58dd-4ddc-af7e-10c7e61a899a: un cambio temporal del modo de pantalla (productor de prueba, nunca público, sin llamada de reset sintética) hizo que OMSI reiniciara su dispositivo dos veces. Se emitieron d3d.resetting/d3d.restored, la generación avanzó en cada ciclo, una solicitud durante el reset recibió OL_E_D3D_RESET_IN_PROGRESS, la textura anterior a la pérdida se rechazó con OL_E_D3D_STALE_RESOURCE_HANDLE y las texturas nuevas funcionaron. OMSI pasó directamente a DEVICENOTRESET, por lo que no se produjo una transición lost diferenciada. Un intento hizo fallar OMSI en DSound.dll (cambio del endpoint de audio de la pantalla; el propietario restauró exactamente).
events.read / events watchRUNTIME_VALIDATEDTodas las sesiones (ciclo de vida guiado por la telemetría)
internal.road-vehicles.make-basicINTERNALInalcanzable a través de las superficies públicas

Funcionalidades de lanzamiento#

FuncionalidadEstadoEvidencia
/set y settings del perfil (configuration.options.semantic)RUNTIME_VALIDATEDRV-005
Perfiles de sesión (compilador estricto, conflictos, confinamiento de rutas incl. puntos de reanálisis S-17)RUNTIME_VALIDATED (alcance del inicio con perfil)Ronda A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22: splash gestionado, texturas de Internet desactivadas y preset graphics.maxFPS=30; options.cfg restaurado, fixture intacto, sin diario, lease ni proceso.
Carga de /spec (límite de 1 MiB, propiedades desconocidas rechazadas, timeouts respetados) (S-20)STATICALLY_VALIDATEDPruebas cli.*
Splash gestionado PTB/ENG/DEU/FRARUNTIME_VALIDATEDRV-006
Texturas de Internet Disabled (supresión del descargador dentro del proceso)STATICALLY_VALIDATEDRuta de telemetría internet-textures.suppressed; no citada en la matriz
Protección de destinos .itx de las texturas de Internet (ronda A RA-011/RA-012, pase de corrección CP-05, adenda E): raíz canónica, destino canónico, ruta relativa, reglas de segmentos; solo cumple los requisitos un segmento de directorio llamado texture por debajo de la raíz (mytexture, texture_backup, texture2 y texture en la raíz absoluta no); se rechazan destinos con recorrido de directorios, absolutos, relativos a la raíz y uniones; las distintas grafías se reducen a una única ruta canónica de la transacciónSTATICALLY_VALIDATEDpresentation.itx-target-root-normalization, presentation.itx-target-guard-rejections
Texturas de Internet OverrideRUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): I01, sesión 6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3: el descargador de OMSI envió HEAD y GET a un servidor de loopback para un destino existente y otro originalmente ausente, escribió ambos, y tras la detención canónica el destino ausente se eliminó y el existente se restauró exactamente byte a byte; I02, sesión a8f2b720-e41a-4e34-86bf-125bf519a5bd: lo mismo después de matar el propietario y OMSI, mediante /recover.
/date, /time, /year, flags de meteorología, flags del vehículo del jugador (STATICALLY_PARTIAL)UNAVAILABLEEl planificador marca el plan como no ejecutable (OL_E_CAPABILITY_UNAVAILABLE); el plugin rechaza los modos de fecha y hora distintos de Unset
/entrypoint:<identity> (BI-001)PARTIALPlan no ejecutable (RUNTIME_PARTIAL)
/last (LastMapState, BI-006)UNAVAILABLEUNSUPPORTED_FOR_CURRENT_PROFILE
Overlays de teclado y controladores de InputSpec (BI-005)UNAVAILABLELos analizadores existen; no se aplican
Asignación headless de PlayerVehicle (BI-007), SetActualDateTime (BI-002), control meteorológico ICAO (BI-003), escrituras de variables de cadena (BI-004), reubicación entre tiles (BI-008)UNAVAILABLEBloqueado hasta que se complete la implementación
Descubrimiento con /list (content.*)STATICALLY_VALIDATED; observado en runtimediscovery.fixture; el cierre de runtime usó /list:situations contra la instalación autorizada (identidades que incluyen situations\Nur für Fortgeschrittene.osn, no ASCII)
/quiet, /serveUNAVAILABLEACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Flags de diagnóstico (/log, /logall, /omsi-logall, /verbose, /trace*)PARTIALSe transportan en DiagnosticsSpec; efecto limitado a la traza del host

Host de Windows y bandeja#

FuncionalidadEstadoEvidencia
Indicador de la bandeja (OmsiLaunchW.exe): icono en el área de notificación, estado, «End session» (finalizar la sesión) con confirmación y Cancel, reinicio del Explorador, cuadros de diálogo abiertos mientras llega una detención, detención durante /observe-seconds, cuadros de diálogo de error (S-16)RUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) sobre el candidato 3 (tras la corrección BUG-04): T01, sesión 6d827c13-caf8-4221-832a-c91d26f130e0 (icono encontrado en Shell_TrayWnd, ventana de estado en pt-BR, el reinicio del Explorador volvió a añadir el icono, Cancel mantuvo la sesión, End session la finalizó en 607 ms y quitó el icono); T02, sesión 0939a151-bf03-4ca9-8294-8b0088df7d30 (estado y confirmación abiertos durante una detención por la canalización); T03, sesión 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; T04, sesión 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (cuadros de diálogo de error de argumentos, de ausencia de sesión activa y de fallo de la sesión, con códigos). No se produjeron los códigos de salida 100-106 del shim.
Relanzamiento con /silent que devuelve 0 cuando el host se ha iniciadoRUNTIME_VALIDATEDRonda de cierre de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) T04, sesión 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (candidato 3, tras la corrección BUG-03): el lanzador devolvió 0 y un llamador que capturaba su salida recibió el fin de flujo tras 0.4 s mientras la sesión de OmsiLaunchW se ejecutaba sin ventana de consola; la sesión se detuvo con una restauración exacta
Códigos de salida 100-106 del shim del bootstrapper, búfer de ruta dinámico (S-21)STATICALLY_VALIDATEDTest-ReleaseIdentity.ps1

Nueva prueba de la auditoría de documentación (cierre de la documentación de 0.1.0-beta3)#

Paquete 9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17 en la instalación autorizada, con BUG-05, BUG-06, BUG-07 y la prueba de humo repetidos sobre el paquete final B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35 (sesión R01 56cdee4b-9160-49fc-b0fd-5134ff9fe2d0, sesión de captura para la documentación 40046805-5337-48fc-90dd-e7d3500ed3b4); evidencia en research/reports/documentation-audit/runtime/ y research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.

ElementoEstadoEvidencia
OmsiLaunchW.exe notifica un lanzamiento no ejecutable (BUG-06)RUNTIME_VALIDATED/new ... /date:2026-09-20 con OmsiLaunchW.exe: cuadro de diálogo Requested capability unavailable: world.explicit-date / Code: OL_E_CAPABILITY_UNAVAILABLE, salida 1, ningún proceso de OMSI (doc-bug06-dialog.json; paquete instalado 9f8cc87b...; por diseño no se crea ninguna sesión)
Las rutas de la CLI anunciadas son sintaxis real (BUG-07)RUNTIME_VALIDATEDTodas las alternativas de rutas de cliente mostradas por help --json y capabilities --json instalados (32 descriptores) fueron aceptadas por el analizador instalado; ninguna mostró el uso (doc-bug07-routes.json; paquete instalado 9f8cc87b...)
Todas las líneas de comandos de la página de ejemplos de la CLIRUNTIME_VALIDATED43 líneas de cliente ejecutadas contra la sesión propietaria 08df97b8-06cc-4faa-be8b-f49ca1538dce (situación guardada; se omitió events watch porque se ejecuta hasta Ctrl+C), terminando con el propio session stop de la página (salida del propietario 0). Todas coincidieron con la página salvo vehicle.constant.get con name=max_speed, una constante que ese autobús no tiene; la página usa ahora antrieb_getr_version. El ejemplo de perfil grundorf-quick no se planificaba (barras invertidas duplicadas en escalares YAML simples) y se corrigió; todas las líneas sin sesión se ejecutaron desde la raíz de la instalación, y las líneas de lanzamiento con /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json)
Prueba de humo NEW_MAP con /observe-seconds sobre el paquete finalRUNTIME_VALIDATEDR01, sesión 08570134-cfd8-4726-a472-5f6dd2f04c8f, estado final limpio (research/reports/runtime-closure/doc-R01-*)

Lista consolidada RUNTIME_VALIDATION_REQUIRED#

La ronda de cierre de runtime del 2026-09-23 cerró la cola anterior. Sigue vacía salvo por elementos que no pueden producirse de forma segura en esta instalación:

  1. Fase de juego, lecturas, comandos y detención con Steam LAA: necesitan una instalación genuina de Steam (entorno; la fila anterior es PARTIAL).
  2. Eliminación de RoadVehicle y Human de RV-002: no hay un productor seguro de eliminaciones (la fila anterior es PARTIAL).

Los elementos que siguen siendo offline porque no pueden producirse desde fuera del producto están marcados en sus filas y no forman parte de la cola: corrupción de respuestas del buzón, respuestas sobredimensionadas, truncado del historial de eventos, la transición D3D lost, el cierre de sesión de Windows, los códigos de salida 100-106 del shim y la rama diferida de recuperación previa a las huellas.

Relacionado: capacidades, limitaciones conocidas, transacciones y recuperación, compatibilidad.