docs: reconcile project state and refresh README
Some checks failed
Headless portability / portable-headless (ubuntu-latest) (push) Has been cancelled
Headless portability / portable-headless (windows-latest) (push) Has been cancelled
Headless portability / linux-graphical (push) Has been cancelled

This commit is contained in:
Erik 2026-07-27 12:53:31 +02:00
parent 97a095d628
commit f6275f4501
12 changed files with 432 additions and 295 deletions

View file

@ -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 13, including the complete assessment surface, are user-accepted.
Equipped-child picking and vendor browse/transactions remain Slices 46.
- **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 AE 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 FL, 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 FI 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 AK 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 L2L6 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

View file

@ -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 AI and J0J5 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 46.
- **Structural/runtime state:** all eight `GameWindow` decomposition slices,
Modern Runtime Slices AJ, 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 L2L6 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

View file

@ -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.

View file

@ -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 |
|---|---|---|---|---|---|

View file

@ -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 13 are complete; M4 resumes at Slice 4 equipped-child picking,
followed by vendor browsing and authoritative transactions.
---
@ -753,7 +755,7 @@ behavior. Estimated 1726 days focused work, 35 weeks calendar.
- **Missile/portal VFX cell-less rule clarified 2026-07-16.** The Steps 05 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 19 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 19 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.

View file

@ -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 13 are user-accepted; resume at Slice 4
equipped-child picking.
The separately authorized modern-runtime performance program has completed
Slices AD: 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 13 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 (~610 weeks)
### M4 — "Live in the world" — 🟡 ACTIVE (~610 weeks)
**Entry condition:** complete the behavior-preserving `GameWindow`
decomposition campaign before adding H.3/H.4/L.1e feature bodies. This protects

View file

@ -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 13 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.

View file

@ -2,33 +2,24 @@
**Date:** 2026-07-24
**Status:** Slices AI and J0J5 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 FL were
explicitly approved 2026-07-24. Slice J0J1 established the enforced Runtime
boundary and borrowed contract seam; J2 moved canonical session/transport
lifetime and ordered inbound routing; J3.1J3.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 AK 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 L2L6 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 L2L6 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