# Documentação do OmsiLaunch
> Tradução da [página original em inglês](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/docs/README.md) 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 é a documentação normativa em inglês do OmsiLaunch `0.1.0-beta3`, a
linha de base pós-endurecimento (post-hardening). O OmsiLaunch oferece inicialização programável,
propriedade de sessão e controle de runtime para exatamente um build do OMSI 2, o perfil
`Omsi23004_692EBFBF`. Cada página em `docs/` descreve o que o código atual
faz; quando uma página e o código divergem, vale o código e a página contém um bug.
Vocabulário de estabilidade usado em toda a documentação: `STABLE_BETA`, `EXPERIMENTAL`, `PARTIAL`,
`INTERNAL`, `UNAVAILABLE`. Flags que são interpretadas, mas não fazem nada, são marcadas como
`ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT`. Nada é considerado
validado em runtime, a menos que o
[status de validação em runtime](https://omsilaunch.omsimods.com.br/docs/status/runtime-validation-status/index.md) o diga.
## Quem lê o quê
| Público | Comece aqui | Depois |
| --- | --- | --- |
| Usuários (CLI, atalhos, perfis de sessão) | [Instalação](https://omsilaunch.omsimods.com.br/docs/getting-started/installation/index.md), [Primeira sessão](https://omsilaunch.omsimods.com.br/docs/getting-started/first-session/index.md) | [Referência da CLI](https://omsilaunch.omsimods.com.br/docs/reference/cli/index.md), [Exemplos da CLI](https://omsilaunch.omsimods.com.br/docs/reference/cli-examples/index.md), [Perfis de sessão](https://omsilaunch.omsimods.com.br/docs/reference/session-profiles/index.md), [Bandeja do Windows](https://omsilaunch.omsimods.com.br/docs/reference/windows-tray/index.md), [Códigos de saída](https://omsilaunch.omsimods.com.br/docs/reference/exit-codes/index.md) |
| Integradores (`OmsiLaunch.Api`, IPC local) | [Início rápido da API pública](https://omsilaunch.omsimods.com.br/docs/getting-started/api-quick-start/index.md), [Referência da API pública](https://omsilaunch.omsimods.com.br/docs/reference/public-api/index.md), [Referência do LaunchSpec](https://omsilaunch.omsimods.com.br/docs/reference/launchspec/index.md) | [Ciclo de vida da sessão](https://omsilaunch.omsimods.com.br/docs/concepts/session-lifecycle/index.md), [Controle de runtime](https://omsilaunch.omsimods.com.br/docs/reference/runtime-control/index.md), [Capacidades](https://omsilaunch.omsimods.com.br/docs/reference/capabilities/index.md), [Controle local / IPC](https://omsilaunch.omsimods.com.br/docs/reference/local-control/index.md), [Referência de erros](https://omsilaunch.omsimods.com.br/docs/reference/errors/index.md) |
| Mantenedores (release, validação, limites) | [Empacotamento](https://omsilaunch.omsimods.com.br/docs/reference/packaging/index.md), [Modelo de plugin permanente](https://omsilaunch.omsimods.com.br/docs/concepts/permanent-plugin/index.md) | [Transações e recuperação](https://omsilaunch.omsimods.com.br/docs/concepts/transactions-and-recovery/index.md), [Compatibilidade](https://omsilaunch.omsimods.com.br/docs/reference/compatibility/index.md), [Limitações conhecidas](https://omsilaunch.omsimods.com.br/docs/reference/known-limitations/index.md), [Status de validação em runtime](https://omsilaunch.omsimods.com.br/docs/status/runtime-validation-status/index.md) |
## Navegação
| Página | Finalidade |
| --- | --- |
| [Primeiros passos](https://omsilaunch.omsimods.com.br/docs/getting-started/first-session/index.md) | Planejar, iniciar, observar e parar uma sessão a partir da raiz do OMSI. |
| [Instalação](https://omsilaunch.omsimods.com.br/docs/getting-started/installation/index.md) | Pré-requisitos, extração do pacote na raiz do OMSI, verificação com `/version`, remoção limpa. |
| [Início rápido da API pública](https://omsilaunch.omsimods.com.br/docs/getting-started/api-quick-start/index.md) | Um programa .NET completo que planeja, inicia, lê e para uma sessão. |
| [Referência da CLI](https://omsilaunch.omsimods.com.br/docs/reference/cli/index.md) | Todas as flags, palavras de comando e rotas hierárquicas de `OmsiLaunch.exe` / `OmsiLaunchW.exe`. |
| [Exemplos da CLI](https://omsilaunch.omsimods.com.br/docs/reference/cli-examples/index.md) | Linhas de comando prontas para copiar e colar para tarefas comuns. |
| [Referência do LaunchSpec](https://omsilaunch.omsimods.com.br/docs/reference/launchspec/index.md) | Todas as propriedades e valores de enum de `LaunchSpec`, regras de carregamento de JSON para `/spec`. |
| [Referência de perfis de sessão](https://omsilaunch.omsimods.com.br/docs/reference/session-profiles/index.md) | Esquema `omsilaunch.session-profile/v1` de `profile.yaml`, chaves, limites, precedência. |
| [Referência da API pública](https://omsilaunch.omsimods.com.br/docs/reference/public-api/index.md) | `IOmsiLaunch`, records e enums públicos, estabilidade por membro. |
| [Inventário da API pública](https://omsilaunch.omsimods.com.br/docs/reference/public-api-inventory/index.md) | Lista gerada de todos os tipos e membros públicos, com assinatura e estabilidade. |
| [Controle de runtime](https://omsilaunch.omsimods.com.br/docs/reference/runtime-control/index.md) | Canal de comandos de runtime, timeouts, handles, semântica de parada. |
| [Referência de capacidades](https://omsilaunch.omsimods.com.br/docs/reference/capabilities/index.md) | Catálogo de capacidades e todos os ids de operação de runtime públicos com sua classificação. |
| [Ciclo de vida da sessão](https://omsilaunch.omsimods.com.br/docs/concepts/session-lifecycle/index.md) | Transições de `SessionState`, o que `StartSessionAsync` promete, como uma sessão termina. |
| [Transações e recuperação](https://omsilaunch.omsimods.com.br/docs/concepts/transactions-and-recovery/index.md) | Estados do journal, backups, verificação da restauração, exclusões da sessão, recuperação após falha. |
| [Modelo de plugin permanente](https://omsilaunch.omsimods.com.br/docs/concepts/permanent-plugin/index.md) | O conjunto de arquivos `plugins\OmsiLaunch.*`, integridade baseada no manifesto, o que uma sessão nunca toca. |
| [Controle local / IPC](https://omsilaunch.omsimods.com.br/docs/reference/local-control/index.md) | Protocolo de named pipe `0.1`, endpoint por instalação, vinculação a `session_id`, modelo de confiança. |
| [OmsiLaunchW.exe](https://omsilaunch.omsimods.com.br/docs/reference/omsilaunchw/index.md) | O host Windows (sem console): diferenças em relação ao `OmsiLaunch.exe`, `/silent`, caixas de diálogo, códigos de saída. |
| [Bandeja do Windows](https://omsilaunch.omsimods.com.br/docs/reference/windows-tray/index.md) | Indicador na área de notificação: ícone, menu, janela de status campo a campo, encerrar a sessão, reinício do Explorer. |
| [Referência de erros](https://omsilaunch.omsimods.com.br/docs/reference/errors/index.md) | Todos os códigos `OL_E_*` / `OL_W_*` com categoria e significado. |
| [Códigos de saída](https://omsilaunch.omsimods.com.br/docs/reference/exit-codes/index.md) | Valores de `PublicExitCode` de 0 a 10 e códigos do shim de bootstrap de 100 a 106. |
| [Empacotamento / layout da instalação](https://omsilaunch.omsimods.com.br/docs/reference/packaging/index.md) | Arquivos no ZIP de release, `release-manifest.json`, layout de `.omsilaunch\`. |
| [Compatibilidade / builds do OMSI suportados](https://omsilaunch.omsimods.com.br/docs/reference/compatibility/index.md) | O único hash de `Omsi.exe` suportado, o hash Steam LAA aceito, requisitos de plataforma. |
| [Limitações conhecidas](https://omsilaunch.omsimods.com.br/docs/reference/known-limitations/index.md) | O que não é suportado, é parcial ou é um risco aceito nesta beta. |
| [Status de validação em runtime](https://omsilaunch.omsimods.com.br/docs/status/runtime-validation-status/index.md) | O que foi executado sob o OMSI, o que foi executado somente offline, o que ainda precisa de uma sessão real. |
Páginas na raiz do repositório que continuam normativas para os mantenedores:
[`README.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/README.md), [`PUBLIC-API.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/PUBLIC-API.md),
[`RUNTIME-CONTROL.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/RUNTIME-CONTROL.md),
[`RUNTIME-CAPABILITIES.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/RUNTIME-CAPABILITIES.md),
[`BUILD-PROFILES.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/BUILD-PROFILES.md),
[`IMPLEMENTATION-STATUS.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/IMPLEMENTATION-STATUS.md),
[`TESTING-AND-VALIDATION.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/TESTING-AND-VALIDATION.md),
[`POST-RELEASE-BACKLOG.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/POST-RELEASE-BACKLOG.md). Elas resumem; as
páginas acima são a referência detalhada. As páginas históricas estão listadas no
[manifesto da documentação](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/docs/DOCUMENTATION-MANIFEST.md).
## Como esta documentação é mantida sincronizada
Um gate de documentação, `tests\OmsiLaunch.DocumentationTests`, é compilado contra
`OmsiLaunch.Api` e `OmsiLaunch.Core` e compara as páginas acima com o
código que define a superfície pública:
| Gate | Verifica |
| --- | --- |
| `docs.cli-flags` | Toda entrada de `CliInput.KnownFlags` aparece na referência da CLI como `` `/flag` `` ou `` `/flag:` ``; toda entrada de `CliInput.AcceptedNoEffectFlags` é marcada como `ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT` em sua linha; toda palavra de comando e toda rota de `CliInput.HierarchicalRoutes` aparece com sua operação de runtime; todo valor de `PublicExitCode` tem uma linha `| n |` na tabela de códigos de saída. |
| `docs.capabilities` | Todo id de `PublicCapabilityRegistry.All`, toda entrada de `PublicCapabilityRegistry.PublicRuntimeOperationIds` e todo nome de `PublicCapabilityClassification` aparece na referência de capacidades. |
| `docs.errors` | Todo código de `PublicErrorCodes.All` aparece na referência de erros, e nenhum literal `OL_E_*` / `OL_W_*` em `src\` ou `tools\OmsiLaunch.Cli\` está ausente de `PublicErrorCodes`. |
| `docs.public-api` | Todo tipo exportado de `OmsiLaunch.Api`, todo valor de enum e todo membro de `IOmsiLaunch` aparece na referência da API pública, e as cinco palavras de estabilidade são usadas. |
| `docs.launchspec` | Toda propriedade pública alcançável a partir de `LaunchSpec` e todo valor de seus enums aparece na referência do LaunchSpec. |
| `docs.session-profiles` | Toda chave de `SessionProfileCompiler.SchemaKeys`, o identificador do esquema e o limite de `256 KiB` aparecem na referência de perfis de sessão. |
| `docs.structure` | Toda página da tabela de navegação existe. |
| `docs.links` | Todo link relativo em `docs\**\*.md` (exceto `docs\localized\`) e nos arquivos `*.md` da raiz aponta para um arquivo ou diretório existente. |
| `docs.localization` | Toda localidade listada em `docs\localized\LOCALIZATION-MANIFEST.md` tem todas as páginas do conjunto localizado; cada página mantém os títulos, as tabelas e os blocos de código da página em inglês, todo trecho de código inline (flags, ids de capacidade e de operação, códigos de erro, chaves, identificadores) e todo link, e seus links relativos apontam para destinos existentes. |
O gate é uma das suítes executadas por `tools\Invoke-OfflineValidation.ps1`
(ignore-o com `-SkipDocs`). Ele é executado offline, nunca inicia o OMSI e faz o
build falhar quando uma flag, rota, capacidade, código de erro, valor de enum ou tipo público
não está documentado ou quando um link está quebrado. Ele não verifica a prosa, então uma página ainda pode
estar errada sobre o comportamento; relate isso como um bug da página.
## Traduções
`docs\localized\\` contém traduções completas desta documentação `0.1.0-beta3`
para `pt-BR`, `pt-PT`, `en-GB`, `fr-FR`, `de-DE`, `es-ES`, `es-LATAM`, `it-IT`, `pl-PL`, `nl-NL`, `ru-RU`, `zh-CN`, `zh-TW` e `ja-JP`. O conjunto de páginas, as raízes das localidades e as
páginas intencionalmente não traduzidas estão listados em
[`localized/LOCALIZATION-MANIFEST.md`](https://github.com/lmonteirotech/OmsiLaunch/blob/v0.1.0-beta.3/docs/localized/LOCALIZATION-MANIFEST.md).
As traduções mantêm inalterados todos os comandos, flags, identificadores, códigos de erro e exemplos
das páginas em inglês, e o gate `docs.localization` verifica isso.
As páginas em inglês continuam sendo a fonte normativa: onde uma tradução divergir
delas, a página em inglês e o código prevalecem, e a tradução
contém um bug.