acdream/docs/research/2026-07-25-slice-h-a3-attached-pose-reconcile.md

1.8 KiB

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.