docs(phase4): Phase 4 overview — offline emulator → Steam Linux Runtime container (4.1–4.4) - #83
Merged
Merged
Conversation
…-> SLR container)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 4 — Containerized Steam Launch (Phases 4.1–4.4): SteamFlow can now run Windows games inside Valve's official Steam Linux Runtime (SLR) container, alongside the existing client-based and offline modes.
What was delivered
Three Steam-mediated launch modes (
Auto/OfflineEmulated/OnlineContainerized):Autosteamclient.dll(named pipe)OfflineEmulatedOnlineContainerizedsteamrt4)lsteamclient.dll→steamclient.so(network IPC)Phase 4.1 — Offline emulator mode
OfflineEmulatedSteamMode: clientless launch with a local emulator satisfying the Steam API surface.Phase 4.2 — Runtime provisioning + command builder
RuntimeManager: SLR download/verify/extract/parse into~/.config/SteamFlow/runtimes/<id>/(scout/soldier/sniper/steamrt4), client-managedSteamLinuxRuntime_<line>detection, mtree/hashArchiveVerification.PressureVesselBuilder: native Rust argv builder forpressure-vessel-wrap/bwrapwith host Vulkan/EGL/dri/nvidia/display/audio pass-through.Phase 4.3 — Containerized launch pipeline + Steam IPC bridge
pressure-vessel-wrapcontract: the runtime'srunscript is the entry point; valid flags are--filesystem/--env-if-host/ one--(the earlier--runtime-path/--env/--bind-mountetc. were falsified against the real binary and corrected).steam.exe:SteamAPI_Init()is intercepted by Proton'slsteamclient.dlland routed to the host Steam client.Phase 4.4 — Runtime integrity repair, parity, UI status
steamflow runtime status [<line>]andruntime repair <line> [--force](re-download +force_reprovisionafterpurge).Steam Linux Runtime 4.0 (steamrt4) [Valid · <rev>]with an inline Repair Runtime action (AsyncOp::RuntimeRepaired).test-diffauto-provisions the native reference capture (PROTON_LOG=1→~/steam-<appid>.log).ensure_runtime_executable) — the depot downloader strips exec bits, which broke both preflight and pressure-vessel's graphics-provider detection ("no common CPU arch");VERSIONS.txttab-separated table parsing; dropped the bogusmanifest.jsonrequirement.Verification
cargo check --all-targetsclean;cargo test --all-targetsgreen (140 lib tests + all integration suites).steamflow runtime repair steamrt4 --force— re-downloaded the corrupt SLR 4.0 depot (672 MB),✅ repaired (revision 4.0.20260805.254769),✅ passes is_usable_runtime_root(). Truncatedusr-mtree.txt.gz(0 B → 358 KB) replaced.steamflow test-launch 620(OnlineContainerized, pure-PE Proton) boots Portal 2 insidesteamrt4—bwrapup, Proton running,portal2.exealive, d3dx assets loading. Both the Phase 4.3 truncated-archive error and the Phase 4.4 arch abort are gone.Docs
docs/architecture/phase4-overview.md← this PRdocs/architecture/phase4-offline-emulator-mode.md(4.1)docs/architecture/phase4-runtime-provisioning.md(4.2)docs/architecture/phase4-containerized-launch.md(4.3)docs/architecture/phase4-runtime-repair.md(4.4)Known limitations
OnlineContainerizedrequires the native Linux Steam client on the host (its 32-bit core needs i386 libs this host lacks) — the container boot is verified; full Steamworks connectivity is environment-gated.runtime repair --forcealways re-downloads the depot even when the client-managed runtime is already usable (future optimization).