CMAPI 1.0 install-layout decision
Status: accepted for 1.0. Revisit only in a separately tested post-1.0 design.
Decision
Keep the proven Planet Crafter-local binary layout for 1.0. Setup owns only paths recorded in CMAPI/Install/receipt.json. Mods, configuration, mod data, cache, logs, crash reports, and save backups are not receipt-owned and are preserved by Update, Repair, and Uninstall.
Do not install executable CMAPI files under Documents. Documents may be redirected or synchronized by OneDrive, and controlled-folder access, network latency, partial synchronization, or a second machine can make DLL loading unreliable.
Why relocation is deferred
The current Doorstop configuration names a game-relative bootstrap. Bootstrap then resolves Cecil and the runtime from the game-local CMAPI directory. The launcher, Steam launch-option command, startup diagnostics, backup service, runtime paths, setup health inspection, and ownership receipt all intentionally share that root.
Moving only some binaries would change all of those contracts. The standalone runtime and transactional maintenance have passed extended gameplay and release gates in this layout, so 1.0 does not add an unrelated startup variable.
Candidate post-1.0 split
- Game root: native proxy, Doorstop configuration, and a minimal bootstrap or signed locator—only components technically required for process injection.
%LocalAppData%\SourceNine Labs\CMAPI: versioned launcher/runtime payloads, shared configuration, logs, cache, and updater staging.- A deliberate user choice for mods and backups, with game-local defaults until multi-install and multi-user behavior is proven.
The external locator must be versioned, path-contained, tamper-detecting, recoverable when LocalAppData is unavailable, and validated with Steam launch, UAC, multiple Windows accounts, multiple game installations, offline repair, and uninstall before it replaces the proven layout.