docs: reconcile project state and refresh README
This commit is contained in:
parent
97a095d628
commit
f6275f4501
12 changed files with 432 additions and 295 deletions
|
|
@ -24,7 +24,7 @@ What does NOT go here:
|
|||
- Every session: scan OPEN issues at start; promote/close anything we touched during the session before ending.
|
||||
- Promoting to a Phase: mark as `DONE (promoted to Phase X)` + commit SHA where the Phase entry landed.
|
||||
|
||||
## Current queue — 2026-07-24
|
||||
## Current queue — 2026-07-27
|
||||
|
||||
- **Structural handoff:** all eight `GameWindow` decomposition slices and the
|
||||
automated closeout are complete. The 1,622-line native shell has typed
|
||||
|
|
@ -33,6 +33,10 @@ What does NOT go here:
|
|||
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).
|
||||
- **Active M4 prelude:** resume
|
||||
[`plans/2026-07-23-world-interaction-completion.md`](plans/2026-07-23-world-interaction-completion.md).
|
||||
Slices 1–3, including the complete assessment surface, are user-accepted.
|
||||
Equipped-child picking and vendor browse/transactions remain Slices 4–6.
|
||||
- **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
|
||||
|
|
@ -44,35 +48,20 @@ What does NOT go here:
|
|||
smooth and physics, collision, and wire state remain correct.
|
||||
- **Build hygiene:** `#228` records 17 clean-Release test-project warnings;
|
||||
production compilation and all tests pass.
|
||||
- **Performance side track:** Slices A–E are complete. Typed
|
||||
completion admission, immediate generation-scoped old-world quiescence, and
|
||||
budgeted full-window/recenter retirement are live. Publication now advances
|
||||
from retained render/physics/static/building/EnvCell cursors without replay.
|
||||
The canonical reveal generation now owns the destination reservation across
|
||||
every typed budget dimension; incomplete worlds remain in portal space with
|
||||
retail's centered wait cue. E6 deterministic/resource suites and all three
|
||||
physical-local connected routes pass with zero stranded work/resource
|
||||
backlog. Slices F–L, including the former F/G and J gates, were explicitly
|
||||
approved 2026-07-24. Slice F now executes from the pre-runtime rollback
|
||||
anchor `e7d9d6fa`; its ownership, shadow-scene, cutover, and acceptance
|
||||
contract is
|
||||
[`plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md`](plans/2026-07-24-modern-runtime-slices-f-g-render-scene.md).
|
||||
Evidence:
|
||||
[`research/2026-07-24-slice-e-cost-budgeted-streaming-report.md`](research/2026-07-24-slice-e-cost-budgeted-streaming-report.md).
|
||||
- **Modern Runtime execution:** Slices F–I are complete. Slice I removed
|
||||
production parsed collision graphs after exact flat differential and user
|
||||
collision acceptance; 8,413 Release tests / 5 skips and both exact-binary
|
||||
connected routes pass with `0/0/0` graph residency. J0's enforced
|
||||
presentation-independent project boundary and J1's borrowed
|
||||
view/command/event/lifecycle contract are live. J2's canonical
|
||||
session/transport lifetime and ordered inbound route are complete at
|
||||
`75930787`; J3 canonical entity/object lifetime and J4 gameplay-state
|
||||
ownership are complete through `89e6b207`. J5.1 canonical selection,
|
||||
combat, and target-mode ownership is complete at `b298f99f`; J5.2
|
||||
interaction-transaction ownership is complete at `f5f7b417`, with 8,561
|
||||
Release tests / 5 skips and the exact connected gate green. J5.3
|
||||
combat/magic-intent ownership is active from
|
||||
[`plans/2026-07-25-modern-runtime-slice-j.md`](plans/2026-07-25-modern-runtime-slice-j.md).
|
||||
- **Modern Runtime/performance program:** Slices A–K are complete. Prepared
|
||||
world/collision packages, typed residency, bounded publication/retirement,
|
||||
retained render-scene deltas, flat-authoritative collision, and bounded
|
||||
frame/network owners are production paths. Slice J closed at `a9a822f2`
|
||||
with one presentation-independent `GameRuntime` shared by graphical and
|
||||
no-window hosts. Slice K closed through `776482da` with the Windows/Linux
|
||||
multi-session host, shared immutable content, deterministic bot API,
|
||||
1/5/10/30-session and two-hour simulated gates, connected portal/movement
|
||||
parity, resource ceilings, and graceful zero-debt teardown.
|
||||
- **Deferred Linux graphical track:** L0 completed at `66f114b2`; L1's backend
|
||||
selection/capability implementation checkpoint landed at `11501d52`.
|
||||
Native Windows passes and WSLg correctly rejects its missing mandatory
|
||||
bindless capability. Physical-Linux validation and L2–L6 are parked by user
|
||||
direction; resume at the supported AMD/NVIDIA L1 gate.
|
||||
|
||||
The [documentation map](README.md) defines how this tactical ledger relates to
|
||||
the milestone, roadmap, architecture, divergence register, research, and
|
||||
|
|
|
|||
|
|
@ -4,48 +4,48 @@ 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-26
|
||||
## Current snapshot — 2026-07-27
|
||||
|
||||
- **Milestone state:** M3, “Cast a spell,” landed 2026-07-21. M4, “Live in the
|
||||
world,” is active.
|
||||
- **M4 gameplay program (paused while the authorized performance program
|
||||
executes):** the pre-M4 world-interaction completion program
|
||||
in
|
||||
[`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–J5 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, 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. Runtime also owns the sole per-session physics,
|
||||
collision, body/host, remote/projectile simulation, and cell-commit graph.
|
||||
J5 closed at `cdee7a4b` with one combined simulation ledger, a
|
||||
Runtime-only movement/use/combat/cast/projectile host, 8,596 complete
|
||||
Release tests / 5 skips, and exact-binary lifecycle plus nine-stop gates.
|
||||
J6 world/portal/environment and projection-handshake ownership is active in
|
||||
[`plans/2026-07-25-modern-runtime-slice-j.md`](plans/2026-07-25-modern-runtime-slice-j.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
|
||||
in `#225`; its connected resource-lifetime and performance routes pass.
|
||||
- **Carried behavior debt:** `#153` (far teleport onto an unstreamed edge),
|
||||
`#116` (two narrowed slide-response cases), and divergence rows TS-50/TS-51.
|
||||
- **Active engineering track:** Slice J's presentation-independent runtime,
|
||||
composition root, shared generation reset, and no-window closeout are
|
||||
complete. Build the approved Linux/headless multi-session host in Slice K.
|
||||
K0 is complete and K1 is active. K0's exact rollback is
|
||||
`git revert aada8a37c1e933f9f0a3f41dc4f05615b01023bc`.
|
||||
- **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,708 tests pass and
|
||||
five are intentionally skipped. The exact J8 lifecycle/reconnect and
|
||||
canonical nine-stop gates match embedded binary/source commit, converge
|
||||
every backlog, and complete with graceful zero-code exits and zero failures.
|
||||
- **M4 gameplay program:** resume the pre-M4
|
||||
[world-interaction completion program](plans/2026-07-23-world-interaction-completion.md).
|
||||
Favorite-spell overflow, status Use/Assess, and the complete assessment
|
||||
surface are user-accepted. Equipped-child picking and vendor
|
||||
browse/transactions remain Slices 4–6.
|
||||
- **Structural/runtime state:** all eight `GameWindow` decomposition slices,
|
||||
Modern Runtime Slices A–J, and the connected visual/lifecycle gates are
|
||||
complete. `GameWindow` is a 1,622-line composition/callback shell.
|
||||
`AcDream.Runtime.GameRuntime` owns canonical session, entity/object,
|
||||
gameplay, movement, physics, projectile, environment, and portal state;
|
||||
graphical and no-window hosts borrow the same owner graph.
|
||||
- **Headless state:** Slice K is complete. `AcDream.Headless` is a
|
||||
presentation-free Windows/Linux host with deterministic commands/events,
|
||||
shared immutable content, multi-session isolation, reconnect, resource
|
||||
telemetry, and 1/5/10/30-session gates. The final two-account native-Linux
|
||||
soak completed ten minutes, logged out through ACE, and converged every
|
||||
ownership ledger.
|
||||
- **Linux graphical state:** Slice L0 and the L1 implementation checkpoint are
|
||||
complete at `66f114b2` and `11501d52`. Native Windows passes the active
|
||||
modern-GL/audio/window smoke. WSLg X11/Wayland correctly reject their
|
||||
missing `GL_ARB_bindless_texture`. Physical-Linux validation and L2–L6 are
|
||||
explicitly deferred; resume at the supported AMD/NVIDIA L1 gate.
|
||||
- **Completed gameplay gates:** R6 locomotion/collision/projectile/teleport/
|
||||
radar, two-client portal-out/materialization, indoor prepared collision,
|
||||
loot ordering, local/remote ground drops, and selection-marker lifetime.
|
||||
- **Separate visual verification:** issue `#225`, the shared-alpha
|
||||
lifestone/particle result; its connected resource-lifetime and performance
|
||||
routes pass.
|
||||
- **Carried behaviour debt:** issue `#153` (far teleport onto an unstreamed
|
||||
edge), `#116` (narrowed slide response), `#235` (capped/RDP jump cadence),
|
||||
and the active temporary-stopgap rows in the divergence register.
|
||||
- **Divergence audit:** 189 active rows — IA 18, AD 38, AP 91, TS 38, and
|
||||
UN 4 — plus retained struck/retired historical rows such as TS-37.
|
||||
- **Latest automated baseline:** the Release build succeeds with the 17
|
||||
test-project warnings tracked by issue `#228`; 8,826 tests pass and five are
|
||||
intentionally skipped. App passes 3,763 / 3 skips. The L1 Windows supported
|
||||
smoke and WSLg X11/Wayland negative-capability reports all end with zero
|
||||
window/GL/input/audio ownership.
|
||||
|
||||
## Sources of truth
|
||||
|
||||
|
|
|
|||
|
|
@ -480,7 +480,7 @@ useful ordering seam, but its ownership status is **partial**.
|
|||
| 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 complete** | Canonical identity, retained-object lifetime, direct views, ordered entity/object deltas, gameplay state, action/combat/magic/movement/physics/remote/projectile simulation, world environment, reveal/transit truth, and host acknowledgement share failure-safe Runtime owners while exact graphical sidecars stay in App. One `GameRuntime` composes the graph. `RuntimeGenerationReset` is the sole retryable canonical-generation reset for graphical and no-window hosts; the deterministic direct host proves lifecycle, commands, portal, reconnect, GUID reuse, fault recovery, isolation, and terminal convergence without presentation assemblies (`a9a822f2`). |
|
||||
| Headless host | **Slice K0 complete; K1 active** | `AcDream.Headless` references only Runtime. Its strict CLI validator, dependency closure, loaded-assembly guard, and Windows/Ubuntu CI establish a production process that cannot acquire App, UI, GL, native-window, or audio ownership (`aada8a37`). |
|
||||
| Headless host | **Slice K complete** | `AcDream.Headless` references only Runtime and loads no App/UI/GL/window/audio assembly. Portable paths/config/credentials, deterministic command/event scheduling, shared immutable content, exact per-session identity, failure quarantine, reconnect, resource telemetry, 1/5/10/30-session isolation, two-hour simulated endurance, and the exact two-account native-Linux connected soak pass through `776482da`. |
|
||||
|
||||
### 4.3 Revised extraction sequence
|
||||
|
||||
|
|
@ -781,7 +781,7 @@ fresh-process nine-stop soaks and the connected lifecycle/reconnect route pass
|
|||
with graceful exits; deterministic framebuffer captures preserve accepted
|
||||
Slice 7 geometry, UI/paperdoll layering, private viewports, depth/alpha, and
|
||||
reveal. The clean solution build retains only the 17 test-project warnings
|
||||
tracked by #228, and all three final corrected-diff reviews are clean. Only the
|
||||
tracked by #228, and all three final corrected-diff reviews are clean. The
|
||||
user's connected visual matrix passed 2026-07-23, including first-login radar,
|
||||
movement/combat, shared retained panels, recall/portal presentation, and
|
||||
graceful reconnect.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Retail Divergence Register — 2026-06-12
|
||||
# Retail Divergence Register — current through 2026-07-27
|
||||
|
||||
**What this is.** The single auditable register of every known place acdream's
|
||||
runtime behavior can deviate from the retail client (Sept 2013 EoR build,
|
||||
|
|
@ -37,7 +37,7 @@ accepted-divergence entries (#96, #49, #50).
|
|||
|
||||
---
|
||||
|
||||
## 1. Intentional architecture (IA) — 17 rows
|
||||
## 1. Intentional architecture (IA) — 18 active rows
|
||||
|
||||
| # | Divergence | Where (file:line) | Why it is safe / justified | Risk if assumption breaks | Retail oracle |
|
||||
|---|---|---|---|---|---|
|
||||
|
|
|
|||
|
|
@ -66,7 +66,8 @@ disabled (IA-21), installs each icon through the shared retained
|
|||
`UIRegion::SetImage` seam so it keeps the authored foreground stack, and
|
||||
one-time migrates stale saved examination dimensions to the authored
|
||||
310 x 400 extent while preserving retail-style later resizing.
|
||||
Its connected visual gate is pending. Slice 3's first connected gate exposed
|
||||
The corrected formula/icons/foreground stack, authored extent, and complete
|
||||
item report were user-accepted on 2026-07-24. Slice 3's first connected gate exposed
|
||||
three deeper defects, now corrected: the response enum mislabeled ACE's
|
||||
creature bit `0x0100` and dropped monster packets while retaining the busy
|
||||
cursor; the imported 310 x 400 examination layout was incorrectly hosted as
|
||||
|
|
@ -78,7 +79,8 @@ transaction under retail ownership/authorship rules; those corrections are
|
|||
user-confirmed. The item view now follows the complete EoR formatter dispatch,
|
||||
including literal set/rating/tinkering prose, weapon/armor/magic/XP/
|
||||
activation/healer/rare branches, and installed-DAT material and creature
|
||||
names. Its connected item-report comparison is Slice 3's remaining gate.
|
||||
names. Slices 1–3 are complete; M4 resumes at Slice 4 equipped-child picking,
|
||||
followed by vendor browsing and authoritative transactions.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -753,7 +755,7 @@ behavior. Estimated 17–26 days focused work, 3–5 weeks calendar.
|
|||
- **Missile/portal VFX cell-less rule clarified 2026-07-16.** The Steps 0–5 statement that later plays drop while an existing owner is cell-less applies only to ordinary F754/F755/default playback. Hidden/UnHide is retail's internal exception: `CPhysicsObj::set_hidden` resolves the typed script and calls `play_script_internal`, queuing it until scheduler eligibility returns. This preserves the human table's purple portal materialization across asynchronous destination placement.
|
||||
- **✓ M2 local attack receive funnel (live-gated 2026-07-15).** Retail `ExecuteAttack` only sends the request; ACE chooses the concrete melee/missile action and returns it in a non-autonomous mt-0 `UpdateMotion`. The local branch now runs that state through the same constructor-defaulted `MoveToInterpretedState` funnel and 15-bit action-stamp gate as remotes, then applies sticky/long-jump tails. The old local-only direct `Commands[]` replay is deleted. Shared conversion lives in `InboundInterpretedMotionFactory`; research: `docs/research/2026-07-11-local-combat-motion-pseudocode.md`.
|
||||
- **✓ M2 basic retail combat bar (live-gated 2026-07-15).** Production mounts authored `gmCombatUI` LayoutDesc `0x21000073`, shows it only for Melee/Missile, and routes mouse plus keyboard through one `CombatAttackController`. Corrections include the authored wider centered dark-red child range (accepted IA-20), full-width left-to-right bright live attack-charge feedback, exact Speed-left/Power-right justification, silent control-only `AttackDone(ActionCancelled)`, target-frame Keep in View with manual orbit, and persistent corpse motion: the AP-80 velocity-only NPC adaptation can now replace only Ready/Walk/Run, never authoritative Dead/actions. `CombatTargetController` ports the selection-cleared AutoTarget consumer, so a selected creature's authoritative Dead motion clears it and selects the nearest eligible creature when enabled. The 2026-07-12 replacement-corpse correction unifies both multi-frame and static/reactive spawns behind retail's CreateObject lifecycle: apply the wire's Dead state while detached, then `MotionTableManager::HandleEnterWorld` strips Ready→Dead links before the first in-world tick; multiple corpses remaining fallen passed the live user gate that day. Follow-up #205 makes the toolbar read the final canonical selection after a reentrant Auto Target notice and restricts automatic candidates to hostile non-player monsters (intentional PK-edge divergence IA-19); that live gate also passed 2026-07-12. Research: `docs/research/2026-07-11-retail-combat-bar-pseudocode.md`, `docs/research/2026-07-11-combat-target-camera-pseudocode.md`, `docs/research/2026-07-12-death-and-auto-target-pseudocode.md`; AP-24/AP-95 retired, AP-80 narrowed, AP-110 narrowed, AP-112 records the remaining attack-start and exact trained-Recklessness seams.
|
||||
- **M3 cast lifecycle + retained magic UI implemented 2026-07-15; visual gates pending.** `SpellCastingController` ports retail's immediate targeted/untargeted request boundary, component preflight, target eligibility, movement stop, and shared UI-busy lifetime while leaving turn/cast/fizzle/impact outcomes authoritative to ACE. Formula preflight reads decrypted portal.dat formulas, the SCID↔WCID map, canonical account randomization, exact school-focus map, infused-magic properties, and scarab-only substitution. `MagicCatalog` now projects all 6,266 end-of-retail SpellTable records into the shared Core metadata table; the incomplete 3,956-row CSV is test/research-only and AP-17 is retired. Complete live enchantment packets preserve spell/layer identity, all StatMod fields, client-clock normalization, and exact purge buckets. Authored retained surfaces now include the Magic page of `gmCombatUI`, all eight favorite tabs, equipped caster endowment, `gmSpellbookUI`, `gmSpellComponentUI`, both `gmEffectsUI` windows, and the floating Helpful/Harmful effect indicators. The favorite bar now ports retail horizontal empty-cell padding, shared UIItem 1–9 shortcut overlays, and the Cast button's three independently reflowed DAT face segments. Spell rows resolve UIItem prototype `0x10000343`; the component page now instantiates LayoutDesc `0x21000033` category/component templates `0x10000466/67`, including localized headings, exact row textures and columns, owned/desired counts, selection, and the 0..5000 desired-value contract. The authored scrollbars, exact filters/display ordering, learned-spell drag, and shared server-authoritative delete dialog are connected. `RetailPanelUiController` ports the shared one-active-panel lifecycle so toolbar and indicator launchers converge on one owner. #L.2/#L.3 close and #L.4/AP-110 narrow. Research: `docs/research/2026-07-15-retail-magic-ui-and-casting-pseudocode.md`, `docs/research/2026-07-15-retail-spell-catalog-pseudocode.md`.
|
||||
- **M3 cast lifecycle + retained magic UI shipped and user-accepted 2026-07-21.** `SpellCastingController` ports retail's immediate targeted/untargeted request boundary, component preflight, target eligibility, movement stop, and shared UI-busy lifetime while leaving turn/cast/fizzle/impact outcomes authoritative to ACE. Formula preflight reads decrypted portal.dat formulas, the SCID↔WCID map, canonical account randomization, exact school-focus map, infused-magic properties, and scarab-only substitution. `MagicCatalog` now projects all 6,266 end-of-retail SpellTable records into the shared Core metadata table; the incomplete 3,956-row CSV is test/research-only and AP-17 is retired. Complete live enchantment packets preserve spell/layer identity, all StatMod fields, client-clock normalization, and exact purge buckets. Authored retained surfaces now include the Magic page of `gmCombatUI`, all eight favorite tabs, equipped caster endowment, `gmSpellbookUI`, `gmSpellComponentUI`, both `gmEffectsUI` windows, and the floating Helpful/Harmful effect indicators. The favorite bar now ports retail horizontal empty-cell padding, shared UIItem 1–9 shortcut overlays, and the Cast button's three independently reflowed DAT face segments. Spell rows resolve UIItem prototype `0x10000343`; the component page now instantiates LayoutDesc `0x21000033` category/component templates `0x10000466/67`, including localized headings, exact row textures and columns, owned/desired counts, selection, and the 0..5000 desired-value contract. The authored scrollbars, exact filters/display ordering, learned-spell drag, and shared server-authoritative delete dialog are connected. `RetailPanelUiController` ports the shared one-active-panel lifecycle so toolbar and indicator launchers converge on one owner. #L.2/#L.3 close and #L.4/AP-110 narrow. Research: `docs/research/2026-07-15-retail-magic-ui-and-casting-pseudocode.md`, `docs/research/2026-07-15-retail-spell-catalog-pseudocode.md`.
|
||||
- **M3 favorite-bar empty-state correction 2026-07-15; visual gate pending.** Shortcut-number arrays remain shared with the status toolbar, but the cell background is now resolved independently from the favorite ItemList's inherited `0x1000000E` cell prototype. LayoutDesc `0x21000010` selects prototype `0x10000341`, whose exact brown/gold `ItemSlot_Empty` surface is `0x06001A97`; the blue toolbar-style `0x060074CF` substitution is removed. The cross-layout resolver and controller presentation are pinned by live-DAT and retained-layout conformance tests.
|
||||
- **Retail client command families implemented 2026-07-13; corrective live gate pending.** One shared typed catalog now separates retail client actions from ACE administrator commands for both chat backends. Named-decomp ports cover recall/house/PK travel; age/birth; framerate, lock, version, location, corpse, and die confirmation; clear plus named/automatic UI layouts; AFK/consent; emotes; friends; squelch/filter/message types; and fill-components. App owns execution, Core owns authoritative friends/squelch state, Core.Net owns exact UIQueue/ControlQueue packets. Confirmation reuse now ports retail `DialogFactory` contexts, queue groups/priority, fresh DAT roots, property results, callbacks/close notices, and server abort handling; `/die`, gameplay request tuples, and guarded item-use prompts share its type-1 LayoutDesc `0x2100003C` presenter. The first live gate passed the family except for raw suicide-success code `0x004A` and the title-bar-only FPS presentation; the correction maps retail's text and mounts SmartBox element `0x10000047` with live two-decimal `FPS`/`DEG`. #L.6 is closed; TS-31/TS-47 are narrowed. Research: `docs/research/2026-07-13-retail-client-command-families-pseudocode.md`, `docs/research/2026-07-13-retail-dialog-factory-pseudocode.md`.
|
||||
- **✓ SHIPPED — Character window** (`LayoutDesc 0x2100002E`, `CharacterStatController`, 2026-06-26, same branch). **Visually user-confirmed 2026-06-26 — Attributes tab reads as retail.** Three tabs, header (name/heritage/PK), large-gold level number (dat font, `largeDatFont` 18px), "Total Experience (XP):" + "XP for next level:" captions, 9-row attribute list (icons + right-aligned values + Health/Stamina/Mana vitals), click-to-select (top/bottom selection bars + footer State-B "{Attr}: {value}" / "Experience To Raise: Infinity!" + affordability-gated raise triangles), centered footer. User noted "still needs some polish for later" — deferred to Issue #158.
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@ program: spell-bar overflow, status Use/Assess, assessment information,
|
|||
equipped-child picking, vendor browsing, and authoritative vendor
|
||||
transactions. This is deliberately using the extracted interaction owners and
|
||||
canonical shared main-panel host before quest/emote/character-creation bodies
|
||||
broaden the feature surface.
|
||||
broaden the feature surface. Slices 1–3 are user-accepted; resume at Slice 4
|
||||
equipped-child picking.
|
||||
|
||||
The separately authorized modern-runtime performance program has completed
|
||||
Slices A–D: corrected measurement, prepared-package bake/dedup, package-only
|
||||
|
|
@ -405,7 +406,8 @@ disables component enforcement (IA-21), installs each icon as its authored
|
|||
template root's own foreground image, and resets obsolete saved dimensions
|
||||
once to the authored 310 x 400 extent. The Release build with #228's 17
|
||||
tracked test warnings, 3,557 App tests / 3 skips, and 7,988 complete-solution
|
||||
tests / 5 skips pass; the connected visual gate is pending.
|
||||
tests / 5 skips pass. The corrected formula/icons/foreground stack and
|
||||
authored extent were user-accepted on 2026-07-24.
|
||||
Slice 3's first connected gate found and corrected the real remaining defects:
|
||||
ACE creature flag `0x0100` was mislabeled as a weapon profile and left the
|
||||
appraisal busy reference held, retail's examination UI had been mounted as a
|
||||
|
|
@ -415,8 +417,9 @@ display-only. Exact response flags, the independent
|
|||
edit transaction are now ported and user-confirmed. Its item path now follows
|
||||
the complete EoR formatter dispatch, including literal set/rating/tinkering
|
||||
prose, weapon/armor/magic/XP/activation/healer/rare branches, and installed-DAT
|
||||
material/creature names. The connected item-report comparison is Slice 3's
|
||||
remaining gate.
|
||||
material/creature names. The connected item-report comparison was Slice 3's
|
||||
final accepted gate. Slices 1–3 are complete; resume at Slice 4
|
||||
equipped-child picking.
|
||||
|
||||
Carried:
|
||||
#153 far-teleport residual, #116 slide-response, the remaining R6 ownership cleanup plus
|
||||
|
|
@ -1215,7 +1218,7 @@ from M3 = retail-equivalent gameplay loop for melee and casters.
|
|||
|
||||
---
|
||||
|
||||
### M4 — "Live in the world" — 🟡 NEXT (~6–10 weeks)
|
||||
### M4 — "Live in the world" — 🟡 ACTIVE (~6–10 weeks)
|
||||
|
||||
**Entry condition:** complete the behavior-preserving `GameWindow`
|
||||
decomposition campaign before adding H.3/H.4/L.1e feature bodies. This protects
|
||||
|
|
|
|||
|
|
@ -7,14 +7,15 @@ connected gate exposed an incorrect IdentifyResponse flag table, a non-retail
|
|||
shared-panel mount, and its missing inscription transaction. All three are
|
||||
corrected and live-confirmed. The creature-page follow-up now has retail's
|
||||
ordered stat rows and animated private preview. The follow-up item report and
|
||||
authored 310 x 400 layout correction are implemented; their connected visual
|
||||
gate is pending. Favorite-spell press-time selection and right-click local
|
||||
SpellPanel examination are implemented. The follow-up now maps
|
||||
authored 310 x 400 layout correction are implemented and user-accepted.
|
||||
Favorite-spell press-time selection and right-click local SpellPanel
|
||||
examination are implemented and user-accepted. The follow-up maps
|
||||
component-disabled ACE characters to the modern scarab/prismatic formula,
|
||||
resolves formula icons by their DAT icon DIDs, installs those icons as each
|
||||
authored template root's own foreground image, and migrates stale examination
|
||||
dimensions once to the authored 310 x 400 extent. Their connected visual gate
|
||||
is pending.
|
||||
dimensions once to the authored 310 x 400 extent. The final connected
|
||||
assessment gate passed on 2026-07-24. Slices 1–3 are complete; resume at Slice
|
||||
4, equipped-child world picking.
|
||||
**Milestone:** M4 prerequisite/preamble.
|
||||
**Architecture:** retained gameplay UI over shared selection, object, and
|
||||
interaction state. `GameWindow` remains a composition/callback shell.
|
||||
|
|
@ -192,7 +193,7 @@ Focused conformance fixtures cover the geometry layering plus melee, launcher,
|
|||
armor, spell, and special-property reports. The Release solution build passes
|
||||
with the 17 warnings already tracked by #228, 3,514 App tests / 3 skips, and
|
||||
7,931 complete-solution tests / 5 skips. The connected visual result remains
|
||||
the closeout gate.
|
||||
the historical pre-acceptance checkpoint; the final gate passed 2026-07-24.
|
||||
|
||||
The item-format conformance correction adds literal hook-tail cursor fixtures,
|
||||
wire/session/object-table propagation tests, the exact Black Phyntos Hive
|
||||
|
|
@ -201,7 +202,7 @@ LayoutDesc color-palette/enchantment-style coverage. The isolated Release
|
|||
solution build passes with the same 17 tracked warnings; 3,522 App tests / 3
|
||||
skips and 7,942 complete-solution tests / 5 skips pass while the previously
|
||||
launched client retains the normal Release output lock. The corrected
|
||||
connected item visual remains the closeout gate.
|
||||
connected item visual was accepted 2026-07-24.
|
||||
|
||||
The exhaustive item-report correction replaces the remaining generic/numeric
|
||||
approximations with the complete named-retail dispatch. Equipment sets use the
|
||||
|
|
@ -218,7 +219,7 @@ need live player/localization state (effective shield, cooldown remaining, and
|
|||
augmentation-cost `StringInfo`), plus character and creature-font residuals.
|
||||
The focused item formatter suite passes 21/21, App Release passes 3,531 tests /
|
||||
3 skips, and the complete Release solution passes 7,952 tests / 5 skips. The
|
||||
connected item-report comparison is the remaining Slice 3 gate.
|
||||
connected item-report comparison passed on 2026-07-24.
|
||||
|
||||
The material-title and section-boundary correction carries
|
||||
`PublicWeenieDesc.MaterialType` from CreateObject through the canonical object
|
||||
|
|
@ -268,7 +269,8 @@ each component descriptor's icon DID rather than its inventory WCID, applies
|
|||
the modern scarab/prismatic formula when ACE disables component enforcement
|
||||
(IA-21), and introduces per-window authored-geometry revisions so an obsolete
|
||||
saved examination height resets once without discarding position or future
|
||||
user resizing. The connected visual gate is pending. The 61-test focused App
|
||||
user resizing. The corrected formula/icons/foreground stack and authored
|
||||
extent were accepted on 2026-07-24. The 61-test focused App
|
||||
gate passed before this correction. The corrected focused tests, Release build
|
||||
with #228's 17 tracked test warnings, 3,555 App tests / 3 skips, and 7,986
|
||||
complete-solution tests / 5 skips pass.
|
||||
|
|
|
|||
|
|
@ -2,33 +2,24 @@
|
|||
|
||||
**Date:** 2026-07-24
|
||||
|
||||
**Status:** Slices A–I and J0–J5 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
|
||||
boundary and borrowed contract seam; J2 moved canonical session/transport
|
||||
lifetime and ordered inbound routing; J3.1–J3.6 moved canonical entity identity
|
||||
and object-table lifetime to Runtime, exact graphical projection identity to
|
||||
App, and one ordered canonical entity/object stream plus direct views to all
|
||||
hosts and closed the failure-safe owner ledger. J4.1 moved communication and
|
||||
social ownership into Runtime at `c9d25ade`; J4.2 moved inventory transaction
|
||||
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 closed at `cdee7a4b` after canonical action state
|
||||
(`b298f99f`), interaction transactions (`f5f7b417`), and combat/magic intent
|
||||
(`20df9d15`), local movement/outbound cadence (`aa3f4a60`), and per-session
|
||||
physics/remote simulation (`7e6033d0`), projectile simulation (`2aee3356`),
|
||||
and the combined simulation ledger/Runtime-only closeout moved to Runtime.
|
||||
J6 completed at `18d17d8b`: Runtime owns world environment, canonical reveal
|
||||
generation/readiness, exact F751/Position destination correlation, and the
|
||||
generation/cell-scoped graphical-host acknowledgement suffix. J7 completed
|
||||
at `ce41efb9` with its automated gates and the user's 2026-07-27
|
||||
physical-display acceptance. J8 and Slice J closed at `a9a822f2`: graphical
|
||||
and direct hosts share one `GameRuntime`, one retryable generation-reset
|
||||
transaction, and one canonical gameplay-owner graph. Slice K is active; K0
|
||||
established the tested Windows/Linux headless boundary at `aada8a37`.
|
||||
**Status:** Slices A–K are complete. Slice L is deferred at its L1
|
||||
implementation checkpoint by user direction on 2026-07-27.
|
||||
Flat-authoritative collision, zero-allocation resolve scratch, parsed-graph
|
||||
removal, prepared content, typed residency, retained render-scene submission,
|
||||
and bounded frame owners are production paths. Slice J closed at `a9a822f2`:
|
||||
graphical and direct hosts share one presentation-independent `GameRuntime`,
|
||||
one retryable generation-reset transaction, and one canonical session/entity/
|
||||
object/gameplay/movement/physics/projectile/environment/transit owner graph.
|
||||
Slice K closed through `776482da`: the Windows/Linux no-window host, shared
|
||||
immutable content, deterministic bot API/scheduler, 1/5/10/30-session
|
||||
isolation, two-hour simulated endurance, connected portal/movement parity,
|
||||
resource ceilings, graceful reconnect/logout, and zero-debt teardown pass.
|
||||
Slice L0 landed at `66f114b2`; L1's immutable Win32/X11/Wayland selection,
|
||||
packaged GLFW 3.4 preference, atomic capability record, active modern-GL
|
||||
probes, and safe terminal reporting landed at `11501d52`. Native Windows AMD
|
||||
passes. WSLg correctly rejects its missing mandatory bindless-texture
|
||||
capability. Physical-Linux validation and L2–L6 are parked; resume at the
|
||||
supported AMD/NVIDIA L1 gate.
|
||||
|
||||
**Scope:** Reconcile and sequence the existing Modern Pipeline (`MP`) and
|
||||
Linux/headless (`LH`) tracks using the 2026-07-24 connected performance audit.
|
||||
|
|
@ -1065,6 +1056,9 @@ host-parity tests after each move.
|
|||
|
||||
### Slice K — Linux headless and multi-session host
|
||||
|
||||
**Status:** complete through `776482da`; closeout is
|
||||
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
|
||||
|
||||
**Prepared execution plan:**
|
||||
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md).
|
||||
Implementation began after Slice J's no-window closeout at `a9a822f2`.
|
||||
|
|
@ -1100,9 +1094,14 @@ per-session incremental memory given a numeric ceiling at gate time.
|
|||
|
||||
### Slice L — Linux graphical host and evidence-gated GPU work
|
||||
|
||||
**Status:** deferred 2026-07-27. L0 is complete at `66f114b2`; the L1
|
||||
implementation checkpoint is `11501d52`. Physical supported-driver validation
|
||||
and L2–L6 remain pending.
|
||||
|
||||
**Prepared execution plan:**
|
||||
[`2026-07-26-modern-runtime-slice-l.md`](2026-07-26-modern-runtime-slice-l.md).
|
||||
Implementation begins after Slice K closes.
|
||||
Implementation began after Slice K closed and is parked at the recorded L1
|
||||
gate.
|
||||
|
||||
**Purpose:** Finish platform portability and only then pursue remaining GPU
|
||||
opportunities.
|
||||
|
|
@ -1309,10 +1308,20 @@ at every stable checkpoint. J7 completed at `ce41efb9`, and the user accepted
|
|||
its exact post-cutover visual matrix on 2026-07-27. J8 closed Slice J at
|
||||
`a9a822f2`; 395 Runtime tests, 3,731 App tests / 3 skips, 8,696 complete-
|
||||
solution tests / 5 skips, lifecycle/reconnect, and canonical nine-stop gates
|
||||
pass. Slice K is the current execution point.
|
||||
K0 completed at `aada8a37`: the no-App Windows/Ubuntu closure, strict
|
||||
no-connect validator, dependency/assembly guards, Release build, 8,708-test /
|
||||
5-skip complete suite, and local Ubuntu gates pass. K1 is active.
|
||||
pass. Slice K closed through `776482da`. K0 established the no-App
|
||||
Windows/Ubuntu dependency and loaded-assembly boundary; K1 added portable
|
||||
paths/config/credentials and the direct Runtime host; K2 added the
|
||||
deterministic scheduler and complete bot command/event API; K3 added shared
|
||||
immutable content plus multi-session isolation and connected observer parity;
|
||||
K4 added committed resource ceilings, 1/5/10/30-root and two-hour simulated
|
||||
endurance gates, and the ten-minute two-account native-Linux connected soak.
|
||||
That final process logged both accounts out through ACE and converged every
|
||||
Runtime/content ledger. Slice L0 then completed at `66f114b2`, and L1's
|
||||
implementation checkpoint landed at `11501d52`. App passes 3,763 / 3 skips
|
||||
and the complete Release suite passes 8,826 / 5 skips. Native Windows passes
|
||||
the packaged graphical/audio smoke; WSLg X11/Wayland correctly emit the
|
||||
actionable mandatory-bindless rejection with zero terminal ownership. Further
|
||||
Linux graphical work is deferred at the physical supported-driver L1 gate.
|
||||
Evidence:
|
||||
[`../research/2026-07-25-slice-g5-production-profile.md`](../research/2026-07-25-slice-g5-production-profile.md)
|
||||
and
|
||||
|
|
@ -1338,7 +1347,15 @@ and
|
|||
and
|
||||
[`../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md`](../research/2026-07-26-slice-j5-7-simulation-ownership-closeout.md)
|
||||
and
|
||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md)
|
||||
and
|
||||
[`../research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md`](../research/2026-07-27-slice-k4-resource-telemetry-checkpoint.md)
|
||||
and
|
||||
[`2026-07-26-modern-runtime-slice-k.md`](2026-07-26-modern-runtime-slice-k.md)
|
||||
and
|
||||
[`../research/2026-07-27-slice-l0-platform-services.md`](../research/2026-07-27-slice-l0-platform-services.md)
|
||||
and
|
||||
[`../research/2026-07-27-slice-l1-graphical-capability-checkpoint.md`](../research/2026-07-27-slice-l1-graphical-capability-checkpoint.md).
|
||||
|
||||
The intended order is therefore:
|
||||
|
||||
|
|
@ -1352,9 +1369,9 @@ honest metrics + committed baselines (A — exit criteria block C)
|
|||
-> delta GPU submission (G)
|
||||
-> residual frame cleanup (H-a, H-b, H-c)
|
||||
-> flat collision assets (I — COMPLETE)
|
||||
-> presentation-independent runtime (J — CURRENT at J5)
|
||||
-> Linux/headless/multi-session (K)
|
||||
-> evidence-gated GPU jobs (L)
|
||||
-> presentation-independent runtime (J — COMPLETE)
|
||||
-> Linux/headless/multi-session (K — COMPLETE)
|
||||
-> Linux graphical / GPU evidence (L — DEFERRED at L1)
|
||||
```
|
||||
|
||||
This order improves the current graphical client first while laying clean
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue