2.6 KiB
Slice K3 shared-content and isolation checkpoint
Date: 2026-07-27
Status: Automated checkpoint complete; connected Windows/Linux gate remains
Commits: 12b500d3, 9569dadb, b6547ff3
Outcome
The production headless process now opens DAT and acdream.pak content once,
leases the exact owner to every configured session, and disposes the mapping
only after the final lease. Sessions share immutable magic/catalog, terrain
height, and bounded flat-collision payloads while retaining distinct
GameRuntime, entity, object, action, movement, physics-engine, data-cache,
scratch, and teardown owners.
The direct inbound route now projects accepted local-player spawn/position and
portal state into one per-session movement controller and a per-session
collision neighborhood. Terrain, EnvCell topology, buildings, stabs, and
retail-generated scenery use the same presentation-free content builder as the
graphical streaming path. Headless hydration deliberately skips visual bounds,
so it does not populate the graphical process-wide GfxObjBounds cache.
The scheduler quarantines a throwing policy, detaches it before canonical teardown deltas, and continues healthy sessions. Headless startup rejects process-global physics probes whose mutable capture cursors cannot be attributed safely across sessions.
Automated evidence
- Runtime tests: 412 passed.
- Headless tests: 42 passed.
- App tests: 3,722 passed / 3 skipped.
- Complete Release solution: 8,758 passed / 5 skipped.
- Streaming/collision focused gate: 277 passed.
- Parameterized 1/5/10-session gate:
- identical server GUIDs remain isolated;
- activity and portal completion remain per Runtime root;
- reconnect replaces only that session's incarnation/generation;
- every teardown ledger converges.
- Policy-fault gate: one failing policy is quarantined while the healthy session continues ticking.
- Shared-content gate: exact DAT, package, magic catalog, height-table backing array, and bounded collision source are shared; mutable physics/cache/ movement owners are not.
Remaining K3 gate
- Run the production Release executable against local ACE in a visible terminal with no window, renderer, audio, or UI assemblies.
- Observe initial collision hydration, lifestone recall, reconnect, and exact final content-lease disposal.
- Repeat the production gate on Linux/WSL.
- Add the connected resource evidence and close K3 before deriving K4's numeric 1/5/10/30-session ceilings.
Exact rollback
Newest first:
git revert b6547ff38c375328417855200f41c8af6436f246
git revert 9569dadb578b299b24e30aec85eee86ec0c2b3fb
git revert 12b500d38362e8aae0a23a4f9712b86367006f76