Estado da validação em runtime

Documentação da versão v0.1.0-beta.3Ver código-fonte no GitHub

Tradução da página original em inglês do OmsiLaunch 0.1.0-beta3. A página em inglês é a referência normativa: em caso de divergência, prevalecem a página em inglês e o código.

Esta página é a tabela única de evidências do OmsiLaunch 0.1.0-beta3. Cada linha indica uma capacidade ou funcionalidade e o respetivo estado de evidência. RUNTIME_VALIDATED pode citar research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (ids da matriz RV-nnn, bloqueios BI-nnn, ids de sessão da sua tabela de execução de 2026-09-20) ou o relatório da Ronda A pós-Fable research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn); tudo o resto é derivado do código e dos conjuntos de testes offline. A ronda de robustecimento de 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, constatações S-01 a S-34) alterou o comportamento do restauro, da recuperação, do plano de controlo e das fronteiras; essas alterações tinham apenas evidência offline. A ronda final de fecho de runtime de 2026-09-23 (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md, ids de cenário como F01, S05, T01, candidatos 2 e 3) executou-as em sessões reais na instalação autorizada; as linhas promovidas por essa ronda citam os respetivos ids de cenário e ids de sessão. Assim, RUNTIME_VALIDATED pode também citar esse relatório.

Estados de evidência:

EstadoSignificado
RUNTIME_VALIDATEDObservado numa sessão canónica registada na matriz (id e sessão citados).
STATICALLY_VALIDATEDImplementado e coberto por testes offline (tools/OmsiLaunch.TestHost, tests/*), não observado numa sessão real desde a última alteração.
PARTIALImplementado, mas a evidência está incompleta ou é contraditória, ou sabe-se que o comportamento é limitado.
RUNTIME_VALIDATION_REQUIREDO comportamento mudou ou nunca foi observado; tem de ser validado numa sessão real antes de poder ser promovido.
UNAVAILABLENão implementado ou deliberadamente rejeitado.

Ciclo de vida da sessão e transação#

FuncionalidadeEstadoEvidência
Início headless de NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start)RUNTIME_VALIDATEDSecção "Existing Runtime Evidence" da matriz; sessões e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf)
Início de SAVED_SITUATION (world.saved-situation)RUNTIME_VALIDATEDNota de GetCapabilitiesAsync e matriz (Berlin-Spandau, formulário Start e Button1Click)
Terminação forçada por session.stop e restauro exatoRUNTIME_VALIDATEDSessão 50a1f1ec: a paragem normal não deixou nenhum processo do OMSI nem journal
Idempotência do arranque (PluginStart repetido)RUNTIME_VALIDATEDSessão 50a1f1ec
Overlay semântico de options.cfg e restauro exato ao byte (RV-005)RUNTIME_VALIDATEDSessão 1e8e0548: AIMaxCountRandom 150/200 mais a cauda preservada; hash restaurado A12982C3...
Splash gerido mais transação de overlay (RV-006)RUNTIME_VALIDATEDMatriz RV-006 PASS (lote de apresentação: gerido predefinido, gerido personalizado, Unset); sessões da Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb
Recuperação após saída prematura (RV-008, terminação forçada do OMSI)RUNTIME_VALIDATEDSessões da Ronda A pós-Fable 9e7cad79-9c35-4f93-bfc8-71f455513f82 (após o jogo) e dcac497e-ff35-4c97-b5e4-98b660f88032 (após world.starting, antes do jogo): o proprietário concluiu, o journal e o lease foram limpos, e options.cfg e o estado do splash originalmente ausente coincidiram com os snapshots. A falha nativa de arranque e a injeção de restauro falhado continuam separadas.
Fronteiras de falha de arranque e de restauro deliberadamente falhado (restante de RV-008)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): o timeout de arranque SF01 na sessão 0b21c664-b0b2-46b2-9b6b-def536765fff e a falha do mundo comunicada pelo plugin SF02 na sessão 53358c75-469b-41d5-9ddb-cdb1d1ff828d terminaram em Failed com códigos tipados e um restauro exato; o restauro falhado F01 na sessão d4194a69-d858-42fe-97c7-ce93ccbdc3f6 (um ficheiro pertencente à sessão bloqueado por um processo exclusivo de teste durante a paragem) devolveu OL_E_RESTORE_FAILED, manteve o journal e a cópia de segurança, e /recover restaurou exatamente o estado anterior à sessão. Os produtores de falhas são apenas infraestrutura de teste.
Restauro de artefactos da sessão para alvos .itx e Texture\standard.ipr (S-01)RUNTIME_VALIDATEDA Ronda A restaurou caminhos existentes em 47efd323-4ce1-400a-ac83-74893cf82f26; criou e removeu um alvo registado e originalmente ausente na paragem normal em 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b; e repetiu essa limpeza através da interrupção do proprietário mais /recover em aa9a45d4-302e-4cf5-8490-f5a1c9e44b79.
closecheck como eliminação da sessão e remoção de marcador obsoleto (S-13)RUNTIME_VALIDATEDSessões da Ronda A, incluindo 47efd323-4ce1-400a-ac83-74893cf82f26, registaram closecheck.stale-removed seguido de restore.session-artifact-removed; não ficou nenhum journal.
Recuperação antecipada antes da construção do overlay, recuperação diferida anterior à impressão digital (S-05)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05: o proprietário da sessão f755ed51-b85c-4df2-b062-5bf65c768b32 foi terminado com um journal pendente (maxFPS=77 ativo); o início seguinte, sessão 291ea22b-f9b3-42a4-be07-7f0c055c7113, registou PENDING_JOURNAL_RECOVERED antes de TRANSACTION_STARTED, executou com o seu próprio overlay (88) e terminou idêntico ao byte ao estado anterior à primeira sessão. O ramo diferido anterior à impressão digital permanece offline (transaction.legacy-journal-ownership-migration).
Restauro de metadados (carimbos temporais, atributos, só de leitura), flush write-through, limpeza das cópias de segurança (S-12)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S12a sessão 40de172b-e144-4f0a-9207-09c80b5d7df7 (carimbo temporal conhecido de options.cfg) e S12b sessão d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (carimbo temporal mais ReadOnly): o overlay esteve ativo durante a sessão (ReadOnly removido para o OMSI), e os bytes, a hora da última escrita, a hora de criação e os atributos foram restaurados exatamente; não ficou nenhum diretório de cópias de segurança.
/recover sob o lease da instalação; recusa na janela anterior ao PID (S-04)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S04 sessão 1fb2aad5-2985-4fa4-9c5a-6186f51d37b8: com um proprietário ativo, /recovery-status e /recover devolveram OL_E_INSTALLATION_BUSY e um segundo início foi recusado; com o proprietário terminado e o OMSI ainda em execução, /recover e um novo início foram recusados até o OMSI sair, e depois /recover restaurou exatamente. S04b sessão 5e57ca51-ab5e-4e94-a0d0-531735ee4057: um journal anterior ao PID (injeção de falhas pelo harness) foi recusado enquanto qualquer Omsi.exe estava a executar a partir da raiz e recuperado após a saída; um closecheck escrito por esse OMSI é mantido com OL_W_RESTORE_FOREIGN_FILE_RETAINED (documentado, conservador).
Novo planeamento em StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE num plano obsoleto (S-15)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02: com um plugin listado no manifesto retirado após o planeamento, StartSessionAsync lançou OL_E_PLAN_NOT_RUNNABLE: OL_E_PERMANENT_PLUGIN_MISSING antes de existir qualquer sessão (plano 4797c9ce-6eb3-47b1-b09d-03562dd3bd44, candidato 2, após a correção BUG-01)
Ciclo de vida do proprietário: paragem por pipe, Ctrl+C, paragem pela área de notificação, saída do OMSI, proprietário terminado, /observe-secondsRUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): paragem por pipe durante /observe-seconds L06 sessão 300a563e-7b0e-4f01-afbd-9e15df32c7e6; Ctrl+C L03 sessão 5e2aca54-bae2-4fc6-a106-93699e755bfc (o proprietário terminou 577 ms após o sinal); OMSI terminado L05a sessão d69658f9-16f6-43e9-8e36-682114b97e14; janela principal do OMSI fechada L05b sessão 76b11ba4-8ddb-4611-9a1c-8be317cd0337 (o OMSI ignora WM_CLOSE; terminado por kill); paragem pela área de notificação T01/T03 sessões 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; proprietário terminado S05. Todos os caminhos terminaram com um restauro exato. Com o proprietário terminado sem mais, Omsi.exe continua a executar (por conceção); a recuperação é recusada até que saia (S04).
Orçamento de 4 s do ProcessExit ao fechar a consola ou ao terminar a sessão do WindowsRUNTIME_VALIDATED (fecho da consola)Ronda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04 sessão 559d0f1d-7d5b-4b6b-b70c-0acb272d53db: janela da consola fechada; o restauro concluiu dentro do orçamento, a sessão chegou a Completed sem journal; o Windows terminou o proprietário cerca de 5 s após o fecho (saída 0xC000013A). O fim de sessão do Windows (logoff) não foi exercitado.
Encerramento cooperativo por WM_CLOSEUNAVAILABLENão implementado (decisão de produto, S-11). Fecho de runtime L05b: o OMSI não fechou nos 30 s seguintes a WM_CLOSE enviado à sua janela principal. ShutdownTimeoutSeconds não é consumido.
Semântica do lease da instalação (semáforo Local\)STATICALLY_VALIDATEDlease.cross-thread-release; limites documentados como risco aceite (S-18)
Preservação de CP1252 ao alterar ficheiros do OMSI (S-07)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) C01 sessão 84a71235-d618-4917-9af4-c2a6025742f4: options.cfg com um valor CP1252 acentuado (incluindo 0x80 e 0x96) alterado por /set; o ficheiro ativo manteve os bytes CP1252 sem EF BF BD, e o ficheiro ficou idêntico ao byte após a sessão
Descoberta de conteúdos que ignora pontos de reanálise (reparse points) (S-23)STATICALLY_VALIDATEDTestes discovery.*
Retenção de diagnósticos (as 50 sessões mais recentes) (S-26)STATICALLY_VALIDATEDHostTrace.Prune
Bloqueios transitórios de ficheiros (antivírus, indexador) em escritas e eliminações da transação repetidos durante cerca de 1,5 s; os bloqueios persistentes continuam a falhar (passagem de correção CP-10)STATICALLY_VALIDATEDtransaction.transient-lock-retried, transaction.restore-failure-recovery (o bloqueio persistente continua a falhar); duas falhas offline intermitentes observadas antes da correção, nenhuma em 16 execuções depois

Plugin permanente e plataforma#

FuncionalidadeEstadoEvidência
Perfil Omsi23004_692EBFBF (692EBFBF...6243, 8.503.440 bytes)RUNTIME_VALIDATEDTodas as sessões da matriz
Executável Steam LAA (7DAB063D...D759)PARTIALFecho de runtime LAA01 sessão 9ec975ca-7820-47be-b806-5f5a94aad4ab: uma cópia controlada (derivada do original não alterado da instalação com IMAGE_FILE_LARGE_ADDRESS_AWARE e um checksum PE recalculado; 8.503.440 bytes, características 0x81AE) coincidiu com o hash, a impressão digital foi aceite e o plano era executável. A imagem é o executável Steam original protegido por DRM: fora de uma instalação Steam genuína, passa o controlo ao cliente Steam e sai, pelo que a sessão falhou com OL_E_PROCESS_EXITED_EARLY e um restauro exato. O jogo, as leituras, os comandos e a paragem exigem uma instalação Steam genuína (ENVIRONMENT).
Identidade da instalação: o lease e o nome do pipe de controlo derivam de uma única definição, InstallationPaths.IdentityKey (C:\OMSI = C:\OMSI\ = C:\OMSI\. = C:\foo\..\OMSI = variantes de maiúsculas/minúsculas; C:\OMSI-A difere de C:\OMSI-B) (passagem de correção CP-02, adenda A/B)STATICALLY_VALIDATED; observado em runtimelease.root-normalization, paths.installation-identity-and-containment. Fecho de runtime ID01: enquanto a sessão 01bfc780-10ef-4390-b700-c08bf809a42f estava a executar, segundos inícios e /recovery-status com a raiz escrita com \., um segmento .., em minúsculas e em maiúsculas foram recusados (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY); o mesmo com o separador final (ID01b, sessão ba3ea7c9-9826-453d-b447-81c48763e18f).
Coerência do pacote de lançamento: staging limpo, recibo de build de Native.x86 (conteúdo, não carimbo temporal), manifesto sem BOM, integridade do conjunto preparado e do ficheiro compactado reextraído, o instalador copia o manifesto (passagem de correção CP-01, Ronda A RA-007, adenda F/G/H)STATICALLY_VALIDATED; observado na instalaçãoTest-PackagingPipeline.ps1 (candidato coerente mais 16 casos negativos), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Fecho de runtime: os pacotes instalados na instalação autorizada eram coerentes com os seus manifestos, e todas as sessões foram planeadas com plugin.integrity.reference = manifest (registo de candidatos research/reports/runtime-closure/CANDIDATES.md).
Integridade do conjunto do plugin face a release-manifest.json (S-09)RUNTIME_VALIDATEDSessão da Ronda A 47efd323-4ce1-400a-ac83-74893cf82f26; sessões do fecho de runtime em pacotes de lançamento instalados (por exemplo R01 sessão 878b5e3c-2f9d-46bf-a918-11bb2e227e55, candidato 3) planeadas com plugin.integrity.reference = manifest; R02 mostrou que um plugin listado em falta bloqueia o início.
Validação da build dentro do processo (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED)RUNTIME_VALIDATEDSessões da matriz; duas sessões anteriores plugin.build.invalid com um plugin desatualizado
Handoff v4 com SHA-256RUNTIME_VALIDATEDTestes de integração handoff.*; todas as sessões
Plugin inerte sem o OmsiLaunch (sem handoff)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) P01 (início simples do OMSI, sem sessão do OmsiLaunch; pid do OMSI 35564): o conjunto do plugin e o host .NET foram carregados, OmsiLaunch.Native.x86.dll não foi carregado, os três pontos de patch nativos mantiveram os bytes não alterados de Omsi.exe, e não apareceu nenhum pipe de controlo, journal nem diagnóstico
Política de pesquisa de DLL (AssemblyDirectory | System32) (S-24)STATICALLY_VALIDATEDAtributos do assembly
Deteção de Windows 10+ x64 e rejeição de outras plataformasSTATICALLY_VALIDATEDCurrentWindowsX64Platform.Detect

Canal de controlo de runtime e plano de controlo#

FuncionalidadeEstadoEvidência
Integridade da comunicação da mailbox, associação à sessãoRUNTIME_VALIDATEDTodas as sessões de runtime; runtime-command.wire-guard, runtime-command.session-binding
Descarte de respostas tardias e nenhum bloqueio do canal após timeout (S-08)RUNTIME_VALIDATEDSessão da Ronda A 173414a5-ee53-4b10-aeb7-046f40b851e9: um cliente externo abandonou road-vehicles.spawn após 250 ms; um map.read posterior foi bem-sucedido e a paragem canónica limpou a sessão. A rejeição de respostas demasiado grandes continua coberta apenas offline.
Plano de controlo local: nome de pipe por instalação, associação por session_id, erros tipados do handler, limite de 64 KiB (S-06)RUNTIME_VALIDATEDSessão da Ronda A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf: protocolo inválido, paragem não associada, pedido de runtime da sessão errada e frame demasiado grande foram rejeitados; um pedido de estado válido e uma paragem associada seguintes foram bem-sucedidos. A rejeição de respostas demasiado grandes continua coberta apenas offline.
Slot de sequência da telemetria, omissão de amostras rasgadas, eventos consecutivos idênticos (S-25)STATICALLY_VALIDATEDtelemetry.sequence-samples
A fronteira da API rejeita internal.* e remove chaves internas dos resultados (S-02)STATICALLY_VALIDATEDOmsiLaunchService.ExecuteRuntimeAsync; validação do registo
Uma resposta inválida ou demasiado grande da mailbox liberta o slot; o pedido seguinte é bem-sucedido (passagem de correção CP-03)STATICALLY_VALIDATEDruntime-command.oversized-response-rejected; do lado do plugin plugin-runtime.oversized-and-abandoned-responses. Não é possível produzi-lo em runtime: nenhuma operação pública devolve mais do que um slot (a maior cerca de 37,8 KB, fecho de runtime R03).
Todos os caminhos terminais de um pedido de runtime deixam a mailbox reutilizável: rejeição tipada, timeout, cancelamento pelo chamador, id de pedido reutilizado, operação interna, sessão errada, argumento em falta (runtime); respostas malformadas, demasiado grandes, corrompidas, obsoletas e órfãs (offline)RUNTIME_VALIDATED (caminhos alcançáveis)Ronda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03 sessão 1134fdc3-a469-4ff5-a511-9964ed65e7cd: cada falha foi tipada e o pedido válido seguinte foi bem-sucedido. Os caminhos de corrupção de respostas não podem ser produzidos a partir do exterior e permanecem offline (runtime-command.terminal-paths-leave-channel-usable).
Resposta demasiado grande do plano de controlo respondida como OL_E_CONTROL_RESPONSE_TOO_LARGE; estado/eventos reduzidos a partir dos mais antigos até caberem num frame (passagem de correção CP-04)STATICALLY_VALIDATEDcontrol-plane.binding-and-typed-errors. Não é possível produzi-lo em runtime: a maior resposta pública observada na ronda de fecho de runtime tinha cerca de 37,8 KB (R03), e o histórico de eventos de uma sessão fica muito abaixo de um frame.
O plano de controlo nunca fica em silêncio depois de ligado: frames malformados, demasiado grandes, de comprimento negativo, vazios, JSON null, sem comando, com argumento não textual, de protocolo inválido, de comando desconhecido, não associados e de sessão errada; frames de cliente truncados; clientes bloqueados; clientes que saem antes da respostaRUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R04 sessão faaaf8a8-126d-4a23-a8f3-381e47c58de6 (candidato 2, após a correção BUG-02): cada frame recebeu o seu erro tipado, seguido de um session.status bem-sucedido; um cliente bloqueado não bloqueou os outros; uma paragem associada em concorrência com um road-vehicles.spawn em curso terminou a sessão e o chamador do spawn recebeu um fim de fluxo limpo. OL_E_TIMEOUT e os metadados de truncagem permanecem offline (control-plane.errors-never-silent).
Harnesses de lotes de runtime (/runtime-batch, /runtime-write-batch, /d3d-batch)INTERNAL (STATICALLY_VALIDATED)Apenas harness de validação (S-27)

Operações de runtime#

Operação(ões)EstadoEvidência
time.read, time.setRUNTIME_VALIDATEDSessão e5454061 (escrita, SetTime, releitura, restauro)
weather.read, weather.actual.readRUNTIME_VALIDATEDSessão e5454061
weather.setUNAVAILABLERejeitado com OL_E_RUNTIME_SETTING_NOT_PERSISTENT; persistência FAIL nas sessões e5454061 e 5f641c8d; rejeição PASS em 50a1f1ec
map.readRUNTIME_VALIDATEDRevalidado após a correção do slot global do Map na sessão 9dd62626-94c6-4cd7-bb6f-0288327696f4: loaded=true, 19 tiles, identidade de Grundorf, nome do ficheiro, descrição e intervalo de anos coerentes.
camera.read, camera.setRUNTIME_VALIDATEDSessão e5454061 (escrita do FOV, releitura, restauro)
camera.lock, camera.unlockRUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01 sessão 5dfd9b96-fa94-4060-85af-0c9d19823a73: a situação guardada Linie 5 forneceu um PlayerVehicle (rv-000001); os bloqueios nas famílias 0, 2 e 1 foram confirmados por releitura da câmara; o desbloqueio libertou a política
road-vehicles.read, road-vehicles.list, road-vehicle.readRUNTIME_VALIDATEDSessões e5454061, 5f641c8d
Tempo de vida dos handles de RoadVehicle e deteção de handles obsoletos (RV-002)PARTIALNão há produtor seguro de remoção: em três janelas do fecho de runtime (H01, H01b, H01c, até 180 s, com um salto de relógio) as populações de RoadVehicle e Human de Grundorf apenas cresceram; nenhuma operação pública remove um objeto. A deteção de handles obsoletos continua coberta offline (S-19). A regra de geração/ABA está validada em runtime para texturas D3D (H02).
road-vehicles.spawn (RV-003)RUNTIME_VALIDATEDSessão 5f641c8d: 2 -> 3, rv-000003 resolvido
road-vehicles.place-randomRUNTIME_VALIDATEDMatriz: coleção 2 -> 4
player-vehicle.readRUNTIME_VALIDATEDRonda A RA-002 sessão 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false); fecho de runtime CAM01 sessão 5dfd9b96-fa94-4060-85af-0c9d19823a73 leu um PlayerVehicle presente a partir de uma situação guardada
humans.read, humans.list, human.readRUNTIME_VALIDATEDSessão e5454061
timetable.read, timetable.*.list, timetable.logs.readRUNTIME_VALIDATEDSessão e5454061; entradas de trajeto: 91 registos
Truncagem de listas limitadas em vez de OL_E_RUNTIME_RESPONSE_TOO_LARGE (auditoria de documentação BUG-05)RUNTIME_VALIDATEDNovo teste da auditoria de documentação no pacote 9F8CC87B..., situação guardada situations\Linie 5.osn (Berlin-Spandau): timetable.track-entries.list devolveu 137 de 825 entradas e timetable.tour-entries.list 224 de 4747 com truncated=true (sessões 08df97b8-06cc-4faa-be8b-f49ca1538dce e o novo teste de captura para a documentação); antes da correção, ambas falhavam com OL_E_RUNTIME_RESPONSE_TOO_LARGE (sessão f51dcb59-a723-4570-b6c5-b61e628a7993). Evidência: research/reports/documentation-audit/runtime/.
drivers.read, tickets.readRUNTIME_VALIDATEDSessão e5454061
vehicle.variables.list, vehicle.variable.get, vehicle.variable.setRUNTIME_VALIDATEDRefresh_Strings 0 -> 1 -> 0 na sessão de runtime registada como Runtime-Proven em research/reports/OmsiHook-Parity-Wave-A-Closure-001.md (1.025 nomes enumerados, segundo OMSILAUNCH-AUTONOMOUS-BUILD-001.md); o relatório não regista o id da sessão
vehicle.string-variables.list, vehicle.string-variable.getRUNTIME_VALIDATED (apenas leitura)Sessão e5454061; escritas BI-004 UNAVAILABLE
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.readRUNTIME_VALIDATEDSessão e5454061
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rejeição de handles libertadosRUNTIME_VALIDATEDSecção "basic D3D texture lifecycle" da matriz; notas das capacidades runtime.d3d.* (sessão 4378899d para o slot do dispositivo)
Eventos de perda / reposição / restauro do dispositivo D3D, invalidação por geração (RV-007)RUNTIME_VALIDATED (resetting/restored)Ronda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) D01 sessão fc07946e-58dd-4ddc-af7e-10c7e61a899a: uma alteração temporária do modo de ecrã (produtor de teste, nunca público, sem chamada de reset sintética) fez o OMSI repor o seu dispositivo duas vezes. Foram emitidos d3d.resetting/d3d.restored, a geração avançou em cada ciclo, um pedido durante a reposição recebeu OL_E_D3D_RESET_IN_PROGRESS, a textura anterior à perda foi rejeitada com OL_E_D3D_STALE_RESOURCE_HANDLE e as novas texturas funcionaram. O OMSI passou diretamente a DEVICENOTRESET, pelo que não foi produzida uma transição lost distinta. Uma tentativa fez o OMSI falhar em DSound.dll (alteração do endpoint de áudio do ecrã; o proprietário restaurou exatamente).
events.read / events watchRUNTIME_VALIDATEDTodas as sessões (ciclo de vida orientado pela telemetria)
internal.road-vehicles.make-basicINTERNALInalcançável através das superfícies públicas

Funcionalidades de lançamento#

FuncionalidadeEstadoEvidência
/set e settings do perfil (configuration.options.semantic)RUNTIME_VALIDATEDRV-005
Perfis de sessão (compilador estrito, conflitos, confinamento de caminhos incl. pontos de reanálise S-17)RUNTIME_VALIDATED (âmbito do início por perfil)Ronda A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22: splash gerido, Internet Textures desativado e predefinição graphics.maxFPS=30; options.cfg restaurado, fixture intacta, sem journal/lease/processo.
Carregamento de /spec (limite de 1 MiB, propriedades desconhecidas rejeitadas, timeouts respeitados) (S-20)STATICALLY_VALIDATEDTestes cli.*
Splash gerido PTB/ENG/DEU/FRARUNTIME_VALIDATEDRV-006
Internet Textures Disabled (supressão do downloader dentro do processo)STATICALLY_VALIDATEDCaminho de telemetria internet-textures.suppressed; não citado na matriz
Proteção de alvos .itx do Internet Textures (Ronda A RA-011/RA-012, passagem de correção CP-05, adenda E): raiz canónica, alvo canónico, caminho relativo, regras de segmentos; só se qualifica um segmento de diretório chamado texture abaixo da raiz (mytexture, texture_backup, texture2 e texture na raiz absoluta não se qualificam); alvos com travessia, absolutos, relativos à raiz e junções são rejeitados; as diferentes grafias reduzem-se a um único caminho canónico da transaçãoSTATICALLY_VALIDATEDpresentation.itx-target-root-normalization, presentation.itx-target-guard-rejections
Internet Textures OverrideRUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): I01 sessão 6eac2dac-c7e9-49a1-acbf-2a5d59c1c0d3: o downloader do OMSI enviou HEAD e GET a um servidor de loopback para um alvo existente e para um alvo originalmente ausente, escreveu ambos, e após a paragem canónica o alvo ausente foi removido e o existente restaurado exatamente ao byte; I02 sessão a8f2b720-e41a-4e34-86bf-125bf519a5bd: o mesmo depois de o proprietário e o OMSI terem sido terminados, através de /recover.
/date, /time, /year, flags de meteorologia, flags do veículo do jogador (STATICALLY_PARTIAL)UNAVAILABLEO planeador marca o plano como não executável (OL_E_CAPABILITY_UNAVAILABLE); o plugin rejeita modos de data/hora diferentes de Unset
/entrypoint:<identity> (BI-001)PARTIALPlano não executável (RUNTIME_PARTIAL)
/last (LastMapState, BI-006)UNAVAILABLEUNSUPPORTED_FOR_CURRENT_PROFILE
Overlays de teclado/controlador de InputSpec (BI-005)UNAVAILABLEOs parsers existem; não são aplicados
Atribuição headless do PlayerVehicle (BI-007), SetActualDateTime (BI-002), controlo da meteorologia ICAO (BI-003), escritas de variáveis de texto (BI-004), relocalização entre tiles (BI-008)UNAVAILABLEBloqueado até a implementação ser concluída
Descoberta com /list (content.*)STATICALLY_VALIDATED; observado em runtimediscovery.fixture; o fecho de runtime usou /list:situations na instalação autorizada (identidades incluindo a não ASCII situations\Nur für Fortgeschrittene.osn)
/quiet, /serveUNAVAILABLEACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT
Flags de diagnóstico (/log, /logall, /omsi-logall, /verbose, /trace*)PARTIALTransportadas em DiagnosticsSpec; efeito limitado ao trace do host

Host Windows e área de notificação#

FuncionalidadeEstadoEvidência
Indicador na área de notificação (OmsiLaunchW.exe): ícone na área de notificação, estado, "End session" com confirmação e Cancel, reinício do Explorador, caixas de diálogo abertas quando chega uma paragem, paragem durante /observe-seconds, caixas de diálogo de falha (S-16)RUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) no candidato 3 (após a correção BUG-04): T01 sessão 6d827c13-caf8-4221-832a-c91d26f130e0 (ícone encontrado em Shell_TrayWnd, janela de estado em pt-BR, o reinício do Explorador voltou a adicionar o ícone, Cancel manteve a sessão, End session terminou-a em 607 ms e removeu o ícone); T02 sessão 0939a151-bf03-4ca9-8294-8b0088df7d30 (estado e confirmação abertos durante uma paragem por pipe); T03 sessão 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; T04 sessão 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (caixas de diálogo de erro de argumento, de ausência de sessão ativa e de falha da sessão com códigos). Os códigos de saída do shim 100-106 não foram produzidos.
Relançamento com /silent a devolver 0 quando o host iniciouRUNTIME_VALIDATEDRonda de fecho de runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) T04 sessão 8ddc4cc9-3089-4c0c-b062-f0c526ce0e4a (candidato 3, após a correção BUG-03): o lançador devolveu 0 e um chamador que capturava a sua saída recebeu o fim do fluxo após 0,4 s, enquanto a sessão do OmsiLaunchW executava sem janela de consola; a sessão parou com um restauro exato
Códigos de saída 100-106 do shim de arranque, buffer de caminho dinâmico (S-21)STATICALLY_VALIDATEDTest-ReleaseIdentity.ps1

Novo teste da auditoria de documentação (fecho da documentação da 0.1.0-beta3)#

Pacote 9F8CC87B238A677F7238C262E8FE0496832263B6C0A58083409EB485C03C6F17 na instalação autorizada, com BUG-05, BUG-06, BUG-07 e o smoke test repetidos no pacote final B8462ED6C596843E778C33DF4E93EBA3ACC875B7E43B011D60E5A21A16032E35 (R01 sessão 56cdee4b-9160-49fc-b0fd-5134ff9fe2d0, sessão de captura para a documentação 40046805-5337-48fc-90dd-e7d3500ed3b4); evidência em research/reports/documentation-audit/runtime/ e research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.

ItemEstadoEvidência
OmsiLaunchW.exe comunica um lançamento não executável (BUG-06)RUNTIME_VALIDATED/new ... /date:2026-09-20 sob OmsiLaunchW.exe: caixa de diálogo Requested capability unavailable: world.explicit-date / Code: OL_E_CAPABILITY_UNAVAILABLE, saída 1, nenhum processo do OMSI (doc-bug06-dialog.json; pacote instalado 9f8cc87b..., nenhuma sessão é criada, por conceção)
As rotas da CLI anunciadas são sintaxe real (BUG-07)RUNTIME_VALIDATEDTodas as alternativas de rotas de cliente impressas por help --json e capabilities --json instalados (32 descritores) foram aceites pelo parser instalado; nenhuma imprimiu a ajuda de utilização (doc-bug07-routes.json; pacote instalado 9f8cc87b...)
Todas as linhas de comando da página de exemplos da CLIRUNTIME_VALIDATED43 linhas de cliente executadas contra a sessão do proprietário 08df97b8-06cc-4faa-be8b-f49ca1538dce (situação guardada; events watch foi omitido porque executa até Ctrl+C), terminando com o próprio session stop da página (saída do proprietário 0). Todas coincidiram com a página, exceto vehicle.constant.get com name=max_speed, uma constante que esse autocarro não tem; a página usa agora antrieb_getr_version. O exemplo de perfil grundorf-quick não foi planeado (barras invertidas duplicadas em escalares YAML simples) e foi corrigido; todas as linhas sem sessão foram executadas a partir da raiz da instalação, as linhas de lançamento com /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json)
Smoke test NEW_MAP com /observe-seconds no pacote finalRUNTIME_VALIDATEDR01 sessão 08570134-cfd8-4726-a472-5f6dd2f04c8f, estado final limpo (research/reports/runtime-closure/doc-R01-*)

Lista consolidada de RUNTIME_VALIDATION_REQUIRED#

A ronda de fecho de runtime de 2026-09-23 fechou a fila anterior. Esta permanece vazia, exceto para os itens que não podem ser produzidos de forma segura nesta instalação:

  1. Jogo, leituras, comandos e paragem com Steam LAA: exigem uma instalação Steam genuína (ambiente; a linha acima está como PARTIAL).
  2. Remoção de RoadVehicle e Human em RV-002: não há produtor seguro de remoção (a linha acima está como PARTIAL).

Os itens que permanecem offline por não poderem ser produzidos a partir do exterior do produto estão assinalados nas respetivas linhas e não fazem parte da fila: corrupção de respostas da mailbox, respostas demasiado grandes, truncagem do histórico de eventos, a transição D3D lost, o fim de sessão do Windows (logoff), os códigos de saída do shim 100-106 e o ramo diferido de recuperação anterior à impressão digital.

Relacionado: capacidades, limitações conhecidas, transações e recuperação, compatibilidade.