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 lista, a partir do código, tudo o que no OmsiLaunch 0.1.0-beta3 é UNAVAILABLE, PARTIAL ou um risco aceito, para que usuários e integradores não construam sobre um comportamento que o produto não oferece. Cada linha indica a limitação, sua estabilidade, o motivo de existir e onde ela está documentada em detalhes. A documentação em inglês é normativa; as cópias localizadas em docs/localized/ não são mantidas no mesmo nível e podem ficar defasadas (veja a última seção).
Somente Omsi23004_692EBFBF é suportado (692EBFBF...6243); o hash Steam LAA 7DAB063D...D759 está na lista de permissões; sua impressão digital e seu plano foram validados com uma cópia controlada, mas o gameplay exige uma instalação Steam genuína (a imagem é o executável Steam protegido por DRM)
LAST_MAP_STATE (/last, WorldMode.LastMapState) não está implementado; nenhum fallback de .osn baseado em data e hora é usado como substituto
UNAVAILABLE (BI-006)
Diagnóstico do plano OL_E_CAPABILITY_UNAVAILABLE
Data, hora e ano explícitos ou do sistema (/date, /time, /year, perfil new.date/new.time/new.year, DateSpec/TimeSpec/YearSpec) são transportados na spec, mas tornam o plano não apto para execução; o plugin rejeita modos diferentes de Unset
Predefinição de clima, ICAO e clima real atual no início (/weather*, new.weather)
UNAVAILABLE (STATICALLY_PARTIAL, BI-003)
como acima
Modelo do veículo do jogador, pintura (repaint), HOF, número de frota e matrícula no início (família /vehicle, PlayerVehicleSpec) são resolvidos contra o catálogo de conteúdo, mas não aplicados; solicitá-los torna o plano não apto para execução; a atribuição determinística do PlayerVehicle sem interface (headless) é uma extensão futura
Ponto de entrada por identidade (/entrypoint:<identity>) não é correlacionado com a lista apresentada pelo OMSI; use /entrypoint-index
PARTIAL (BI-001)
capacidade do plano world.entrypoint-identity = RUNTIME_PARTIAL
Overlays dos documentos de teclado e de controles (InputSpec, Environment.Keyboard, Environment.Controllers) são interpretados, mas nunca aplicados por uma sessão
UNAVAILABLE (BI-005)
capacidades input.*
LaunchBehaviorSpec.RestoreConfiguration e InstallationSpec.ExpectedExecutableSha256 são declarados, mas nunca lidos
As flags de diagnóstico (/log, /logall, /omsi-logall, /verbose, /trace, /trace-process, /trace-plugin, /trace-native) preenchem DiagnosticsSpec; o efeito visível se limita ao trace do host em .omsilaunch\diagnostics
A parada da sessão é um encerramento forçado: session.stop, "End session" na bandeja, Ctrl+C e CloseAsync levam todos a TerminateProcess. A rotina de encerramento do OMSI não é executada, o OMSI não regrava options.cfg nem seus logs ao sair, e qualquer estado não salvo do OMSI é perdido. Isso é deliberado: impede que o OMSI grave por cima dos arquivos restaurados.
No fechamento do console ou no logoff, o proprietário tem um orçamento de 4 s para parar e restaurar; o que restar é recuperado pelo journal no próximo início
fechamento do console validado em runtime; logoff não exercitado
O lease da instalação é um semáforo Local\: um proprietário por instalação por sessão de logon; não é imposto entre usuários diferentes; não é liberado enquanto outro processo mantém um handle; qualquer processo do mesmo usuário pode reter o nome
A recuperação é recusada (OL_E_INSTALLATION_BUSY) enquanto o processo do OMSI registrado no journal estiver em execução, ou, para um journal sem PID, enquanto qualquer Omsi.exe daquela raiz estiver em execução
por design
como acima
Um caminho de overlay originalmente ausente cujo conteúdo mudou durante a sessão bloqueia a restauração (OL_E_RECOVERY_ABSENT_OWNERSHIP_MISMATCH) até ser inspecionado
por design
como acima
Journals anteriores às impressões digitais de propriedade só podem ser fechados por uma sessão com bytes planejados idênticos (OL_E_RECOVERY_ABSENT_OWNERSHIP_UNVERIFIED)
PARTIAL
como acima
Somente os caminhos pertencentes à sessão são restaurados. As gravações do próprio OMSI durante uma sessão (options.cfg[last_map] quando nenhuma configuração sobrepõe options.cfg, Texture\standard.ipr, caches, laststn.osn, perfil de motorista, logs) persistem, como depois de um início direto do OMSI
Gravações de variáveis string, triggers nomeados, triggers de som (propriedade de strings gerenciadas do Delphi)
UNAVAILABLE (BI-004)
scripts.string.read é somente leitura
Sem realocação de veículos, sem religação espacial entre tiles, sem autoridade de transformação segura para o ODE; os campos de posição são somente leitura
UNAVAILABLE (BI-008)
road-vehicle.read
camera.lock / camera.unlock precisam de um PlayerVehicle; o início NEW_MAP headless não tem nenhum (uma situação salva fornece um)
por design (BI-007)
RV-004
As mutações de runtime (time.set, camera.set, camera.lock, vehicle.variable.set, spawn, place-random, texturas D3D) não são registradas no journal nem restauradas
Ponto cego da impressão digital dos handles: um objeto da mesma classe e definição recriado no mesmo endereço entre duas leituras de lista não é detectado como obsoleto; o ciclo de vida da remoção natural (RV-002) não tem um produtor seguro em runtime e continua coberto somente offline
Os resultados são limitados pelo mailbox de 64 KiB: listas longas são truncadas (truncated=true); os payloads de pixels são limitados a 48 KiB por d3d.texture.update
Canal de requisição única: uma requisição por vez por sessão; um slot ocupado resulta em OL_E_RUNTIME_CHANNEL_BUSY; ids de requisição não podem ser reutilizados
A telemetria é um slot de último valor: rajadas mais rápidas que a amostragem de 100 ms do host podem perder eventos intermediários (números de sequência mantêm distintos eventos consecutivos idênticos; amostras inconsistentes são descartadas)
O reset do dispositivo D3D foi observado em runtime (resetting, restored, invalidação de geração); uma transição lost distinta não foi produzida porque o dispositivo do OMSI foi diretamente para DEVICENOTRESET
Os resultados de listas limitadas (as operações timetable.*.list, vehicle.variables.list, vehicle.string-variables.list) retornam no máximo as linhas que cabem no slot de runtime de 64 KiB; o restante é omitido com truncated=true e um returned_count menor (auditoria de documentação BUG-05). Não há paginação nesta release
timetable.logs.read, road-vehicles.list, humans.list, vehicle.constants.list e vehicle.curves.list não são limitadas: um resultado maior que o slot falha com OL_E_RUNTIME_RESPONSE_TOO_LARGE (não observado para nenhuma delas nos mapas testados)
As strings de evidência autodeclaradas (PublicCapabilityRegistryRuntimeValidation, GetCapabilitiesAsyncEvidenceState) não foram atualizadas depois da rodada de fechamento em runtime: camera.lock ainda indica STATICALLY_VALIDATED e runtime.d3d.lifecycle.reset indica IMPLEMENTED_NOT_RUNTIME_VALIDATED. A página status de validação em runtime é a referência oficial
defasagem da documentação, não uma diferença de comportamento
Alguns campos avançados do grafo de mapas/tiles/caminhos/objetos não são expostos; os leitores de runtime são snapshots tipados controlados pelo perfil, nunca acesso arbitrário à memória
As leituras de memória dentro do processo seguem o padrão verificar-e-depois-usar contra um OMSI ativo; uma mutação concorrente do OMSI entre a verificação e a leitura pode gerar um snapshot inconsistente (OL_E_RUNTIME_OPERATION_FAILED)
Modelo de confiança do mesmo usuário: o named pipe (CurrentUserOnly), os mapeamentos de memória de handoff/telemetria/runtime e o semáforo do lease são acessíveis a qualquer processo do mesmo usuário do Windows. Esse processo pode ler o status, parar a sessão ou executar operações de runtime depois de ler o session_id.
O endpoint de controle só existe enquanto o proprietário está em Running; um cliente recebe OL_E_NO_ACTIVE_SESSION (saída 4) durante a inicialização e depois do fim da sessão
Se outro processo já possuir o nome do pipe, o proprietário continua em execução sem endpoint (ListenFault), e uma segunda inicialização pode informar incorretamente OL_E_SESSION_ALREADY_ACTIVE
A retenção mantém as 50 sessões mais recentes; diagnósticos mais antigos prefixados por sessão são excluídos quando uma nova sessão inicia
por design
como acima
A saída JSON e os diagnósticos incluem caminhos da instalação (RootPath, diretórios de recursos, caminhos .itx)
por design (dados locais)
A caixa de diálogo de falha de sessão do OmsiLaunchW.exe mostra o payload de falha do plugin (por exemplo {"name":"world.failed",...}) como mensagem, em vez de uma frase; a linha Code: está correta
Uma requisição D3D rejeitada pela ponte nativa antes de qualquer chamada Direct3D informa native_status corretamente, mas seu texto detail diz HRESULT 0x00000000
A janela de status da bandeja é um snapshot da sessão planejada, tirado quando ela é aberta; ela não é atualizada e não mostra valores do OMSI em tempo real
As páginas em inglês em docs/ são a documentação normativa desta release. docs/localized/<locale>/ contém traduções das mesmas páginas 0.1.0-beta3 (veja LOCALIZATION-MANIFEST.md); onde uma tradução diferir do texto em inglês, o texto em inglês e o código prevalecem. As páginas históricas e legadas listadas ali estão disponíveis somente em inglês.