fix(interaction): bind selection to live incarnations

Carry local WorldEntity identity through render hits, lighting pulses, and deferred movement actions so GUID reuse cannot target a replacement. Reset all session-owned selection and ItemHolder state and prevent combat auto-target during teardown.
This commit is contained in:
Erik 2026-07-21 07:07:58 +02:00
parent c271383714
commit 047a4c83b5
19 changed files with 374 additions and 42 deletions

View file

@ -102,7 +102,7 @@ ownership mutation.
## #230 — Selection hits and deferred actions can cross live GUID incarnations
**Status:** IN-PROGRESS — isolated as Slice 1 prerequisite hardening
**Status:** FIXED (2026-07-21) — incarnation identity is carried and revalidated
**Severity:** HIGH
**Filed:** 2026-07-21
**Component:** selection / live entity lifetime / interaction
@ -134,6 +134,13 @@ old click lighting never colors a replacement; natural MoveTo completion sends
only for the captured current visible incarnation; session reset clears the
complete interaction lifetime and never auto-targets.
**Resolution:** Render parts/hits and SmartBox lighting now carry the local
`WorldEntity.Id`; `LiveEntityRuntime` revalidates that identity against the
current interaction-visible record. Deferred actions capture the same identity
and teardown clears the captured action even after GUID replacement. Session
reset now clears published selection geometry, lighting, ItemHolder target and
throttle state, and cannot trigger combat auto-target acquisition.
---
## #228 — Clean Release build emits 17 test-project warnings