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
|
|
@ -26,8 +26,8 @@ What does NOT go here:
|
|||
|
||||
## Current queue — 2026-07-21
|
||||
|
||||
- **Active structural work:** `GameWindow` decomposition, beginning with the
|
||||
selection/interaction ownership slice in
|
||||
- **Active structural work:** `GameWindow` decomposition. Selection/interaction
|
||||
ownership is complete; Slice 2 live animation presentation is next in
|
||||
[`docs/architecture/code-structure.md`](architecture/code-structure.md).
|
||||
This is the behavior-preserving prerequisite before new M4 feature bodies.
|
||||
- **Separate rendering gate:** `#225`, lifestone/particle alpha ordering. Its
|
||||
|
|
@ -69,7 +69,7 @@ Copy this block when adding a new issue:
|
|||
|
||||
## #231 — F-key pickup omits retail pending destination-slot presentation
|
||||
|
||||
**Status:** FIXED (2026-07-21) — keyboard pickup uses the shared ItemHolder path
|
||||
**Status:** DONE (2026-07-21, `52dbb574` + `5acc3f01`)
|
||||
**Severity:** MEDIUM
|
||||
**Filed:** 2026-07-21
|
||||
**Component:** selection / inventory / retained UI
|
||||
|
|
@ -86,9 +86,9 @@ always sends `CM_Item::SendNotice_ShowPendingInPlayer` before
|
|||
`ItemInteractionController` and raises `PendingBackpackPlacementRequested`;
|
||||
the F-key switch case bypasses that owner.
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/GameWindow.cs`;
|
||||
`src/AcDream.App/UI/ItemInteractionController.cs`;
|
||||
future `src/AcDream.App/Interaction/SelectionInteractionController.cs`.
|
||||
**Files:** `src/AcDream.App/UI/ItemInteractionController.cs`;
|
||||
`src/AcDream.App/Interaction/SelectionInteractionController.cs`;
|
||||
`src/AcDream.App/UI/Layout/InventoryController.cs`.
|
||||
|
||||
**Research:**
|
||||
[`docs/plans/2026-07-21-gamewindow-slice-1-selection-interaction.md`](plans/2026-07-21-gamewindow-slice-1-selection-interaction.md).
|
||||
|
|
@ -99,15 +99,20 @@ Server confirmation settles it; server failure removes it without speculative
|
|||
ownership mutation.
|
||||
|
||||
**Resolution:** `ItemInteractionController.PlaceWorldItemInBackpack` now owns
|
||||
the shared pending-placement notification and request dispatch. Both
|
||||
double-click activation and the F-key route enter that method, so they publish
|
||||
the same destination container and placement before the server request.
|
||||
the exact-token pending destination projection. The F-key route reserves it
|
||||
before immediate or deferred MoveTo transport, promotes that same reservation
|
||||
only when the packet is actually sent, and withdraws it on cancel/lifetime
|
||||
loss. The review correction also ported the single global
|
||||
`ACCWeenieObject::prevRequest` owner across inventory, external-container,
|
||||
toolbar, paperdoll, give, merge, split, and drop routes. Optimistic placement,
|
||||
server rollback, and authoritative response notifications are distinct; a
|
||||
response clears global and local state atomically before reentrant observers.
|
||||
|
||||
---
|
||||
|
||||
## #230 — Selection hits and deferred actions can cross live GUID incarnations
|
||||
|
||||
**Status:** FIXED (2026-07-21) — incarnation identity is carried and revalidated
|
||||
**Status:** DONE (2026-07-21, `047a4c83` + `5acc3f01`)
|
||||
**Severity:** HIGH
|
||||
**Filed:** 2026-07-21
|
||||
**Component:** selection / live entity lifetime / interaction
|
||||
|
|
@ -127,9 +132,9 @@ pending action. `CombatTargetController` also treats SessionReset like an
|
|||
ordinary clear and can re-acquire before live records drain.
|
||||
|
||||
**Files:** `src/AcDream.Core/Selection/RetailSelectionMesh.cs`;
|
||||
`src/AcDream.App/Rendering/Selection/`;
|
||||
`src/AcDream.App/Rendering/GameWindow.cs`;
|
||||
`src/AcDream.App/Combat/CombatTargetController.cs`.
|
||||
`src/AcDream.App/Interaction/WorldSelectionQuery.cs`;
|
||||
`src/AcDream.App/Interaction/SelectionInteractionController.cs`;
|
||||
`src/AcDream.App/Input/OutboundInteractionQueue.cs`.
|
||||
|
||||
**Research:**
|
||||
[`docs/plans/2026-07-21-gamewindow-slice-1-selection-interaction.md`](plans/2026-07-21-gamewindow-slice-1-selection-interaction.md).
|
||||
|
|
@ -144,7 +149,10 @@ complete interaction lifetime and never auto-targets.
|
|||
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.
|
||||
throttle state, and cannot trigger combat auto-target acquisition. Queued
|
||||
input also captures the exact `ClientObject` reference, deferred movement is a
|
||||
cancel-before-arm transaction, and session queue epochs prevent pre-reset work
|
||||
from crossing into a new world.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -179,7 +187,7 @@ production runtime failure.
|
|||
|
||||
**Acceptance:** A non-incremental Release solution build reports zero warnings
|
||||
and zero errors without suppressing analyzers or weakening nullable checking;
|
||||
the full 6,481-pass / 5-skip suite remains green.
|
||||
the full 6,558-pass / 5-skip suite remains green.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue