fix(streaming): preserve portal destination ownership
Detach old-world spatial ownership atomically, prioritize destination retirement dependencies, and reveal the viewport at the retail transition edge. Give private paperdoll views independent mesh ownership and retain dormant ACE entities so portal revisits preserve server objects without extending active GPU lifetimes.
This commit is contained in:
parent
2c848d4167
commit
823936ec31
57 changed files with 2551 additions and 324 deletions
|
|
@ -1632,8 +1632,11 @@ port in any phase — no separate listing here.
|
|||
> shadow referee, production cutover, and acceptance matrix. The user
|
||||
> explicitly approved Slices F–L, including the F/G and J gates, on
|
||||
> 2026-07-24. Slice F and G0–G4 are implemented; 46,599 automated G4
|
||||
> comparisons have zero mismatches. Its physical-display visual gate and G5
|
||||
> old-path deletion remain pending, with exact rollback
|
||||
> comparisons have zero mismatches. The 2026-07-25 connected visual gate
|
||||
> accepted the retained scene after independent portal scheduling/private-view/
|
||||
> ACE-revisit ownership regressions were corrected; G5 old-path deletion and
|
||||
> production-only profiling are now active. The historical exact cutover
|
||||
> rollback remains
|
||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||
> retained UI/frame work, exact bounded light selection, and
|
||||
> pooled/borrowed/direct network I/O pass 8,292 Release tests / 5 skips and the
|
||||
|
|
|
|||
|
|
@ -108,13 +108,15 @@ publication, retirement, upload, warmup, or resource backlog. Capped/uncapped
|
|||
CPU p99 is 34.7%/30.4% below Slice A and maximum frame allocation is
|
||||
84.7%/82.2% lower. The user explicitly approved Slices F–L, including both
|
||||
the F/G ECS and Slice J gameplay-owner gates, on 2026-07-24. Slice F and
|
||||
G0–G4 are implemented; G4's automated gate has zero mismatches while its
|
||||
physical-display visual gate and G5 deletion remain pending. Slice H is
|
||||
G0–G4 are implemented; G4's automated gate has zero mismatches and its
|
||||
2026-07-25 connected visual gate passes after the portal scheduling/private
|
||||
viewport/ACE revisit regression correction. G5 deletion and production-only
|
||||
profiling are active. Slice H is
|
||||
complete: retained UI/frame work, exact bounded light selection, and
|
||||
pooled/borrowed/direct network I/O pass 8,292 Release tests / 5 skips and the
|
||||
seven-checkpoint connected lifecycle/reconnect gate. Slice I is active under
|
||||
[`2026-07-25-modern-runtime-slice-i.md`](2026-07-25-modern-runtime-slice-i.md).
|
||||
The exact G4 visual rollback remains
|
||||
The historical exact G4 visual rollback remains
|
||||
`git revert ef1d263337997bb030eadb7b8e71d73dc659907a`.
|
||||
|
||||
Slice 1's 18-cell favorite-spell overflow bar is user-accepted. Slice 2's
|
||||
|
|
|
|||
|
|
@ -423,6 +423,40 @@ frame allocation fell 84.7%/82.2%. Relative to Slice C, CPU p99 improved
|
|||
21.4%/16.1% and largest frame allocation fell 33.5%/9.7%. Full evidence:
|
||||
[`../research/2026-07-24-slice-e-cost-budgeted-streaming-report.md`](../research/2026-07-24-slice-e-cost-budgeted-streaming-report.md).
|
||||
|
||||
### Post-closeout portal regression correction — 2026-07-25
|
||||
|
||||
The first retained-scene visual pass exposed four scheduling/ownership defects
|
||||
that the original E6 route did not isolate:
|
||||
|
||||
- a 25x25 shared-origin window admitted 625 detach operations over many
|
||||
frames even though no intermediate old spatial subset was observable;
|
||||
- destination publication could sit behind an unrelated retirement receipt,
|
||||
small-mesh upload count, or composite upload count while most byte budget
|
||||
remained unused;
|
||||
- private paperdoll/appraisal meshes borrowed world ownership and the
|
||||
paperdoll discarded its private object during temporary player
|
||||
unavailability;
|
||||
- ACE could retain an expired GUID in `KnownObjects`, omit CreateObject on
|
||||
revisit, and leave doors, signs, portals, and NPCs permanently absent.
|
||||
|
||||
The correction atomically swaps the old spatial generation into exact deferred
|
||||
receipts, advances only the destination's same-key receipt out of order, and
|
||||
orders destination worker/publication work first. A reveal-generation render
|
||||
profile raises only the small-object mesh count from 8 to 64 and composite
|
||||
count from 16 to 64; all 8 MiB byte/array/buffer/mipmap ceilings remain
|
||||
unchanged. Ordinary work still advances when no destination completion exists.
|
||||
Private viewports now own independent mesh leases and the paperdoll survives
|
||||
temporary SmartBox absence. `DormantLiveEntityStore` retains only cold accepted
|
||||
spawn data after active teardown so an ACE revisit can hydrate through the
|
||||
ordinary generation-safe transaction.
|
||||
|
||||
The world-availability edge now ends at retail's portal/world viewport swap;
|
||||
the one-second `WorldFadeIn` protocol tail still sends LoginComplete and closes
|
||||
teleport state later. The user confirmed faster portal transit, continuous
|
||||
paperdoll presentation, and persistent server-spawned objects after repeated
|
||||
portal travel. Full evidence:
|
||||
[`../research/2026-07-25-portal-regression-closeout.md`](../research/2026-07-25-portal-regression-closeout.md).
|
||||
|
||||
## 10. Acceptance
|
||||
|
||||
Slice E closes only when:
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
**Date:** 2026-07-24
|
||||
|
||||
**Status:** approved 2026-07-24; Slice F complete, Slice G active
|
||||
**Status:** approved 2026-07-24; Slice F and G4 complete, G5 active
|
||||
|
||||
**Program:** `docs/plans/2026-07-24-modern-runtime-architecture.md`
|
||||
|
||||
|
|
@ -27,8 +27,8 @@ retail-faithful gameplay
|
|||
| G1 — scene-query replacement | complete | Exact `e346f8bb` passed capped and uncapped nine-stop routes plus uncapped dense Arwic: 29,392 + 29,025 + 1,522 same-frame candidate comparisons, zero mismatches, equal counts/digests at every checkpoint, exact binary/source identity, and graceful shutdown. Evidence: `docs/research/2026-07-25-slice-g1-scene-query-candidate-gate.md`. |
|
||||
| G2 — packed dispatcher input | complete | Exact `f9829d5f` passed capped and uncapped nine-stop routes plus dense Arwic. Candidate order, packed input, classified output, and selection each completed 16,879 + 17,282 + 770 comparisons with zero mismatch; journal/rejection counts were zero and shutdown graceful. Evidence: `docs/research/2026-07-25-slice-g2-packed-dispatcher-gate.md`. |
|
||||
| G3 — retained classification/storage | complete | Exact `6a026c5a` passed capped and uncapped nine-stop routes plus dense Arwic with 17,069 + 16,827 + 757 exact comparisons in every channel, zero mismatch, warm cross-frame reuse, and graceful shutdown. Evidence: `docs/research/2026-07-25-slice-g3-retained-classification-gate.md`. |
|
||||
| G4 — production cutover | automated gate complete; visual gate pending | Exact cutover `ef1d263337997bb030eadb7b8e71d73dc659907a` makes the retained frame product the production entity source at the existing five retail PView stages. Exact `03b10183` passed capped/uncapped nine-stop and uncapped dense-Arwic automation with 46,599 total product comparisons, zero mismatch, every reveal ready, and graceful shutdown. The old route referee remains until the user visual gate passes. Evidence: `docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md`. |
|
||||
| G5 | pending | Physical performance/lifecycle closeout follows the user visual gate. |
|
||||
| G4 — production cutover | complete | Exact cutover `ef1d263337997bb030eadb7b8e71d73dc659907a` makes the retained frame product the production entity source at the existing five retail PView stages. Exact `03b10183` passed capped/uncapped nine-stop and uncapped dense-Arwic automation with 46,599 total product comparisons and zero mismatch. The 2026-07-25 connected visual pass accepted the retained scene after its independent portal scheduling/ownership regressions were corrected. Evidence: `docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md` and `docs/research/2026-07-25-portal-regression-closeout.md`. |
|
||||
| G5 | active | The accepted visual gate unblocks production-only performance/lifecycle closeout and old-route deletion. |
|
||||
|
||||
The exact pre-F/G runtime rollback anchor remains `e7d9d6fa`. F0 is
|
||||
non-drawing diagnostic infrastructure and therefore is not a visual-cutover
|
||||
|
|
@ -646,9 +646,12 @@ the scene journal was empty, source and binary hashes matched, and every
|
|||
process closed gracefully. The gate corrected whole-retained-world composite
|
||||
warmup discovery by sourcing the exact published 3×3 destination neighborhood;
|
||||
that correction is draw-path independent. Fixed-camera artifacts are captured.
|
||||
The user visual gate is the only remaining G4 acceptance item, so old-route
|
||||
deletion and G5 production-only profiling remain blocked. Evidence:
|
||||
`docs/research/2026-07-25-slice-g4-production-cutover-automated-gate.md`.
|
||||
The user completed the connected visual gate on 2026-07-25. The retained scene
|
||||
itself remained exact; the pass exposed independent portal scheduling, private
|
||||
viewport ownership, and ACE revisit-liveness defects. Their root-cause
|
||||
correction is recorded in
|
||||
`docs/research/2026-07-25-portal-regression-closeout.md`. G4 is accepted and
|
||||
old-route deletion plus G5 production-only profiling are unblocked.
|
||||
|
||||
### G5 — Physical performance and lifecycle gate
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
**Status:** COMPLETE (2026-07-25)
|
||||
**Parent plan:** `2026-07-24-modern-runtime-architecture.md`, Slice H
|
||||
**Prerequisite state:** Slice G4 production cutover is automated-gated; its
|
||||
user visual gate remains pending.
|
||||
**Prerequisite state at execution:** Slice G4 production cutover was
|
||||
automated-gated; its user visual gate later passed on 2026-07-25.
|
||||
|
||||
## 1. Safety boundary
|
||||
|
||||
|
|
@ -11,8 +11,8 @@ Slice H removes work which scales with presentation rate. It does not change
|
|||
retail gameplay rules, visible-cell authority, light membership, packet
|
||||
ordering, acknowledgement timing, heartbeat placement, or UI presentation.
|
||||
|
||||
The G4 old-route referee remains available until the user accepts the visual
|
||||
gate. Slice H must not delete or alter that rollback boundary.
|
||||
Slice H did not delete or alter the G4 old-route referee while its visual gate
|
||||
was pending. That gate has since passed; G5 owns the final deletion boundary.
|
||||
|
||||
If the G4 visual result is wrong, revert only:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Modern runtime Slice I — flat collision assets and zero-allocation physics
|
||||
|
||||
**Status:** I0 COMPLETE — retail oracle, representative graph fixtures, and
|
||||
four-mover allocation baselines fixed; I1 reusable scratch is next
|
||||
four-mover allocation baselines fixed; accepted G5 closeout now precedes I1
|
||||
**Parent:** `2026-07-24-modern-runtime-architecture.md`, Slice I
|
||||
**Purpose:** remove parsed DAT object graphs and steady collision allocations
|
||||
without changing one retail collision decision, float, comparison, or traversal
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue