OmsiLaunch Documentation

Documentation for version v0.1.0-beta.3View source on GitHub

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#

PagePurpose
Getting StartedPlan, start, observe and stop one session from the OMSI root.
InstallationPrerequisites, extracting the package into the OMSI root, verifying with /version, clean removal.
Public API Quick StartA complete .NET program that plans, starts, reads and stops one session.
CLI ReferenceEvery flag, command word and hierarchical route of OmsiLaunch.exe / OmsiLaunchW.exe.
CLI ExamplesCopy-and-paste command lines for common tasks.
LaunchSpec ReferenceEvery LaunchSpec property and enum value, JSON loading rules for /spec.
Session Profiles Referenceprofile.yaml schema omsilaunch.session-profile/v1, keys, limits, precedence.
Public API ReferenceIOmsiLaunch, public records and enums, stability per member.
Public API InventoryGenerated list of every public type and member with signature and stability.
Runtime ControlRuntime command channel, timeouts, handles, stop semantics.
Capabilities ReferenceCapability catalog and every public runtime operation id with its classification.
Session LifecycleSessionState transitions, what StartSessionAsync promises, how a session ends.
Transactions and RecoveryJournal states, backups, restore verification, session deletions, crash recovery.
Permanent Plugin ModelThe plugins\OmsiLaunch.* closure, manifest-based integrity, what a session never touches.
Local Control / IPCNamed-pipe protocol 0.1, per-installation endpoint, session_id binding, trust model.
OmsiLaunchW.exeThe Windows (no console) host: differences from OmsiLaunch.exe, /silent, dialogs, exit codes.
Windows TrayNotification-area indicator: icon, menu, status window field by field, End session, Explorer restart.
Error ReferenceEvery OL_E_* / OL_W_* code with category and meaning.
Exit CodesPublicExitCode values 0 to 10 and bootstrapper shim codes 100 to 106.
Packaging / Installation LayoutFiles in the release ZIP, release-manifest.json, .omsilaunch\ layout.
Compatibility / Supported OMSI BuildsThe one supported Omsi.exe hash, the accepted Steam LAA hash, platform requirements.
Known LimitationsWhat is unsupported, partial or an accepted risk in this beta.
Runtime Validation StatusWhat 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:

GateChecks
docs.cli-flagsEvery 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.capabilitiesEvery PublicCapabilityRegistry.All id, every PublicCapabilityRegistry.PublicRuntimeOperationIds entry and every PublicCapabilityClassification name appears in the capabilities reference.
docs.errorsEvery 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-apiEvery 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.launchspecEvery public property reachable from LaunchSpec and every value of its enums appears in the LaunchSpec reference.
docs.session-profilesEvery SessionProfileCompiler.SchemaKeys key, the schema identifier and the 256 KiB limit appear in the session-profile reference.
docs.structureEvery page in the navigation table exists.
docs.linksEvery relative link in docs\**\*.md (excluding docs\localized\) and in the root *.md files resolves to a file or directory.
docs.localizationEvery 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.