Status da validação em runtime
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: se as duas divergirem, valem 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 estado da sua evidência. RUNTIME_VALIDATED pode citar tanto research/reports/OMSILAUNCH-RUNTIME-VALIDATION-MATRIX.md (ids de matriz RV-nnn, bloqueadores BI-nnn, ids de sessão da sua tabela de execução de 2026-09-20) quanto o relatório pós-Fable da Rodada A research/reports/OMSILAUNCH-RUNTIME-VALIDATION-ROUND-A-001.md (RA-nnn); todo o restante é derivado do código e das suítes de testes offline. A rodada de hardening de 2026-09-21 (research/reports/OMSILAUNCH-SECURITY-ROBUSTNESS-REVIEW-001.md, achados S-01 a S-34) alterou o comportamento de restauração, recuperação, plano de controle e fronteiras; essas alterações tinham apenas evidência offline. A rodada final de fechamento em 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) as executou em sessões reais na instalação autorizada; as linhas promovidas por essa rodada citam seus ids de cenário e ids de sessão. Portanto, RUNTIME_VALIDATED também pode citar esse relatório.
Estados de evidência:
| Estado | Significado |
|---|---|
| RUNTIME_VALIDATED | Observado em uma sessão canônica registrada na matriz (id e sessão citados). |
| STATICALLY_VALIDATED | Implementado e coberto por testes offline (tools/OmsiLaunch.TestHost, tests/*), não observado em uma sessão real desde a última alteração. |
| PARTIAL | Implementado, mas a evidência está incompleta ou é contraditória, ou o comportamento é sabidamente limitado. |
| RUNTIME_VALIDATION_REQUIRED | O comportamento mudou ou nunca foi observado; precisa ser validado em uma sessão real antes de poder ser promovido. |
| UNAVAILABLE | Não implementado ou deliberadamente rejeitado. |
Ciclo de vida da sessão e transação#
| Funcionalidade | Estado | Evidência |
|---|---|---|
Início headless NEW_MAP (world.new-map, world.presented-entrypoint, boot.headless-start) | RUNTIME_VALIDATED | Seção "Existing Runtime Evidence" da matriz; sessões e5454061, 1e8e0548, 5f641c8d, 50a1f1ec (Grundorf) |
Início SAVED_SITUATION (world.saved-situation) | RUNTIME_VALIDATED | Nota de GetCapabilitiesAsync e matriz (Berlin-Spandau, formulário Start e Button1Click) |
Encerramento forçado por session.stop e restauração exata | RUNTIME_VALIDATED | Sessão 50a1f1ec: a parada normal não deixou nenhum processo do OMSI nem journal |
Idempotência da inicialização (PluginStart repetido) | RUNTIME_VALIDATED | Sessão 50a1f1ec |
Overlay semântico de options.cfg e restauração byte a byte (RV-005) | RUNTIME_VALIDATED | Sessão 1e8e0548: AIMaxCountRandom 150/200 mais trecho final preservado; hash restaurado A12982C3... |
| Splash gerenciado mais transação de overlay (RV-006) | RUNTIME_VALIDATED | Matriz RV-006 PASS (lote de apresentação: gerenciado padrão, gerenciado personalizado, Unset); sessões do Release Presentation 001 388cf5d2-7310-4301-9313-e62c4c08a346, 794cae34-a2ac-4fcf-8981-f142ac14c308, 12a74b24-6c78-4863-8ffe-947651212eeb |
| Recuperação após saída antecipada (RV-008, encerramento forçado do OMSI) | RUNTIME_VALIDATED | Sessões pós-Fable da Rodada A 9e7cad79-9c35-4f93-bfc8-71f455513f82 (após o gameplay) e dcac497e-ff35-4c97-b5e4-98b660f88032 (após world.starting, antes do gameplay): o proprietário concluiu, journal/lease foram liberados, options.cfg e o estado do splash originalmente ausente corresponderam aos snapshots. A falha nativa de inicialização e a injeção de restauração com falha continuam separadas. |
| Fronteiras de falha de inicialização e de restauração deliberadamente com falha (restante do RV-008) | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): o timeout de inicialização SF01 na sessão 0b21c664-b0b2-46b2-9b6b-def536765fff e a falha de mundo reportada pelo plugin SF02 na sessão 53358c75-469b-41d5-9ddb-cdb1d1ff828d terminaram em Failed com códigos tipados e restauração exata; a restauração com falha F01 na sessão d4194a69-d858-42fe-97c7-ce93ccbdc3f6 (um arquivo pertencente à sessão bloqueado por um processo exclusivo de teste durante a parada) retornou OL_E_RESTORE_FAILED, manteve o journal e o backup, e /recover restaurou exatamente o estado anterior à sessão. Os produtores de falha são somente infraestrutura de teste. |
Restauração de artefatos da sessão para alvos .itx e Texture\standard.ipr (S-01) | RUNTIME_VALIDATED | A Rodada A restaurou caminhos existentes em 47efd323-4ce1-400a-ac83-74893cf82f26; criou e removeu, na parada normal, um alvo registrado e originalmente ausente em 8d9bdedf-d7de-4c64-a8b1-627ae4deff7b; e repetiu essa limpeza por meio de interrupção do proprietário mais /recover em aa9a45d4-302e-4cf5-8490-f5a1c9e44b79. |
closecheck como exclusão de sessão e remoção de marcador obsoleto (S-13) | RUNTIME_VALIDATED | Sessões da Rodada A, incluindo 47efd323-4ce1-400a-ac83-74893cf82f26, registraram closecheck.stale-removed seguido de restore.session-artifact-removed; nenhum journal permaneceu. |
| Recuperação antecipada antes da construção do overlay, recuperação adiada anterior ao fingerprint (S-05) | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) S05: o proprietário da sessão f755ed51-b85c-4df2-b062-5bf65c768b32 foi encerrado à força com um journal pendente (maxFPS=77 ativo); o início seguinte, sessão 291ea22b-f9b3-42a4-be07-7f0c055c7113, registrou PENDING_JOURNAL_RECOVERED antes de TRANSACTION_STARTED, executou com seu próprio overlay (88) e terminou byte a byte idêntico ao estado anterior à primeira sessão. O ramo adiado anterior ao fingerprint continua somente offline (transaction.legacy-journal-ownership-migration). |
| Restauração de metadados (timestamps, atributos, somente leitura), flush write-through, limpeza de backup (S-12) | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): S12a sessão 40de172b-e144-4f0a-9207-09c80b5d7df7 (timestamp conhecido de options.cfg) e S12b sessão d9e2534b-3cb3-47ef-9cbd-1b92c62a35e7 (timestamp mais ReadOnly): o overlay esteve ativo durante a sessão (ReadOnly removido para o OMSI), e os bytes, a hora da última gravação, a hora de criação e os atributos foram restaurados exatamente; nenhum diretório de backup permaneceu. |
/recover sob o lease da instalação; recusa na janela anterior ao PID (S-04) | RUNTIME_VALIDATED | Rodada de fechamento em 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 retornaram OL_E_INSTALLATION_BUSY e um segundo início foi recusado; com o proprietário encerrado à força e o OMSI deixado em execução, /recover e um novo início foram recusados até o OMSI sair, e então /recover restaurou exatamente. S04b sessão 5e57ca51-ab5e-4e94-a0d0-531735ee4057: um journal anterior ao PID (injeção de falha pelo harness) foi recusado enquanto qualquer Omsi.exe estava em execução a partir da raiz e recuperado após a saída; um closecheck gravado por esse OMSI é mantido com OL_W_RESTORE_FOREIGN_FILE_RETAINED (documentado, conservador). |
Replanejamento em StartSessionAsync, OL_E_PLAN_NOT_RUNNABLE em um plano obsoleto (S-15) | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R02: com um plugin listado no manifesto retirado de lugar após o planejamento, 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: parada via pipe, Ctrl+C, parada pela bandeja, saída do OMSI, proprietário encerrado à força, /observe-seconds | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md): parada via 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 encerrado à força 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; encerrado à força); parada pela bandeja T01/T03 sessões 6d827c13-caf8-4221-832a-c91d26f130e0, 7e6e805d-69c2-47a3-9fa3-4cdccbe3ccb8; proprietário encerrado à força S05. Todos os caminhos terminaram com restauração exata. Com o proprietário encerrado à força de imediato, o Omsi.exe continua em execução (por design); a recuperação é recusada até ele sair (S04). |
| Orçamento de 4 s do ProcessExit ao fechar o console ou fazer logoff | RUNTIME_VALIDATED (fechamento do console) | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) L04 sessão 559d0f1d-7d5b-4b6b-b70c-0acb272d53db: janela do console fechada; a restauração foi concluída dentro do orçamento, a sessão chegou a Completed sem journal; o Windows encerrou o proprietário cerca de 5 s após o fechamento (saída 0xC000013A). O logoff não foi exercitado. |
| Desligamento cooperativo via WM_CLOSE | UNAVAILABLE | Não implementado (decisão de produto, S-11). Fechamento em runtime L05b: o OMSI não fechou em até 30 s após WM_CLOSE para sua janela principal. ShutdownTimeoutSeconds não é consumido. |
Semântica do lease da instalação (semáforo Local\) | STATICALLY_VALIDATED | lease.cross-thread-release; limites documentados como risco aceito (S-18) |
| Preservação de CP1252 ao aplicar patches em arquivos do OMSI (S-07) | RUNTIME_VALIDATED | Rodada de fechamento em 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 arquivo ativo manteve os bytes CP1252 sem EF BF BD, e o arquivo ficou byte a byte idêntico após a sessão |
| Descoberta de conteúdo ignorando reparse points (S-23) | STATICALLY_VALIDATED | Testes discovery.* |
| Retenção de diagnósticos (50 sessões mais recentes) (S-26) | STATICALLY_VALIDATED | HostTrace.Prune |
| Bloqueios transitórios de arquivo (antivírus, indexador) em gravações e exclusões da transação são repetidos por cerca de 1,5 s; bloqueios persistentes continuam falhando (passada de correção CP-10) | STATICALLY_VALIDATED | transaction.transient-lock-retried, transaction.restore-failure-recovery (bloqueio persistente continua falhando); duas falhas offline intermitentes observadas antes da correção, nenhuma em 16 execuções depois |
Plugin permanente e plataforma#
| Funcionalidade | Estado | Evidência |
|---|---|---|
Perfil Omsi23004_692EBFBF (692EBFBF...6243, 8,503,440 bytes) | RUNTIME_VALIDATED | Todas as sessões da matriz |
Executável Steam LAA (7DAB063D...D759) | PARTIAL | Fechamento em runtime LAA01 sessão 9ec975ca-7820-47be-b806-5f5a94aad4ab: uma cópia controlada (derivada do original sem patch da instalação com IMAGE_FILE_LARGE_ADDRESS_AWARE e checksum PE recalculado; 8,503,440 bytes, características 0x81AE) correspondeu ao hash, o fingerprint foi aceito e o plano estava apto para execução. A imagem é o executável original da Steam protegido por DRM: fora de uma instalação Steam genuína, ele repassa o controle ao cliente Steam e sai, por isso a sessão falhou com OL_E_PROCESS_EXITED_EARLY e restauração exata. Gameplay, leituras, comandos e parada exigem uma instalação Steam genuína (AMBIENTE). |
Identidade da instalação: o lease e o nome do pipe de controle 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) (passada de correção CP-02, adendo A/B) | STATICALLY_VALIDATED; observado em runtime | lease.root-normalization, paths.installation-identity-and-containment. Fechamento em runtime ID01: enquanto a sessão 01bfc780-10ef-4390-b700-c08bf809a42f estava em execução, segundos inícios e /recovery-status com a raiz escrita com \., com um segmento .., em minúsculas e em maiúsculas foram recusados (OL_E_SESSION_ALREADY_ACTIVE, OL_E_INSTALLATION_BUSY); a grafia com separador final também (ID01b, sessão ba3ea7c9-9826-453d-b447-81c48763e18f). |
Coerência do pacote de release: staging limpo, recibo de build do Native.x86 (conteúdo, não timestamp), manifesto sem BOM, integridade do closure em staging e do arquivo compactado re-extraído, instalador copia o manifesto (passada de correção CP-01, Rodada A RA-007, adendo F/G/H) | STATICALLY_VALIDATED; observado na instalação | Test-PackagingPipeline.ps1 (candidato coerente mais 16 casos negativos), runtime.release-manifest-bom, runtime.release-manifest-strict-parser. Fechamento em runtime: os pacotes instalados na instalação autorizada eram coerentes com seus manifestos, e todas as sessões foram planejadas com plugin.integrity.reference = manifest (registro de candidatos research/reports/runtime-closure/CANDIDATES.md). |
Integridade do closure do plugin em relação a release-manifest.json (S-09) | RUNTIME_VALIDATED | Sessão da Rodada A 47efd323-4ce1-400a-ac83-74893cf82f26; sessões do fechamento em runtime em pacotes de release instalados (por exemplo R01 sessão 878b5e3c-2f9d-46bf-a918-11bb2e227e55, candidato 3) planejadas com plugin.integrity.reference = manifest; R02 mostrou que um plugin listado ausente bloqueia o início. |
Validação do build no processo (plugin.build.invalid -> OL_E_BUILD_VALIDATION_FAILED) | RUNTIME_VALIDATED | Sessões da matriz; duas sessões anteriores com plugin.build.invalid em um plugin obsoleto |
| Handoff v4 com SHA-256 | RUNTIME_VALIDATED | Testes de integração handoff.*; todas as sessões |
| Plugin inerte sem o OmsiLaunch (sem handoff) | RUNTIME_VALIDATED | Rodada de fechamento em 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 closure 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 sem patch do Omsi.exe, e não apareceu nenhum pipe de controle, journal ou diagnóstico |
Política de busca de DLLs (AssemblyDirectory | System32) (S-24) | STATICALLY_VALIDATED | Atributos do assembly |
| Detecção de Windows 10+ x64 e rejeição de outras plataformas | STATICALLY_VALIDATED | CurrentWindowsX64Platform.Detect |
Canal de controle de runtime e plano de controle#
| Funcionalidade | Estado | Evidência |
|---|---|---|
| Integridade do formato de transmissão do mailbox, vinculação à sessão | RUNTIME_VALIDATED | Todas as sessões de runtime; runtime-command.wire-guard, runtime-command.session-binding |
| Descarte de respostas tardias e nenhum travamento do canal após timeout (S-08) | RUNTIME_VALIDATED | Sessão da Rodada A 173414a5-ee53-4b10-aeb7-046f40b851e9: um cliente externo abandonou road-vehicles.spawn após 250 ms; um map.read posterior teve sucesso e a parada canônica limpou a sessão. A rejeição de respostas grandes demais continua somente offline. |
Plano de controle local: nome de pipe por instalação, vinculação por session_id, erros tipados do handler, limite de 64 KiB (S-06) | RUNTIME_VALIDATED | Sessão da Rodada A a00c6ff8-9cc9-4bce-ae44-c4314daad7bf: protocolo inválido, parada não vinculada, requisição de runtime para a sessão errada e frame grande demais foram rejeitados; uma requisição de status válida e uma parada vinculada em seguida tiveram sucesso. A rejeição de respostas grandes demais continua somente offline. |
| Slot de sequência da telemetria, descarte de amostras corrompidas, eventos consecutivos idênticos (S-25) | STATICALLY_VALIDATED | telemetry.sequence-samples |
A fronteira da API rejeita internal.* e remove chaves internas do resultado (S-02) | STATICALLY_VALIDATED | OmsiLaunchService.ExecuteRuntimeAsync; validação do registro |
| Resposta inválida ou grande demais no mailbox libera o slot; a próxima requisição tem sucesso (passada de correção CP-03) | STATICALLY_VALIDATED | runtime-command.oversized-response-rejected; lado do plugin plugin-runtime.oversized-and-abandoned-responses. Não produzível em runtime: nenhuma operação pública retorna mais de um slot (a maior tem cerca de 37.8 KB, fechamento em runtime R03). |
| Todo caminho terminal de uma requisição de runtime deixa o mailbox reutilizável: rejeição tipada, timeout, cancelamento pelo chamador, id de requisição reutilizado, operação interna, sessão errada, argumento ausente (runtime); respostas malformadas, grandes demais, corrompidas, obsoletas e órfãs (offline) | RUNTIME_VALIDATED (caminhos alcançáveis) | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) R03 sessão 1134fdc3-a469-4ff5-a511-9964ed65e7cd: cada falha foi tipada e a próxima requisição válida teve sucesso. Os caminhos de corrupção de resposta não podem ser produzidos de fora e continuam offline (runtime-command.terminal-paths-leave-channel-usable). |
Resposta grande demais do plano de controle respondida como OL_E_CONTROL_RESPONSE_TOO_LARGE; status/eventos reduzidos a um frame descartando primeiro os mais antigos (passada de correção CP-04) | STATICALLY_VALIDATED | control-plane.binding-and-typed-errors. Não produzível em runtime: a maior resposta pública observada na rodada de fechamento em 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 controle nunca fica em silêncio depois de conectado: frames malformados, grandes demais, com comprimento negativo, vazios, JSON null, sem comando, com argumento não string, com protocolo inválido, com comando desconhecido, não vinculados e para a sessão errada; frames de cliente truncados; clientes parados; clientes que saem antes da resposta | RUNTIME_VALIDATED | Rodada de fechamento em 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 seu erro tipado, cada um seguido de um session.status bem-sucedido; um cliente parado não bloqueou os outros; uma parada vinculada concorrendo com um road-vehicles.spawn em andamento encerrou a sessão e o chamador do spawn recebeu um fim de stream limpo. OL_E_TIMEOUT e os metadados de truncamento continuam offline (control-plane.errors-never-silent). |
Harnesses de lote de runtime (/runtime-batch, /runtime-write-batch, /d3d-batch) | INTERNAL (STATICALLY_VALIDATED) | Somente harness de validação (S-27) |
Operações de runtime#
| Operação(ões) | Estado | Evidência |
|---|---|---|
time.read, time.set | RUNTIME_VALIDATED | Sessão e5454061 (gravação, SetTime, leitura de volta, restauração) |
weather.read, weather.actual.read | RUNTIME_VALIDATED | Sessão e5454061 |
weather.set | UNAVAILABLE | Rejeitado com OL_E_RUNTIME_SETTING_NOT_PERSISTENT; persistência FAIL nas sessões e5454061 e 5f641c8d; rejeição PASS em 50a1f1ec |
map.read | RUNTIME_VALIDATED | Revalidado após a correção do slot global do Map na sessão 9dd62626-94c6-4cd7-bb6f-0288327696f4: loaded=true, 19 tiles, identidade Grundorf, nome de arquivo, descrição e intervalo de anos coerentes. |
camera.read, camera.set | RUNTIME_VALIDATED | Sessão e5454061 (gravação do FOV, leitura de volta, restauração) |
camera.lock, camera.unlock | RUNTIME_VALIDATED | Rodada de fechamento em runtime (research/reports/runtime-closure/FINAL-RUNTIME-VALIDATION-REPORT.md) CAM01 sessão 5dfd9b96-fa94-4060-85af-0c9d19823a73: a situação salva Linie 5 forneceu um PlayerVehicle (rv-000001); os travamentos nas famílias 0, 2 e 1 foram confirmados pela leitura de volta da câmera; o unlock liberou a política |
road-vehicles.read, road-vehicles.list, road-vehicle.read | RUNTIME_VALIDATED | Sessões e5454061, 5f641c8d |
| Tempo de vida do handle de RoadVehicle e detecção de handle obsoleto (RV-002) | PARTIAL | Nenhum produtor seguro de remoção: em três janelas do fechamento em 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 detecção de handle obsoleto continua offline (S-19). A regra de geração/ABA é validada em runtime para texturas D3D (H02). |
road-vehicles.spawn (RV-003) | RUNTIME_VALIDATED | Sessão 5f641c8d: 2 -> 3, rv-000003 resolvido |
road-vehicles.place-random | RUNTIME_VALIDATED | Matriz: coleção 2 -> 4 |
player-vehicle.read | RUNTIME_VALIDATED | Rodada A RA-002 sessão 9dd62626-94c6-4cd7-bb6f-0288327696f4 (present=false); fechamento em runtime CAM01 sessão 5dfd9b96-fa94-4060-85af-0c9d19823a73 leu um PlayerVehicle presente a partir de uma situação salva |
humans.read, humans.list, human.read | RUNTIME_VALIDATED | Sessão e5454061 |
timetable.read, timetable.*.list, timetable.logs.read | RUNTIME_VALIDATED | Sessão e5454061; entradas de trajeto: 91 registros |
Truncamento de lista limitada em vez de OL_E_RUNTIME_RESPONSE_TOO_LARGE (auditoria de documentação BUG-05) | RUNTIME_VALIDATED | Novo teste da auditoria de documentação no pacote 9F8CC87B..., situação salva situations\Linie 5.osn (Berlin-Spandau): timetable.track-entries.list retornou 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 da documentação); antes da correção, ambos 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.read | RUNTIME_VALIDATED | Sessão e5454061 |
vehicle.variables.list, vehicle.variable.get, vehicle.variable.set | RUNTIME_VALIDATED | Refresh_Strings 0 -> 1 -> 0 na sessão de runtime registrada 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 registra o id da sessão |
vehicle.string-variables.list, vehicle.string-variable.get | RUNTIME_VALIDATED (somente leitura) | Sessão e5454061; gravações BI-004 UNAVAILABLE |
vehicle.constants.list, vehicle.constant.get, vehicle.curves.list, vehicle.curve.evaluate, vehicle.hofs.read | RUNTIME_VALIDATED | Sessão e5454061 |
d3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.release, rejeição de handle liberado | RUNTIME_VALIDATED | Seção "basic D3D texture lifecycle" da matriz; notas de capacidade runtime.d3d.* (sessão 4378899d para o slot do dispositivo) |
| Eventos de perda / reset / restauração do dispositivo D3D, invalidação de geração (RV-007) | RUNTIME_VALIDATED (resetting/restored) | Rodada de fechamento em 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 exibição (produtor de teste, nunca público, sem chamada sintética de reset) fez o OMSI resetar seu dispositivo duas vezes. d3d.resetting/d3d.restored foram emitidos, a geração avançou a cada ciclo, uma requisição durante o reset recebeu OL_E_D3D_RESET_IN_PROGRESS, a textura anterior à perda foi rejeitada com OL_E_D3D_STALE_RESOURCE_HANDLE e novas texturas funcionaram. O OMSI foi direto para DEVICENOTRESET, portanto uma transição lost distinta não foi produzida. Uma tentativa fez o OMSI travar em DSound.dll (mudança do endpoint de áudio do monitor; o proprietário restaurou exatamente). |
events.read / events watch | RUNTIME_VALIDATED | Todas as sessões (ciclo de vida orientado por telemetria) |
internal.road-vehicles.make-basic | INTERNAL | Inalcançável pelas superfícies públicas |
Funcionalidades de inicialização#
| Funcionalidade | Estado | Evidência |
|---|---|---|
/set e settings do perfil (configuration.options.semantic) | RUNTIME_VALIDATED | RV-005 |
| Perfis de sessão (compilador estrito, conflitos, confinamento de caminhos incluindo reparse points S-17) | RUNTIME_VALIDATED (escopo de início por perfil) | Rodada A RA-009, Test-Beta3SessionProfile.ps1, 2026-09-22: splash gerenciado, texturas da internet desativadas 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_VALIDATED | Testes cli.* |
Splash gerenciado PTB/ENG/DEU/FRA | RUNTIME_VALIDATED | RV-006 |
Texturas da internet Disabled (supressão do downloader no processo) | STATICALLY_VALIDATED | Caminho de telemetria internet-textures.suppressed; não citado na matriz |
Proteção de alvo .itx das texturas da internet (Rodada A RA-011/RA-012, passada de correção CP-05, adendo E): raiz canônica, alvo canônico, caminho relativo, regras de segmento; 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 junctions são rejeitados; as grafias convergem para um único caminho canônico de transação | STATICALLY_VALIDATED | presentation.itx-target-root-normalization, presentation.itx-target-guard-rejections |
Texturas da internet Override | RUNTIME_VALIDATED | Rodada de fechamento em 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 um originalmente ausente, gravou ambos, e após a parada canônica o alvo ausente foi removido e o existente restaurado byte a byte; I02 sessão a8f2b720-e41a-4e34-86bf-125bf519a5bd: o mesmo depois de o proprietário e o OMSI serem encerrados à força, via /recover. |
/date, /time, /year, flags de clima, flags do veículo do jogador (STATICALLY_PARTIAL) | UNAVAILABLE | O planejador marca o plano como não apto para execução (OL_E_CAPABILITY_UNAVAILABLE); o plugin rejeita modos de data/hora diferentes de Unset |
/entrypoint:<identity> (BI-001) | PARTIAL | Plano não apto para execução (RUNTIME_PARTIAL) |
/last (LastMapState, BI-006) | UNAVAILABLE | UNSUPPORTED_FOR_CURRENT_PROFILE |
Overlays de teclado/controle de InputSpec (BI-005) | UNAVAILABLE | Os parsers existem; não são aplicados |
Atribuição headless de PlayerVehicle (BI-007), SetActualDateTime (BI-002), controle de clima ICAO (BI-003), gravações de variáveis string (BI-004), realocação entre tiles (BI-008) | UNAVAILABLE | Bloqueados até a implementação ser concluída |
Descoberta /list (content.*) | STATICALLY_VALIDATED; observado em runtime | discovery.fixture; o fechamento em runtime usou /list:situations na instalação autorizada (identidades incluindo a não ASCII situations\Nur für Fortgeschrittene.osn) |
/quiet, /serve | UNAVAILABLE | ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT |
Flags de diagnóstico (/log, /logall, /omsi-logall, /verbose, /trace*) | PARTIAL | Transportadas em DiagnosticsSpec; efeito limitado ao trace do host |
Host do Windows e bandeja#
| Funcionalidade | Estado | Evidência |
|---|---|---|
Indicador na bandeja (OmsiLaunchW.exe): ícone na área de notificação, status, "End session" com confirmação e Cancel, reinício do Explorer, caixas de diálogo abertas quando chega uma parada, parada durante /observe-seconds, caixas de diálogo de falha (S-16) | RUNTIME_VALIDATED | Rodada de fechamento em 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 status em pt-BR, o reinício do Explorer readicionou o ícone, Cancel manteve a sessão, End session a encerrou em 607 ms e removeu o ícone); T02 sessão 0939a151-bf03-4ca9-8294-8b0088df7d30 (status e confirmação abertos durante uma parada via 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 nenhuma sessão ativa e de falha da sessão, com códigos). Os códigos de saída 100-106 do shim não foram produzidos. |
Reinicialização com /silent retornando 0 quando o host foi iniciado | RUNTIME_VALIDATED | Rodada de fechamento em 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 inicializador retornou 0 e um chamador que capturava sua saída recebeu fim de stream após 0.4 s enquanto a sessão do OmsiLaunchW executava sem janela de console; a sessão parou com restauração exata |
| Códigos de saída 100-106 do shim bootstrapper, buffer de caminho dinâmico (S-21) | STATICALLY_VALIDATED | Test-ReleaseIdentity.ps1 |
Novo teste da auditoria de documentação (fechamento da documentação 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 da documentação 40046805-5337-48fc-90dd-e7d3500ed3b4); evidências em research/reports/documentation-audit/runtime/ e research/reports/OMSILAUNCH-BETA3-FINAL-DOCUMENTATION-AUDIT.md.
| Item | Estado | Evidência |
|---|---|---|
OmsiLaunchW.exe reporta uma inicialização não apta para execução (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 design) |
| As rotas da CLI anunciadas são sintaxe real (BUG-07) | RUNTIME_VALIDATED | Toda alternativa de rota de cliente impressa pelos help --json e capabilities --json instalados (32 descritores) foi aceita pelo parser instalado; nenhuma imprimiu a mensagem de uso (doc-bug07-routes.json; pacote instalado 9f8cc87b...) |
| Toda linha de comando da página de exemplos da CLI | RUNTIME_VALIDATED | 43 linhas de cliente executadas contra a sessão do proprietário 08df97b8-06cc-4faa-be8b-f49ca1538dce (situação salva; events watch foi pulado porque executa até Ctrl+C), terminando com o próprio session stop da página (saída do proprietário 0). Todas corresponderam à página, exceto vehicle.constant.get com name=max_speed, uma constante que aquele ônibus não tem; a página agora usa antrieb_getr_version. O exemplo de perfil grundorf-quick não era planejado (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 inicialização com /plan (doc-client-examples.json, doc-examples-no-session.json, doc-profile-example.json) |
Smoke test NEW_MAP com /observe-seconds no pacote final | RUNTIME_VALIDATED | R01 sessão 08570134-cfd8-4726-a472-5f6dd2f04c8f, estado final limpo (research/reports/runtime-closure/doc-R01-*) |
Lista consolidada de RUNTIME_VALIDATION_REQUIRED#
A rodada de fechamento em runtime de 2026-09-23 fechou a fila anterior. Ela permanece vazia, exceto por itens que não podem ser produzidos com segurança nesta instalação:
- Gameplay, leituras, comandos e parada com Steam LAA: exigem uma instalação Steam genuína (ambiente; a linha acima é
PARTIAL). - Remoção de RoadVehicle e Human do RV-002: nenhum produtor seguro de remoção (a linha acima é
PARTIAL).
Os itens que continuam offline porque não podem ser produzidos de fora do produto estão marcados em suas linhas e não fazem parte da fila: corrupção de resposta do mailbox, respostas grandes demais, truncamento do histórico de eventos, a transição D3D lost, logoff, códigos de saída 100-106 do shim e o ramo adiado de recuperação anterior ao fingerprint.
Relacionado: capacidades, limitações conhecidas, transações e recuperação, compatibilidade.