docs(headless): record K3 isolation checkpoint
This commit is contained in:
parent
b6547ff38c
commit
fd9559a063
6 changed files with 114 additions and 10 deletions
|
|
@ -0,0 +1,64 @@
|
|||
# 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
|
||||
|
||||
1. Run the production Release executable against local ACE in a visible
|
||||
terminal with no window, renderer, audio, or UI assemblies.
|
||||
2. Observe initial collision hydration, lifestone recall, reconnect, and exact
|
||||
final content-lease disposal.
|
||||
3. Repeat the production gate on Linux/WSL.
|
||||
4. Add the connected resource evidence and close K3 before deriving K4's
|
||||
numeric 1/5/10/30-session ceilings.
|
||||
|
||||
## Exact rollback
|
||||
|
||||
Newest first:
|
||||
|
||||
```text
|
||||
git revert b6547ff38c375328417855200f41c8af6436f246
|
||||
git revert 9569dadb578b299b24e30aec85eee86ec0c2b3fb
|
||||
git revert 12b500d38362e8aae0a23a4f9712b86367006f76
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue