From 75b761e658b106f7156009d74e46b345257f78d5 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 26 Jul 2026 12:09:19 +0200 Subject: [PATCH] docs(runtime): close combat and magic intent Record the exact J5.3 owner boundary, retail ordering, Release and connected evidence, rollback, and J5.4 handoff across architecture, roadmap, milestones, agent instructions, and durable memory. Co-authored-by: Codex --- AGENTS.md | 14 ++++++++-- CLAUDE.md | 14 ++++++++-- docs/README.md | 24 ++++++++--------- docs/architecture/acdream-architecture.md | 26 ++++++++++++------- docs/architecture/code-structure.md | 4 +-- docs/plans/2026-04-11-roadmap.md | 11 +++++--- docs/plans/2026-05-12-milestones.md | 9 ++++++- .../2026-07-24-modern-runtime-architecture.md | 9 ++++--- .../2026-07-25-modern-runtime-slice-j.md | 11 ++++++-- .../2026-07-26-modern-runtime-slice-j5.md | 25 +++++++++++++++--- ...26-07-26-slice-j5-3-combat-magic-intent.md | 18 +++++++++++++ 11 files changed, 124 insertions(+), 41 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 5d6c7e4a..b79452df 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -282,7 +282,14 @@ post-arrival pickup token while borrowing J4's sole inventory busy/request gate. App retains picking, movement/transport, and presentation only. Runtime tests pass 197/197, App tests pass 3,775/3 skips, the complete Release suite passes 8,561/5 skips, and the exact-binary seven-checkpoint gate passes with -graceful exits and zero failures. J5.3 combat/magic-intent ownership is active. +graceful exits and zero failures. J5.3 is complete at `20df9d15`: +`RuntimeActionState` owns the exact combat-attack, combat-target, combat-mode, +and spell-cast intent children. Retained bars and graphical input borrow those +owners; direct Runtime commands drive the same operations and snapshots. +Runtime tests pass 223/223, App tests pass 3,754/3 skips, the complete Release +suite passes 8,566/5 skips, and the exact-binary seven-checkpoint gate passes +with graceful exits and zero failures. J5.4 local movement/outbound cadence is +active. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -314,6 +321,8 @@ J5.1's rollback is `git revert b298f99f913249d299796e6a71f7a9b6b283ac1a`. J5.2's rollback is `git revert f5f7b4177f449ebcad9724bfea263ef73ab60255`. +J5.3's rollback is +`git revert 20df9d155db50706a42420d60a9b15861cf4bfe7`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate passes. Slice I is closed in @@ -328,7 +337,8 @@ is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from is `docs/research/2026-07-26-slice-j4-5-gameplay-state-closeout.md`; J5.1 closeout is `docs/research/2026-07-26-slice-j5-1-canonical-action-state.md`; J5.2 closeout -is `docs/research/2026-07-26-slice-j5-2-interaction-transactions.md`. The exact G4 +is `docs/research/2026-07-26-slice-j5-2-interaction-transactions.md`; J5.3 +closeout is `docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/CLAUDE.md b/CLAUDE.md index 7175ce0b..bc1f1959 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -280,7 +280,14 @@ post-arrival pickup token while borrowing J4's sole inventory busy/request gate. App retains picking, movement/transport, and presentation only. Runtime tests pass 197/197, App tests pass 3,775/3 skips, the complete Release suite passes 8,561/5 skips, and the exact-binary seven-checkpoint gate passes with -graceful exits and zero failures. J5.3 combat/magic-intent ownership is active. +graceful exits and zero failures. J5.3 is complete at `20df9d15`: +`RuntimeActionState` owns the exact combat-attack, combat-target, combat-mode, +and spell-cast intent children. Retained bars and graphical input borrow those +owners; direct Runtime commands drive the same operations and snapshots. +Runtime tests pass 223/223, App tests pass 3,754/3 skips, the complete Release +suite passes 8,566/5 skips, and the exact-binary seven-checkpoint gate passes +with graceful exits and zero failures. J5.4 local movement/outbound cadence is +active. J0's rollback is `git revert b632672e5ccabfb44c551e08f1c411ab2669c44a`. J1's rollback is @@ -312,6 +319,8 @@ J5.1's rollback is `git revert b298f99f913249d299796e6a71f7a9b6b283ac1a`. J5.2's rollback is `git revert f5f7b4177f449ebcad9724bfea263ef73ab60255`. +J5.3's rollback is +`git revert 20df9d155db50706a42420d60a9b15861cf4bfe7`. Slice H's retained UI/frame, bounded-light, and pooled/borrowed/direct network work is complete; the exact seven-checkpoint connected lifecycle/reconnect gate passes. Slice I is closed in @@ -326,7 +335,8 @@ is `docs/research/2026-07-26-slice-j3-6-lifetime-closeout.md`; J4 executes from is `docs/research/2026-07-26-slice-j4-5-gameplay-state-closeout.md`; J5.1 closeout is `docs/research/2026-07-26-slice-j5-1-canonical-action-state.md`; J5.2 closeout -is `docs/research/2026-07-26-slice-j5-2-interaction-transactions.md`. The exact G4 +is `docs/research/2026-07-26-slice-j5-2-interaction-transactions.md`; J5.3 +closeout is `docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md`. The exact G4 visual rollback is `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`; do not revert G3 or the portal-warmup corrections. Evidence: diff --git a/docs/README.md b/docs/README.md index 43bc346d..c5ae1e87 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,7 @@ This page is the entry point for project documentation. It distinguishes current sources of truth from implementation history so an old plan or issue banner cannot silently override the current program state. -## Current snapshot — 2026-07-25 +## Current snapshot — 2026-07-26 - **Milestone state:** M3, “Cast a spell,” landed 2026-07-21. M4, “Live in the world,” is active. @@ -14,18 +14,17 @@ banner cannot silently override the current program state. [`plans/2026-07-23-world-interaction-completion.md`](plans/2026-07-23-world-interaction-completion.md). The eight-slice `GameWindow` decomposition and its connected visual matrix are complete. -- **Current active engineering program:** Slices A–I and J0–J3.4 of +- **Current active engineering program:** Slices A–I, J0–J4, and J5.1–J5.3 of [`plans/2026-07-24-modern-runtime-architecture.md`](plans/2026-07-24-modern-runtime-architecture.md) are complete. Production uses prepared world/collision packages, typed residence, retained render-scene/delta submission, bounded frame owners, and flat-authoritative collision without parsed-graph production residency. - Runtime owns canonical session/transport and the sole live-entity - GUID/incarnation/local-ID directory. App materialized projections, - presentation worksets, and spatial visibility carry exact - `RuntimeEntityKey`. One `RuntimeEntityObjectLifetime` owns the exact - directory and live object table; App and routing borrow both. J3.5 ordered - canonical entity/object deltas and direct borrowed views are next in - [`plans/2026-07-26-modern-runtime-slice-j3-delta-stream.md`](plans/2026-07-26-modern-runtime-slice-j3-delta-stream.md). + Runtime owns canonical session/transport, entity/object lifetime, J4 + gameplay state, selection/interaction transactions, and combat/magic intent. + App materialized projections and retained widgets borrow exact Runtime + identity and action owners. J5.4 local movement and outbound cadence is next + in + [`plans/2026-07-26-modern-runtime-slice-j5.md`](plans/2026-07-26-modern-runtime-slice-j5.md). - **Completed gates:** R6 locomotion/collision/projectile/teleport/radar and the final two-client portal-out/materialization observer comparison (`#218`). - **Separate visual verification:** the shared-alpha lifestone/particle result @@ -34,11 +33,12 @@ banner cannot silently override the current program state. `#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51. - **Active engineering track:** complete Slice J's coherent Runtime lifetime groups, then build the approved Linux/headless multi-session host in Slice K. - J3.4's exact rollback is `git revert 5ef8b537`. + J5.3's exact rollback is + `git revert 20df9d155db50706a42420d60a9b15861cf4bfe7`. - **Divergence audit:** 178 active rows — IA 17, AD 37, AP 85, TS 34, and UN 5 — plus the retained retired TS-37 history note. -- **Latest automated baseline:** Release build succeeds; 8,453 tests pass and - five are intentionally skipped. The exact J3.4 connected lifecycle/reconnect +- **Latest automated baseline:** Release build succeeds; 8,566 tests pass and + five are intentionally skipped. The exact J5.3 connected lifecycle/reconnect gate completed two sessions and seven checkpoints with graceful zero-code exits, zero failures, zero render-shadow mismatches, and zero pending deltas. diff --git a/docs/architecture/acdream-architecture.md b/docs/architecture/acdream-architecture.md index 47d8f7f2..e98b48f5 100644 --- a/docs/architecture/acdream-architecture.md +++ b/docs/architecture/acdream-architecture.md @@ -143,11 +143,13 @@ move back into `GameWindow.OnLoad`. Magic follows the same boundary. Core `Spellbook` is the one learned/favorite/ desired/enchantment state projection; Core.Net owns exact manifest and live -message parsing; App `SpellCastingController` owns validated cast intent; and -the retained spell bar, spell/component book, and effects controllers only -project that state and invoke supplied actions. ACE remains authoritative after -the targeted/untargeted request for turning, animation, mana/components, -fizzle, impact, damage, and completion. +message parsing; Runtime `RuntimeActionState.SpellCast` owns validated cast +intent and last-request state; App `MagicRuntime` owns DAT formula/component +policy, live-object target queries, transport, and presentation binding. The +retained spell bar, spell/component book, and effects controllers only project +that state and invoke supplied actions. ACE remains authoritative after the +targeted/untargeted request for turning, animation, mana/components, fizzle, +impact, damage, and completion. The shared LayoutDesc importer resolves inherited controller trees with retail `LayoutDesc::InqFullDesc`/`ElementDesc::Incorporate` child identity semantics; panel controllers never reconstruct missing inherited widgets by hand. @@ -224,12 +226,12 @@ src/ transaction/session-state owner RuntimeCharacterState.cs -> coupled spellbook/local-player plus character-option/run-jump owner - RuntimeActionState.cs -> exact selection/combat/target-mode and - interaction-transaction owner + RuntimeActionState.cs -> exact selection/interaction plus combat and + spell-cast intent owner InteractionState.cs -> presentation-free cursor-target mode state RuntimeInteractionTransactionState.cs -> use/appraisal/pickup FIFO, exact approach and busy borrower - -> J3–J4 and J5.1–J5.2 complete; J5.3 combat/magic intent active + -> J3–J4 and J5.1–J5.3 complete; J5.4 local movement/cadence active -> may reference Core, Core.Net, Content, and Plugin.Abstractions only -> must never reference App, UI, Silk.NET, OpenAL, Arch, or ImGui @@ -497,8 +499,12 @@ J4 inventory busy/request gate. App supplies picking, movement installation, wire transport, toasts, and retained drag/pending-slot presentation. Hidden, delete/GUID reuse, reset, disposal, callback re-entry, and transport failure all converge without retaining a second owner or changing retail's press-time -order (`f5f7b417`). J5.3 next moves combat and spell-cast intent under this -same action root. +order (`f5f7b417`). The same root now owns the exact combat-attack, +combat-target, combat-mode, and spell-cast intent children. Retained bars and +graphical input adapters borrow those exact owners, while direct Runtime +commands drive the same operations and snapshots. App retains world/content +queries, transport, animation, sound, particles, and response text +(`20df9d15`). J5.4 next moves canonical local movement and outbound cadence. `GpuWorldState` owns spatial buckets only and retains the exact projection key through loaded/pending movement, landblock retirement/reload, origin recenter, diff --git a/docs/architecture/code-structure.md b/docs/architecture/code-structure.md index b962a085..69766e18 100644 --- a/docs/architecture/code-structure.md +++ b/docs/architecture/code-structure.md @@ -474,10 +474,10 @@ useful ordering seam, but its ownership status is **partial**. | Inbound/object-frame order | **Complete App orchestration** | `UpdateFrameOrchestrator` owns the complete typed host phase graph; `RetailInboundEventDispatcher`, `RetailLiveFrameCoordinator`, `LiveObjectFrameController`, `LiveSpatialPresentationReconciler`, streaming/input/teleport/player-mode/camera owners preserve the accepted order. `GameWindow.OnUpdate` is one profiler-scoped handoff (`e91f3102`). | | World reveal | **Complete** | `WorldRevealCoordinator` owns login/portal readiness, generation quiescence, and the exact streaming destination reservation. Login auto-entry and portal completion close only their active generation; stale completion cannot clear its replacement. Delayed portals retain the authored tunnel and centered retail wait notice rather than force-revealing incomplete content. Quiesced destination projections may become spatially resident for renderer preparation while all availability-gated gameplay consumers stay closed. | | Retained gameplay UI | **Mostly complete feature ownership** | `RetailUiRuntime` and focused panel/controllers own layout and behavior. `GameWindow.OnLoad` still performs substantial service composition, which is allowed until the final composition cleanup. | -| Selection/interaction | **J5.1–J5.2 complete; J5.3 active** | Runtime `RuntimeActionState` owns the exact selection, combat, target-mode, and `RuntimeInteractionTransactionState` children. The transaction child owns use/appraisal/pickup identity, the typed ordered FIFO, and exact post-arrival token while borrowing J4's sole inventory busy/request gate. App `WorldSelectionQuery`, movement/transport adapters, lighting, toasts, drag/drop, and pending-slot drawing remain presentation. No App transaction fallback or delegate queue remains (`b298f99f`, `f5f7b417`). | +| Action/combat/magic | **J5.1–J5.3 complete; J5.4 active** | Runtime `RuntimeActionState` owns the exact selection, temporary target mode, interaction transactions, combat attack/target/mode, and spell-cast intent children. Interaction owns use/appraisal/pickup identity, ordered FIFO, and exact post-arrival token while borrowing J4's sole busy gate. Retained bars, input, world/content queries, transport, lighting, toasts, drag/drop, and effects remain App adapters/presentation. No parallel App owner remains (`b298f99f`, `f5f7b417`, `20df9d15`). | | Landblock presentation | **Complete** | `LandblockBuildFactory` owns the captured-origin DAT transaction; concrete render/physics/DAT-static publishers and `LandblockPresentationPipeline` own typed-meter publication and exact retryable retirement. `StreamingController` owns stable destination/control/unload/Near/Far queues and destination reservation. CPU mesh-cache restaging requires an exact live owner. `StreamingOriginRecenterCoordinator` serializes old-window retirement with teleport/session origin lifetimes. `GameWindow` retains construction and one pipeline field only (`c79d0a49`, closeout `4a205a3e`; Slice E closeout `91e82c3c`). | | Render-frame orchestration | **Complete** | `RenderFrameOrchestrator` owns the GPU-flight, resource, world/PView/shared-alpha, private-presentation, diagnostics, screenshot, and recovery graph. `GameWindow.OnRender` takes one logical window-size snapshot and performs one immutable handoff (`9d7df1bf`). | -| Unified `GameEntity` | **Slice J active at J5.3** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and J5.1–J5.2 action/interaction state share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.3–J7 move combat/magic intent, movement/physics/projectiles, and remaining world authority before one Runtime composition root. | +| Unified `GameEntity` | **Slice J active at J5.4** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, J4 gameplay state, and J5.1–J5.3 action/combat/magic state share failure-safe Runtime owners while exact graphical sidecars stay in App. J5.4–J7 move movement/physics/projectiles and remaining world authority before one Runtime composition root. | ### 4.3 Revised extraction sequence diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index f76a55b3..6f820e2e 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -1,6 +1,6 @@ # acdream — strategic roadmap -**Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions are closed at `f5f7b417`, and J5.3 combat/magic intent is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. +**Status:** Living document. Updated 2026-07-26. **M3 landed; M4 is active.** M3's retail casting/UI, R6 locomotion/collision/projectile/teleport/radar rebaseline, deterministic fresh-login/portal world lifecycle, and final two-client portal observer flow are user-gated. All eight slices of the behavior-preserving ownership campaign in [`docs/architecture/code-structure.md`](../architecture/code-structure.md), their automated closeout, and the user's connected visual matrix are complete. Modern Runtime J3 canonical entity/object lifetime and J4 gameplay-state ownership are closed at `89e6b207`; J5.1 canonical selection/combat/target-mode ownership is closed at `b298f99f`, J5.2 interaction transactions at `f5f7b417`, and J5.3 combat/magic intent at `20df9d15`. J5.4 local movement/outbound cadence is active. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate. **Purpose:** One source of truth for where the project is and where it's going. Every observed defect or missing feature has a named phase that owns it; when something looks wrong in-game, look here to find the phase that'll address it. Implementation details live in per-phase specs under `docs/superpowers/specs/`, not in this file. --- @@ -1749,8 +1749,13 @@ port in any phase — no separate listing here. > retains picking, movement/transport, and presentation only; the App delegate > queue and transaction fields are deleted. Its 197 Runtime tests, 3,775 App > tests / 3 skips, 8,561-test / 5-skip complete Release suite, and exact-binary -> seven-checkpoint lifecycle/reconnect gate pass. J5.3 combat/magic-intent -> ownership is active. +> seven-checkpoint lifecycle/reconnect gate pass. J5.3 is complete at +> `20df9d15`: Runtime owns the exact combat-attack, combat-target, combat-mode, +> and spell-cast intent children; App bars/input/content/transport and direct +> commands borrow the same state. Its 223 Runtime tests, 3,754 App tests / 3 +> skips, 8,566-test / 5-skip complete Release suite, and exact-binary +> seven-checkpoint lifecycle/reconnect gate pass. J5.4 local movement/outbound +> cadence is active. > The historical exact cutover > rollback remains > `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete: diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 8c6597a3..ee485ba9 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -223,7 +223,12 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I pickup state while borrowing the sole J4 inventory busy/request gate. The App queue and transaction fields are deleted. Its 197 Runtime tests, 3,775 App tests / 3 skips, 8,561 full Release tests / 5 skips, and exact-binary - seven-checkpoint lifecycle/reconnect route pass. J5.3 combat/magic-intent + seven-checkpoint lifecycle/reconnect route pass. J5.3 completed at + `20df9d15`: Runtime owns the exact attack, target, combat-mode, and spell-cast + intent children; graphical bars/input and direct commands borrow the same + state and operations. Its 223 Runtime tests, 3,754 App tests / 3 skips, 8,566 + full Release tests / 5 skips, and exact-binary seven-checkpoint + lifecycle/reconnect route pass. J5.4 local movement/outbound-cadence ownership is active under [`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md). Slice-I closeout evidence is @@ -250,6 +255,8 @@ Slice-J5.1 closeout evidence is [`../research/2026-07-26-slice-j5-1-canonical-action-state.md`](../research/2026-07-26-slice-j5-1-canonical-action-state.md). Slice-J5.2 closeout evidence is [`../research/2026-07-26-slice-j5-2-interaction-transactions.md`](../research/2026-07-26-slice-j5-2-interaction-transactions.md). +Slice-J5.3 closeout evidence is +[`../research/2026-07-26-slice-j5-3-combat-magic-intent.md`](../research/2026-07-26-slice-j5-3-combat-magic-intent.md). The historical exact G4 visual rollback remains `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. diff --git a/docs/plans/2026-07-24-modern-runtime-architecture.md b/docs/plans/2026-07-24-modern-runtime-architecture.md index 5b729689..726268a5 100644 --- a/docs/plans/2026-07-24-modern-runtime-architecture.md +++ b/docs/plans/2026-07-24-modern-runtime-architecture.md @@ -2,7 +2,7 @@ **Date:** 2026-07-24 -**Status:** Slices A–I, J0–J4, and J5.1–J5.2 are complete. Flat-authoritative collision, zero- +**Status:** Slices A–I, J0–J4, and J5.1–J5.3 are complete. Flat-authoritative collision, zero- allocation resolve scratch, parsed-graph removal, connected correctness/ lifetime acceptance, and Slice-I closeout landed 2026-07-25. Slices F–L were explicitly approved 2026-07-24. Slice J0–J1 established the enforced Runtime @@ -16,8 +16,9 @@ ownership into Runtime at `011efbea`; J4.3 moved the coupled magic/player-sheet owner into Runtime at `d02a12ce`; J4.4 moved character settings/projections and the shared typed state-command seam at `dcb61efb`; J4.5 closed canonical gameplay-state ownership at `89e6b207`. J5 movement, physics, interaction, -and combat ownership is active at J5.3 after canonical action state -(`b298f99f`) and interaction transactions (`f5f7b417`) moved to Runtime. +and combat ownership is active at J5.4 after canonical action state +(`b298f99f`), interaction transactions (`f5f7b417`), and combat/magic intent +(`20df9d15`) moved to Runtime. **Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit. @@ -1275,7 +1276,7 @@ single Runtime shortcut/spellbook/inventory owners, graphical/no-window command parity, failure-safe combined ledger, 8,544-test Release suite, exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass. J5 movement/physics/interaction/combat ownership is the current execution -point. J5.1–J5.2 are complete; J5.3 combat/magic intent is active. +point. J5.1–J5.3 are complete; J5.4 local movement/outbound cadence is active. Evidence: [`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md) and diff --git a/docs/plans/2026-07-25-modern-runtime-slice-j.md b/docs/plans/2026-07-25-modern-runtime-slice-j.md index fc6c0550..c43390a0 100644 --- a/docs/plans/2026-07-25-modern-runtime-slice-j.md +++ b/docs/plans/2026-07-25-modern-runtime-slice-j.md @@ -296,10 +296,17 @@ and post-arrival pickup token while borrowing J4's sole busy/request gate. App retains picking, movement/transport, lighting, toasts, drag/drop, and pending-slot presentation. Its 197 Runtime tests, 3,775 App tests / 3 skips, 8,561 complete Release tests / 5 skips, and exact-binary seven-checkpoint -lifecycle/reconnect gate pass. J5.3 combat/magic intent is next. Evidence: +lifecycle/reconnect gate pass. J5.3 completed at `20df9d15`: Runtime owns the +exact attack, target, combat-mode, and spell-cast intent children while App +bars, input adapters, content queries, and transport borrow them. Its 223 +Runtime tests, 3,754 App tests / 3 skips, 8,566 complete Release tests / 5 +skips, and exact-binary seven-checkpoint lifecycle/reconnect gate pass. J5.4 +local movement/outbound cadence is next. Evidence: [`../research/2026-07-26-slice-j5-1-canonical-action-state.md`](../research/2026-07-26-slice-j5-1-canonical-action-state.md) and -[`../research/2026-07-26-slice-j5-2-interaction-transactions.md`](../research/2026-07-26-slice-j5-2-interaction-transactions.md). +[`../research/2026-07-26-slice-j5-2-interaction-transactions.md`](../research/2026-07-26-slice-j5-2-interaction-transactions.md) +and +[`../research/2026-07-26-slice-j5-3-combat-magic-intent.md`](../research/2026-07-26-slice-j5-3-combat-magic-intent.md). - Move presentation-free movement interpretation, authoritative/predicted physics state, selection identity, approach/use transactions, combat intent, diff --git a/docs/plans/2026-07-26-modern-runtime-slice-j5.md b/docs/plans/2026-07-26-modern-runtime-slice-j5.md index 0d082dc8..86168a0b 100644 --- a/docs/plans/2026-07-26-modern-runtime-slice-j5.md +++ b/docs/plans/2026-07-26-modern-runtime-slice-j5.md @@ -1,6 +1,6 @@ # Modern runtime Slice J5 — movement, physics, interaction, and combat -**Status:** ACTIVE — J5.1–J5.2 complete; J5.3 next +**Status:** ACTIVE — J5.1–J5.3 complete; J5.4 next **Parent:** `2026-07-25-modern-runtime-slice-j.md`, J5 **Production base:** `2c67a2c3` **Authorization:** the user approved Slices F–L, including the Slice J @@ -87,8 +87,8 @@ commands to Runtime. The camera may not write the player heading directly. | J5.0 owner/retail inventory | complete | `docs/research/2026-07-26-slice-j5-owner-and-retail-order-inventory.md` | | J5.1 canonical action state | complete | `b298f99f913249d299796e6a71f7a9b6b283ac1a`; one Runtime selection/combat/target-mode owner; 182 Runtime tests, 3,779 App tests / 3 skips, 8,550 complete Release tests / 5 skips, exact-binary connected lifecycle/reconnect pass | | J5.2 interaction transactions | complete | `f5f7b4177f449ebcad9724bfea263ef73ab60255`; one Runtime transaction owner; 197 Runtime tests, 3,775 App tests / 3 skips, 8,561 complete Release tests / 5 skips, exact-binary connected lifecycle/reconnect pass | -| J5.3 combat and magic intent | pending | attack/mode/target/cast owners and typed input | -| J5.4 local movement and outbound cadence | pending | controller, body, movement managers, MTS/AP/jump cadence | +| J5.3 combat and magic intent | complete | `20df9d155db50706a42420d60a9b15861cf4bfe7`; exact Runtime attack/mode/target/cast owners; 223 Runtime tests, 3,754 App tests / 3 skips, 8,566 complete Release tests / 5 skips, exact-binary connected lifecycle/reconnect pass | +| J5.4 local movement and outbound cadence | active | controller, body, movement managers, MTS/AP/jump cadence | | J5.5 per-session physics and remote simulation | pending | engine/scratch/shadows/remote canonical body | | J5.6 projectile runtime | pending | canonical component/simulation plus App projection acknowledgements | | J5.7 combined cleanup and closeout | pending | no mirrors, no-window parity, teardown, connected and visual gates | @@ -249,6 +249,19 @@ Gate: - self/untargeted/targeted spell requests, component failure, busy completion; - graphical bar parity and direct typed-command parity. +**Completed 2026-07-26 at +`20df9d155db50706a42420d60a9b15861cf4bfe7`.** `RuntimeActionState` +constructs and owns the exact combat-attack, combat-target, combat-mode, and +spell-cast intent children. Retained attack/spell bars and graphical input +borrow those owners; direct Runtime combat/magic commands drive the same +operations and snapshots without a retained UI. App retains world/content +queries, transport, bars, animation, sound, particles, and response text. +Runtime tests pass 223/223, App tests pass 3,754/3 skips, and the complete +Release suite passes 8,566/5 skips. The exact-binary connected report +`logs/connected-world-gate-20260726-115752/report.json` passes two sessions, +7/7 checkpoints, graceful code-zero exits, and zero failures. Evidence: +[`../research/2026-07-26-slice-j5-3-combat-magic-intent.md`](../research/2026-07-26-slice-j5-3-combat-magic-intent.md). + ## J5.4 — local movement and outbound cadence Move `PlayerMovementController`, its data types, and @@ -410,6 +423,12 @@ J5.2 rollback: git revert f5f7b4177f449ebcad9724bfea263ef73ab60255 ``` +J5.3 rollback: + +```text +git revert 20df9d155db50706a42420d60a9b15861cf4bfe7 +``` + ## Acceptance J5 is complete only when: diff --git a/docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md b/docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md index 1c4a97b1..0df08b0e 100644 --- a/docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md +++ b/docs/research/2026-07-26-slice-j5-3-combat-magic-intent.md @@ -187,3 +187,21 @@ App retains: - messages, bars, animations, audio, particles, and camera presentation. No new retail divergence is introduced by this ownership move. + +## Implementation and gates + +Production commit: +`20df9d155db50706a42420d60a9b15861cf4bfe7`. + +`RuntimeActionState` constructs and owns the exact `RuntimeCombatAttackState`, +`RuntimeCombatTargetState`, `RuntimeCombatModeState`, and +`RuntimeSpellCastState`. Retained graphical bars and input adapters borrow +those owners. Direct Runtime combat and magic commands invoke the same +operations and produce the same normalized snapshots without constructing UI. +App retains the named presentation/content/transport responsibilities above. + +Release build passes with zero warnings and errors. Focused and complete gates +pass 223 Runtime tests, 3,754 App tests / 3 skips, and 8,566 complete-solution +tests / 5 skips. The exact-binary connected lifecycle/reconnect report is +`logs/connected-world-gate-20260726-115752/report.json`: two sessions, 7/7 +checkpoints, two graceful code-zero exits, and zero failures.