docs(architecture): reconcile GameWindow extraction program

Close the completed M3 and portal observer gates, make the behavior-preserving GameWindow ownership campaign the explicit M4 prerequisite, and replace the stale extraction sketch with an implementation-audited sequence.

Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-21 06:44:29 +02:00
parent f4cf802330
commit cf50ee3d50
8 changed files with 354 additions and 220 deletions

View file

@ -2,28 +2,28 @@
**Status:** Living document. Created 2026-05-12.
**Sits above:** [`docs/plans/2026-04-11-roadmap.md`](2026-04-11-roadmap.md) (the strategic phase index).
**Currently working toward:** **M3 — "Cast a spell." M2 — "Kill a drudge"
LANDED 2026-07-15.** The complete connected melee/missile, death/loot,
inventory, and item-giving demo is user-gated. The shared projectile/effect
foundation is hardened through Step 9. Spellbook/component-book filtering,
favorite spell bar, connected casting/enchantment effects, and portal-space
presentation have passed their single-client visual gates. The corrective bounded
render/resource-lifetime integration passed its seven-destination connected
stress gate without a crash or cumulative collapse. A second deterministic
world-lifecycle gate now protects fresh login, outdoor/world-edge/dungeon
travel, same-location revisit, exact graceful disconnect, and an uncapped
fresh-process reconnect with canonical readiness snapshots and saved PNG/JSON
artifacts. The remaining M3 visual requirement is the final two-client
portal-out/materialize observer gate. The new R6 object-update cutover has
passed its unattended connected input/portal/performance rebaseline; its
locomotion/collision/projectile/teleport visual gate remains for the next local
viewing session before that observer gate.
**Currently working toward:** **M4 — "Live in the world." M3 — "Cast a
spell" LANDED 2026-07-21.** Projectile/self-buff casting, protection effects,
spellbook/component-book filtering and deletion, favorite spell bars, active
effects, recall, portal-space presentation, and the complete two-client
portal-out/materialization observer flow are user-gated. The R6 locomotion,
collision, projectile, teleport, and radar rebaseline also passes. Deterministic
world-lifecycle automation protects fresh login, outdoor/world-edge/dungeon
travel, same-location revisit, exact graceful disconnect, and uncapped
fresh-process reconnect with canonical JSON/PNG evidence.
Before new M4 quest/emote/character-creation subsystem bodies enter the App
layer, the active structural prerequisite is the behavior-preserving
`GameWindow` decomposition in
[`docs/architecture/code-structure.md`](../architecture/code-structure.md).
The 2026-07-21 audit found 15,723 lines, 258 fields, and about 259 methods;
the next slice finishes selection/interaction ownership.
Carried:
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus
registered TS-50/TS-51 timing residuals (the complete-root-Frame/object-workset
cutover is automated-test complete 2026-07-20; three independent re-reviews are
clean, Release builds with 17 known test-project warnings tracked by #228, and
6,480 tests pass / 5 skip after the world-reveal gate), and
cutover is automated- and visual-gate complete; Release builds with 17 known
test-project warnings tracked by #228, and 6,481 tests pass / 5 skip), and
the deferred Modern Pipeline track (MP1b+). The separate #225 shared-alpha
implementation has passed connected lifetime/performance gates and awaits only
its lifestone/particle visual comparison.
@ -662,8 +662,8 @@ include dungeons.
publishes outdoor landcells independently of surviving object meshes.
Terrain/entity streaming distance is
unchanged; the user-requested default Extended setting doubles only particle
range, while Retail remains available as the exact cutoff. The
final two-client visual gate is still pending.
range, while Retail remains available as the exact cutoff. The final
two-client visual gate passed 2026-07-21.
- **L.1c local attack receive path (implemented and live-gated 2026-07-15)**
local non-autonomous mt-0 UpdateMotion now uses retail's wholesale interpreted
funnel and action-stamp gate, so ACE's server-selected melee/missile action
@ -713,7 +713,17 @@ a game.
---
### M3 — "Cast a spell" — 🔵 ACTIVE (started 2026-07-15)
### M3 — "Cast a spell" — ✅ LANDED 2026-07-21
**Landing writeup:** Mages now work end to end. A connected player can manage
the retail spellbook/component book and favorite bars, cast projectile and
self-targeted spells with the correct components/target gates, see traveling
missiles and DAT-driven protection/impact effects, inspect live enchantments,
and recall or portal through the retail tunnel/reveal lifecycle. The final
two-client observer gate confirms departure disappearance, destination
materialization, finished pose, rendered destination, and indoor movement
without snap-back. The R6 local locomotion/collision/projectile/teleport and
radar checks pass on the same Release baseline.
**Demo scenario:** Cast Flame Bolt at a drudge. Watch the cast animation,
the projectile, the impact. Self-cast a buff (Strength Self). See the
@ -740,9 +750,9 @@ The strip now uses retail DAT states for link quality, Helpful/Harmful effects,
Vitae, burden, mini-game availability, and end-character-session; live link
age, player load, and enchantment registries drive their retail thresholds and
the burden/effect/logout actions use the shared panel/dialog owners. Main-panel
visibility now flows through retail's one-active `gmPanelUI` owner. M3 remains
active only for the connected single-client magic
UI/casting visual gate and the final two-client portal observer gate.
visibility now flows through retail's one-active `gmPanelUI` owner. The
connected single-client magic UI/casting gates and final two-client portal
observer gate passed before landing.
The 2026-07-17 indicator follow-up also mounts authored Character Information,
Link Status, Vitae, and Mini Game detail roots as children of that same
main-panel owner. Helpful, Harmful, Character Information, Link, and Vitae
@ -795,7 +805,12 @@ from M3 = retail-equivalent gameplay loop for melee and casters.
---
### M4 — "Live in the world" — 🔵 (~610 weeks)
### M4 — "Live in the world" — 🟡 NEXT (~610 weeks)
**Entry condition:** complete the behavior-preserving `GameWindow`
decomposition campaign before adding H.3/H.4/L.1e feature bodies. This protects
M4 from deepening the App-layer composition debt; it does not change M4's demo
scope.
**Demo scenario:** Create a fresh character from scratch (no ACE admin).
Spawn. Talk to an NPC. Accept a quest. Walk to a dungeon entrance. Portal