# Slice J6.4 closeout — exact graphical-host acknowledgement **Status:** COMPLETE **Production commit:** `18d17d8bb17ed9ff3ed01da8273e2948abe6398b` **Exact rollback:** `git revert 18d17d8bb17ed9ff3ed01da8273e2948abe6398b` ## Result `RuntimeWorldTransitState` now owns the complete presentation-independent login/portal lifetime, including the exact work still owed by a graphical or headless host. App no longer infers completion from local booleans. Instead, Runtime issues one `RuntimeWorldHostProjectionToken` for the exact reveal generation and destination cell and records the remaining typed acknowledgements: 1. host projection registered; 2. simulation release projected; 3. destination reservation released; 4. terminal completion projected. Wrong-generation, wrong-cell, duplicate, empty, composite, reordered, and post-terminal acknowledgements are rejected. Cancellation and supersession retain the exact remaining suffix. Session reset refuses to erase an outstanding host obligation. `WorldRevealCoordinator` is now a strict graphical adapter. Its local records contain only App resource receipts associated with a Runtime token. The drain is serialized and re-entrancy safe: callback failure leaves the exact suffix retryable, while a callback that starts or cancels another reveal cannot overwrite or leak the prior destination reservation. `WorldGenerationQuiescence` uses the same edge-before-callback rule and converges audio to the newest desired state after failure or re-entrancy. Normalized runtime traces and connected checkpoints now expose both canonical ownership ledgers: - `RuntimeWorldEnvironmentOwnershipSnapshot`; - `RuntimeWorldTransitOwnershipSnapshot`, including host projection and pending-host-acknowledgement counts. The connected gate rejects a stable checkpoint unless the environment owner is initialized with one active day group and all transit/host obligations have converged to zero. ## Retail ordering preserved The ownership change preserves the already accepted retail order documented in `2026-07-15-retail-portal-space-pseudocode.md` and `2026-07-16-portal-completion-pseudocode.md`: - destination identity is accepted before placement; - readiness remains latched once accepted; - simulation is released only after materialization; - the normal viewport is observed before terminal completion; - incomplete destinations remain in the authored portal tunnel; - presentation resources retire after their final consumer edge. No portal timer, forced-ready path, alternate animation, additional frame queue, or new retail divergence was introduced. ## Automated evidence - Focused Runtime host/ownership fixtures: 58 passed. - Focused App reveal/quiescence fixtures: 52 passed. - `AcDream.Runtime.Tests`: 365 passed. - `AcDream.App.Tests`: 3,716 passed / 3 skipped. - `dotnet build AcDream.slnx -c Release`: passed, zero errors. - Complete Release solution: 8,642 passed / 5 skipped. - Dependency/source guards prove the direct Runtime host loads no App/UI/Silk/OpenAL/Arch/ImGui assembly and that App has no replacement transit-authority field. - Failure-injection fixtures cover registration, simulation release, reservation release, terminal completion, audio projection, reset, and callback re-entrancy. Every ownership ledger converges to zero. The direct Runtime-only fixture completes login, portal, cancellation, and reset without constructing `GameWindow` or loading a graphical/audio backend. ## Connected exact-binary evidence Report: `logs/connected-world-gate-20260726-182805/report.json` - exact commit: `18d17d8bb17ed9ff3ed01da8273e2948abe6398b`; - capped route: login → Aerlinthe → Rynthid → Facility Hub → Holtburg → Aerlinthe revisit; - uncapped route: fresh-process reconnect; - seven stable checkpoints; - both processes exited gracefully with code zero; - zero failures and only the expected world-edge landblock-miss warning; - every checkpoint reports `DayGroupDefinitionCount = 20`, `ActiveDayGroupCount = 1`, `IsSessionIdle = true`, `HostProjectionCount = 0`, and `PendingHostAcknowledgementCount = 0`. This closes J6.4 and J6.5. Slice J6 has one Runtime environment owner, one Runtime transit/reveal owner, an exact host acknowledgement protocol, and no remaining App reconstruction of portal authority.