1.8 KiB
1.8 KiB
Slice H-a3 — equipped-child post-network reconciliation
Preserved ordering
Retail live-object presentation still has two authority boundaries:
- the complete parent-first attachment update after animation;
- 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.