fix(runtime): restore interaction completion ownership
Preserve prepublication local motion completion, require the PartArray enter-world lifecycle port, and balance deferred Use busy ownership across dispatch and cancellation. Reconcile the completed GameWindow connected gates and add regression coverage. Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
parent
5c955c36ec
commit
f9736ece6c
26 changed files with 675 additions and 68 deletions
|
|
@ -30,9 +30,9 @@ What does NOT go here:
|
|||
automated closeout are complete. The 1,622-line native shell has typed
|
||||
startup, frame, callback, and shutdown owners; 293 focused tests, the
|
||||
7,823/5 Release suite, the lifecycle/reconnect route, two canonical
|
||||
nine-stop soaks, and the Slice-7 framebuffer comparison pass. Only the
|
||||
user's final connected visual matrix remains before the campaign is marked
|
||||
complete in [`docs/architecture/code-structure.md`](architecture/code-structure.md).
|
||||
nine-stop soaks, and the Slice-7 framebuffer comparison pass. The user's
|
||||
connected visual matrix passed 2026-07-23, so the campaign is complete in
|
||||
[`docs/architecture/code-structure.md`](architecture/code-structure.md).
|
||||
- **Separate rendering gate:** `#225`, lifestone/particle alpha ordering. Its
|
||||
connected performance, lifetime, and unattended portal routes pass.
|
||||
- **Carried behavior debt:** `#153` far-teleport unstreamed-edge arrival and
|
||||
|
|
@ -7600,6 +7600,40 @@ outdoors at the angle that previously erased it.
|
|||
|
||||
# Recently closed
|
||||
|
||||
## #234 — [DONE 2026-07-23] Cancelled close-range Use could strand the busy cursor
|
||||
|
||||
**Closed:** 2026-07-23
|
||||
**Severity:** HIGH
|
||||
**Component:** interaction / retained UI / local approach
|
||||
|
||||
**Resolution:** `ItemInteractionController` acquired retail's shared busy
|
||||
reference before `SelectionInteractionController` completed a close-range
|
||||
turn. If that pre-wire approach was cancelled, failed to install, lost its
|
||||
session, or crossed an entity-incarnation boundary, no Use packet existed and
|
||||
therefore ACE could never return the `UseDone` needed to release the count.
|
||||
|
||||
An explicit, generation-bound `ItemUseRequestReservation` now owns that
|
||||
boundary. Successful wire dispatch transfers ownership to authoritative
|
||||
`UseDone`; every pre-dispatch cancellation path releases the reservation
|
||||
locally and idempotently. Session reset invalidates late reservations so an
|
||||
old callback cannot decrement a new session. Focused tests pin cancellation,
|
||||
failed movement installation, stale identity, synchronous turn completion,
|
||||
successful dispatch, and late post-reset resolution.
|
||||
|
||||
The connected report itself completed normally: the log contained the
|
||||
successful NPC Use and `UseDone(0)`, and a managed heap snapshot afterward
|
||||
showed busy count zero with no pending inventory or auto-wield transaction.
|
||||
That evidence separated an ordinary in-flight rejection from the real latent
|
||||
pre-wire leak.
|
||||
|
||||
**Connected gate:** Passed 2026-07-23. Cancelling the close-range turn no
|
||||
longer strands the busy cursor, and the next NPC/item Use succeeds normally.
|
||||
|
||||
**Research:**
|
||||
[`docs/research/2026-07-23-retail-use-busy-ownership-pseudocode.md`](research/2026-07-23-retail-use-busy-ownership-pseudocode.md).
|
||||
|
||||
---
|
||||
|
||||
## #229 — [DONE 2026-07-20] Initial login revealed an incomplete world
|
||||
|
||||
**Closed:** 2026-07-20
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue