45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# Slice H-a3 — equipped-child post-network reconciliation
|
|
|
|
## Preserved ordering
|
|
|
|
Retail live-object presentation still has two authority boundaries:
|
|
|
|
1. the complete parent-first attachment update after animation;
|
|
2. post-network spatial reconciliation after accepted inbound mutations.
|
|
|
|
The second boundary was not deleted or delayed.
|
|
|
|
## Change
|
|
|
|
`EntityEffectPoseRegistry` now carries a monotonic change version for the
|
|
current pose-owner lifetime. It advances only when root, indexed parts, part
|
|
availability, or cell changes.
|
|
|
|
Each attached projection remembers the exact parent entity, pose version,
|
|
draw/ancestor visibility, and parent cell used for its last composition.
|
|
|
|
- The animation-order pass remains a complete parent-first walk.
|
|
- The post-network pass keeps transition retries but skips a child whose
|
|
remembered parent presentation is unchanged.
|
|
- A changed root recomposes its direct child; publishing that child's pose
|
|
advances its version, so descendants update later in the same parent-first
|
|
pass.
|
|
- Hidden/NoDraw ancestry and cell changes participate even when the geometric
|
|
pose itself is unchanged.
|
|
- Pose failure still withdraws the same complete subtree.
|
|
|
|
The per-frame transition retry path no longer allocates dictionary `ToArray`
|
|
snapshots. It copies key/value pairs into retained typed scratch lists, keeping
|
|
the old snapshot-before-callback semantics.
|
|
|
|
## Gate
|
|
|
|
- Existing equip/unparent/reparent/rollback/pose-loss/teardown tests pass.
|
|
- A root → child → grandchild test proves unchanged post-network reconcile
|
|
performs zero compositions and a changed root performs exactly two in
|
|
parent-first order.
|
|
- 1,000 stable post-network reconciles allocate zero managed bytes on the
|
|
calling thread.
|
|
|
|
Release gate: 3,783 App tests passed / 3 skipped; 8,267 complete-solution
|
|
tests passed / 5 skipped.
|