docs(architecture): close selection extraction slice
Record the measured GameWindow reduction, final review and test gates, durable selection/inventory ownership rules, and live animation presentation as Slice 2. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
5acc3f01cf
commit
9ad8113c79
10 changed files with 141 additions and 52 deletions
|
|
@ -213,3 +213,36 @@ plus optional stack size, palette, and shade. Healing kit WCIDs are 628 crude,
|
|||
629 plain, 630 good, 631 excellent, and 632 peerless. The `+Acdream` developer
|
||||
character can therefore create the best kit with either `/ci 632` or `@ci 632`;
|
||||
both forms must produce canonical `@ci 632` Talk text.
|
||||
|
||||
## 2026-07-21 selection extraction and inventory transaction ownership
|
||||
|
||||
`WorldSelectionQuery` is the read-only App boundary over canonical live state,
|
||||
the completed render-selection frame, object metadata, camera/cursor inputs,
|
||||
DAT selection bounds, hostile lookup, and Use/PickUp range classification. It
|
||||
never mutates `SelectionState`, starts movement, or sends packets.
|
||||
|
||||
`SelectionInteractionController` is the corresponding intent owner. It owns
|
||||
world-click routing, closest/previous selection, the outbound frame-boundary
|
||||
queue, Use/PickUp transport, and MoveTo deferral. Queued work captures both the
|
||||
live local entity ID and exact `ClientObject` reference where available;
|
||||
deferred movement uses cancel-before-arm ordering and a queue epoch prevents
|
||||
pre-reset work from crossing session lifetime.
|
||||
|
||||
`ItemInteractionController` owns the one global inventory transaction, shaped
|
||||
after retail `ACCWeenieObject::prevRequest`. Inventory, external-container,
|
||||
toolbar, paperdoll, give, merge, split, drop, and deferred keyboard pickup all
|
||||
acquire the same owner. A destination waiting projection carries an exact token
|
||||
and item identity. Keyboard pickup may remain reserved-but-undispatched while
|
||||
MoveTo runs, then promotes that exact token only when the wire request is sent.
|
||||
|
||||
`ClientObjectMoveOrigin` distinguishes immediate optimistic repaint, server
|
||||
rollback repaint, and authoritative response. Only authoritative move/failure/
|
||||
remove/stack responses complete the transaction. Completion clears the global
|
||||
owner and local waiting projection atomically, publishes the old token-specific
|
||||
projection resolution, then advertises readiness. This order is essential:
|
||||
reentrant observers may start the next request without the old response tail
|
||||
rejecting, hiding, or consuming it. Do not regress to GUID-only cleanup or let
|
||||
ordinary `ObjectUpdated` events complete inventory work.
|
||||
|
||||
`GameWindow` now constructs and forwards narrow lifecycle edges to these
|
||||
owners; no selection algorithm or interaction request body belongs there.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue