Estado de la validación en runtime
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:
| Estado | Significado |
|---|---|
| RUNTIME_VALIDATED | Observado en una sesión canónica registrada en la matriz (se citan el id y la sesión). |
| STATICALLY_VALIDATED | Implementado y cubierto por pruebas offline (tools/OmsiLaunch.TestHost, tests/*), no observado en una sesión real desde el último cambio. |
| PARTIAL | Implementado, pero la evidencia está incompleta o es contradictoria, o se sabe que el comportamiento es limitado. |
| RUNTIME_VALIDATION_REQUIRED | El comportamiento cambió o nunca se observó; debe validarse en una sesión real antes de poder promoverse. |
| UNAVAILABLE | No implementado o rechazado deliberadamente. |
Ciclo de vida de la sesión y transacción#
| Funcionalidad | Estado | Evidencia |
|---|---|---|
Inicio headless de NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start) | RUNTIME_VALIDATED | Sección «Existing Runtime Evidence» de la matriz; sesiones e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf) |
Inicio de SAVED_SITUATION (world.saved-situation) | RUNTIME_VALIDATED | Nota de GetCapabilitiesAsync y matriz (Berlin-Spandau, formulario Start y Button1Click) |
Terminación forzada de session.stop y restauración exacta | RUNTIME_VALIDATED | Sesión 50a1f1ec: la detención normal no dejó ningún proceso de OMSI ni ningún diario |
Idempotencia del arranque (PluginStart repetido) | RUNTIME_VALIDATED | Sesión 50a1f1ec |
Overlay semántico de options.cfg y restauración exacta byte a byte (RV-005) | RUNTIME_VALIDATED | Sesión 1e8e0548: AIMaxCountRandom 150/200 más la cola conservada; hash restaurado A12982C3... |
| Splash gestionado más transacción del overlay (RV-006) | RUNTIME_VALIDATED | Matriz 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_VALIDATED | Sesiones 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_VALIDATED | Ronda 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_VALIDATED | La 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_VALIDATED | Las 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_VALIDATED | Ronda 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_VALIDATED | Ronda 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_VALIDATED | Ronda 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_VALIDATED | Ronda 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-seconds | RUNTIME_VALIDATED | Ronda 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 Windows | RUNTIME_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_CLOSE | UNAVAILABLE | No 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_VALIDATED | lease.cross-thread-release; límites documentados como riesgo aceptado (S-18) |
| Conservación de CP1252 al parchear archivos de OMSI (S-07) | RUNTIME_VALIDATED | Ronda 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_VALIDATED | Pruebas discovery.* |
| Retención de diagnósticos (las 50 sesiones más recientes) (S-26) | STATICALLY_VALIDATED | HostTrace.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_VALIDATED | transaction.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#
| Funcionalidad | Estado | Evidencia |
|---|---|---|
Perfil Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 bytes) | RUNTIME_VALIDATED | Todas las sesiones de la matriz |
Ejecutable Steam LAA (7DAB063D...D759) | PARTIAL | Cierre 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 runtime | lease.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ón | Test-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_VALIDATED | Sesió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_VALIDATED | Sesiones de la matriz; dos sesiones anteriores con plugin.build.invalid sobre un plugin obsoleto |
| Handoff v4 con SHA-256 | RUNTIME_VALIDATED | Pruebas de integración handoff.*; todas las sesiones |
| Plugin inerte sin OmsiLaunch (sin handoff) | RUNTIME_VALIDATED | Ronda 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_VALIDATED | Atributos del ensamblado |
| Detección de Windows 10+ x64 y rechazo de otras plataformas | STATICALLY_VALIDATED | CurrentWindowsX64Platform.Detect |
Canal de control de runtime y plano de control#
| Funcionalidad | Estado | Evidencia |
|---|---|---|
| Integridad del protocolo del buzón, vinculación a la sesión | RUNTIME_VALIDATED | Todas 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_VALIDATED | Sesió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_VALIDATED | Sesió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_VALIDATED | telemetry.sequence-samples |
El límite de la API rechaza internal.* y elimina las claves internas del resultado (S-02) | STATICALLY_VALIDATED | OmsiLaunchService.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_VALIDATED | runtime-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_VALIDATED | control-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 respuesta | RUNTIME_VALIDATED | Ronda 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 operaciones | Estado | Evidencia |
|---|---|---|
time.read, time.set | RUNTIME_VALIDATED | Sesión e5454061 (escritura, SetTime, relectura, restauración) |
weather.read, weather.actual.read | RUNTIME_VALIDATED | Sesión e5454061 |
weather.set | UNAVAILABLE | Rechazado con OL_E_RUNTIME_SETTING_NOT_PERSISTENT; persistencia FAIL en las sesiones e5454061 y 5f641c8d; rechazo PASS en 50a1f1ec |
map.read | RUNTIME_VALIDATED | Revalidado 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.set | RUNTIME_VALIDATED | Sesión e5454061 (escritura del FOV, relectura, restauración) |
camera.lock, camera.unlock | RUNTIME_VALIDATED | Ronda 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.read | RUNTIME_VALIDATED | Sesiones e5454061, 5f641c8d |
| Vida útil de los handles de RoadVehicle y detección de handles obsoletos (RV-002) | PARTIAL | No 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_VALIDATED | Sesión 5f641c8d: 2 -> 3, rv-000003 resuelto |
road-vehicles.place-random | RUNTIME_VALIDATED | Matriz: colección 2 -> 4 |
player-vehicle.read | RUNTIME_VALIDATED | Ronda 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.read | RUNTIME_VALIDATED | Sesión e5454061 |
timetable.read, timetable.*.list, timetable.logs.read | RUNTIME_VALIDATED | Sesió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_VALIDATED | Nueva 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.read | RUNTIME_VALIDATED | Sesión e5454061 |
vehicle.variables.list, vehicle.variable.get, vehicle.variable.set | RUNTIME_VALIDATED | Refresh_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.get | RUNTIME_VALIDATED (solo lectura) | Sesión e5454061; escrituras BI-004 UNAVAILABLE |
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.read | RUNTIME_VALIDATED | Sesión e5454061 |
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rechazo de handles liberados | RUNTIME_VALIDATED | Secció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 watch | RUNTIME_VALIDATED | Todas las sesiones (ciclo de vida guiado por la telemetría) |
internal.road-vehicles.make-basic | INTERNAL | Inalcanzable a través de las superficies públicas |
Funcionalidades de lanzamiento#
| Funcionalidad | Estado | Evidencia |
|---|---|---|
/set y settings del perfil (configuration.options.semantic) | RUNTIME_VALIDATED | RV-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_VALIDATED | Pruebas cli.* |
Splash gestionado PTB/ENG/DEU/FRA | RUNTIME_VALIDATED | RV-006 |
Texturas de Internet Disabled (supresión del descargador dentro del proceso) | STATICALLY_VALIDATED | Ruta 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ón | STATICALLY_VALIDATED | presentation.itx-target-root-normalization, presentation.itx-target-guard-rejections |
Texturas de Internet Override | RUNTIME_VALIDATED | Ronda 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) | UNAVAILABLE | El 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) | PARTIAL | Plan no ejecutable (RUNTIME_PARTIAL) |
/last (LastMapState, BI-006) | UNAVAILABLE | UNSUPPORTED_FOR_CURRENT_PROFILE |
Overlays de teclado y controladores de InputSpec (BI-005) | UNAVAILABLE | Los 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) | UNAVAILABLE | Bloqueado hasta que se complete la implementación |
Descubrimiento con /list (content.*) | STATICALLY_VALIDATED; observado en runtime | discovery.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, /serve | UNAVAILABLE | ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT |
Flags de diagnóstico (/log, /logall, /omsi-logall, /verbose, /trace*) | PARTIAL | Se transportan en DiagnosticsSpec; efecto limitado a la traza del host |
Host de Windows y bandeja#
| Funcionalidad | Estado | Evidencia |
|---|---|---|
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_VALIDATED | Ronda 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 iniciado | RUNTIME_VALIDATED | Ronda 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_VALIDATED | Test-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.
| Elemento | Estado | Evidencia |
|---|---|---|
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_VALIDATED | Todas 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 CLI | RUNTIME_VALIDATED | 43 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 final | RUNTIME_VALIDATED | R01, 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:
- Fase de juego, lecturas, comandos y detención con Steam LAA: necesitan una instalación genuina de Steam (entorno; la fila anterior es
PARTIAL). - 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.