OmsiLaunch Documentation
This is the normative English documentation for OmsiLaunch 0.1.0-beta3, the post-hardening baseline. OmsiLaunch provides programmable launch, session ownership and runtime control for exactly one OMSI 2 build, profile Omsi23004_692EBFBF. Every page under docs/ describes what the current code does; when a page and the code disagree, the code wins and the page is a bug.
Stability vocabulary used throughout: STABLE_BETA, EXPERIMENTAL, PARTIAL, INTERNAL, UNAVAILABLE. Flags that are parsed but do nothing are marked ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT. Nothing is called runtime-validated unless the runtime validation status says so.
Who reads what#
| Audience | Start here | Then |
|---|---|---|
| Users (CLI, shortcuts, session profiles) | Installation, First session | CLI reference, CLI examples, Session profiles, Windows tray, Exit codes |
Integrators (OmsiLaunch.Api, local IPC) | Public API quick start, Public API reference, LaunchSpec reference | Session lifecycle, Runtime control, Capabilities, Local control / IPC, Error reference |
| Maintainers (release, validation, boundaries) | Packaging, Permanent plugin model | Transactions and recovery, Compatibility, Known limitations, Runtime validation status |
Navigation#
| Page | Purpose |
|---|---|
| Getting Started | Plan, start, observe and stop one session from the OMSI root. |
| Installation | Prerequisites, extracting the package into the OMSI root, verifying with /version, clean removal. |
| Public API Quick Start | A complete .NET program that plans, starts, reads and stops one session. |
| CLI Reference | Every flag, command word and hierarchical route of OmsiLaunch.exe / OmsiLaunchW.exe. |
| CLI Examples | Copy-and-paste command lines for common tasks. |
| LaunchSpec Reference | Every LaunchSpec property and enum value, JSON loading rules for /spec. |
| Session Profiles Reference | profile.yaml schema omsilaunch.session-profile/v1, keys, limits, precedence. |
| Public API Reference | IOmsiLaunch, public records and enums, stability per member. |
| Public API Inventory | Generated list of every public type and member with signature and stability. |
| Runtime Control | Runtime command channel, timeouts, handles, stop semantics. |
| Capabilities Reference | Capability catalog and every public runtime operation id with its classification. |
| Session Lifecycle | SessionState transitions, what StartSessionAsync promises, how a session ends. |
| Transactions and Recovery | Journal states, backups, restore verification, session deletions, crash recovery. |
| Permanent Plugin Model | The plugins\OmsiLaunch.* closure, manifest-based integrity, what a session never touches. |
| Local Control / IPC | Named-pipe protocol 0.1, per-installation endpoint, session_id binding, trust model. |
| OmsiLaunchW.exe | The Windows (no console) host: differences from OmsiLaunch.exe, /silent, dialogs, exit codes. |
| Windows Tray | Notification-area indicator: icon, menu, status window field by field, End session, Explorer restart. |
| Error Reference | Every OL_E_* / OL_W_* code with category and meaning. |
| Exit Codes | PublicExitCode values 0 to 10 and bootstrapper shim codes 100 to 106. |
| Packaging / Installation Layout | Files in the release ZIP, release-manifest.json, .omsilaunch\ layout. |
| Compatibility / Supported OMSI Builds | The one supported Omsi.exe hash, the accepted Steam LAA hash, platform requirements. |
| Known Limitations | What is unsupported, partial or an accepted risk in this beta. |
| Runtime Validation Status | What ran under OMSI, what only ran offline, what still needs a real session. |
Root-level pages that remain normative for maintainers: README.md, PUBLIC-API.md, RUNTIME-CONTROL.md, RUNTIME-CAPABILITIES.md, BUILD-PROFILES.md, IMPLEMENTATION-STATUS.md, TESTING-AND-VALIDATION.md, POST-RELEASE-BACKLOG.md. They summarise; the pages above are the detailed reference. Historical pages are listed in the documentation manifest.
How this documentation is kept in sync#
A documentation gate, tests\OmsiLaunch.DocumentationTests, compiles against OmsiLaunch.Api and OmsiLaunch.Core and compares the pages above with the code that defines the public surface:
| Gate | Checks |
|---|---|
docs.cli-flags | Every CliInput.KnownFlags entry appears in the CLI reference as `/flag` or `/flag:`; every CliInput.AcceptedNoEffectFlags entry is marked ACCEPTED_FOR_COMPATIBILITY / CURRENTLY_NO_EFFECT on its line; every command word and every CliInput.HierarchicalRoutes route appears with its runtime operation; every PublicExitCode value has a | n | row in the exit-code table. |
docs.capabilities | Every PublicCapabilityRegistry.All id, every PublicCapabilityRegistry.PublicRuntimeOperationIds entry and every PublicCapabilityClassification name appears in the capabilities reference. |
docs.errors | Every PublicErrorCodes.All code appears in the error reference, and no OL_E_* / OL_W_* literal in src\ or tools\OmsiLaunch.Cli\ is missing from PublicErrorCodes. |
docs.public-api | Every exported type of OmsiLaunch.Api, every enum value and every IOmsiLaunch member appears in the public API reference, and all five stability words are used. |
docs.launchspec | Every public property reachable from LaunchSpec and every value of its enums appears in the LaunchSpec reference. |
docs.session-profiles | Every SessionProfileCompiler.SchemaKeys key, the schema identifier and the 256 KiB limit appear in the session-profile reference. |
docs.structure | Every page in the navigation table exists. |
docs.links | Every relative link in docs\**\*.md (excluding docs\localized\) and in the root *.md files resolves to a file or directory. |
docs.localization | Every locale listed in docs\localized\LOCALIZATION-MANIFEST.md has every page of the localized set; each page keeps the English page's headings, tables and code blocks, every inline code span (flags, capability and operation ids, error codes, keys, identifiers) and every link, and its relative links resolve. |
The gate is one of the suites run by tools\Invoke-OfflineValidation.ps1 (skip it with -SkipDocs). It runs offline, never launches OMSI, and fails the build when a flag, route, capability, error code, enum value or public type is undocumented or a link is broken. It does not check prose, so a page can still be wrong about behaviour; report that as a bug against the page.
Translations#
docs\localized\<locale>\ holds complete translations of this 0.1.0-beta3 documentation for 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 and ja-JP. The page set, the locale roots and the pages that are intentionally not translated are listed in localized/LOCALIZATION-MANIFEST.md. Translations keep every command, flag, identifier, error code and example of the English pages unchanged, and the docs.localization gate checks that. The English pages remain the normative source: where a translation disagrees with them, the English page and the code are authoritative, and the translation is a bug.