docs(runtime): record world environment ownership
This commit is contained in:
parent
902076c0a4
commit
4ab98b080e
7 changed files with 119 additions and 9 deletions
|
|
@ -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 at `f5f7b417`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6 world/portal/environment and projection-handshake ownership 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`, J5.3 combat/magic intent at `20df9d15`, J5.4 local movement/outbound cadence at `aa3f4a60`, J5.5 per-session physics/remote simulation at `7e6033d0`, J5.6 projectile simulation at `2aee3356`, and J5.7 combined simulation closeout at `cdee7a4b`. J6.1 world-environment ownership is closed at `902076c0`; J6.2 canonical reveal generation and typed destination readiness 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.
|
||||
|
||||
---
|
||||
|
|
@ -1777,7 +1777,11 @@ port in any phase — no separate listing here.
|
|||
> Its Runtime-only movement/use/combat/cast/projectile fixture, 323 Runtime
|
||||
> tests, 3,717 App tests / 3 skips, 8,596-test / 5-skip complete Release suite,
|
||||
> exact-binary lifecycle/reconnect gate, and canonical nine-stop route pass.
|
||||
> J6 world/portal/environment and projection-handshake ownership is active.
|
||||
> J6.1 completed at `902076c0`: Runtime owns the instance-scoped calendar,
|
||||
> synchronized world clock, weather, selected day group, and AdminEnvirons
|
||||
> state; its 332 Runtime tests, 3,718 App tests / 3 skips, 8,611-test / 5-skip
|
||||
> complete Release suite, and exact-binary lifecycle/reconnect route pass.
|
||||
> J6.2 canonical reveal generation and typed destination readiness is active.
|
||||
> The historical exact cutover
|
||||
> rollback remains
|
||||
> `git revert ef1d263337997bb030eadb7b8e71d73dc659907a`. Slice H is complete:
|
||||
|
|
|
|||
|
|
@ -251,8 +251,12 @@ residency is `0/0/0` at every stable checkpoint and teardown converges. Slice I
|
|||
combat, casting, and projectiles without presentation dependencies. Its 323
|
||||
Runtime tests, 3,717 App tests / 3 skips, 8,596 full Release tests / 5
|
||||
skips, exact-binary lifecycle/reconnect route, and canonical nine-stop route
|
||||
pass. J6 world/portal/environment and projection-handshake ownership is
|
||||
active under
|
||||
pass. J6.1 completed at `902076c0`: Runtime owns one instance-scoped
|
||||
calendar, synchronized world clock, weather state, selected day group, and
|
||||
AdminEnvirons state; App projects immutable DAT-backed sky presentation.
|
||||
Its 332 Runtime tests, 3,718 App tests / 3 skips, 8,611 complete Release
|
||||
tests / 5 skips, and exact-binary lifecycle/reconnect route pass. J6.2
|
||||
canonical reveal generation and typed destination readiness is active under
|
||||
[`2026-07-25-modern-runtime-slice-j.md`](2026-07-25-modern-runtime-slice-j.md).
|
||||
Slice-I closeout evidence is
|
||||
[`../research/2026-07-25-slice-i7-closeout.md`](../research/2026-07-25-slice-i7-closeout.md).
|
||||
|
|
|
|||
|
|
@ -354,8 +354,11 @@ graphical feel gates remain unchanged.
|
|||
|
||||
### J6 — world, portal, environment, and projection handshake
|
||||
|
||||
**J6.0 active 2026-07-26.** Detailed owner inventory, retail ordering,
|
||||
host-acknowledgement contract, execution ledger, and adversarial matrix:
|
||||
**J6.0–J6.1 complete; J6.2 active 2026-07-26.** The instance-scoped Runtime
|
||||
environment owner landed at `902076c0`; exact day-group, Release, full-suite,
|
||||
and connected lifecycle/reconnect gates pass. Detailed owner inventory, retail
|
||||
ordering, host-acknowledgement contract, execution ledger, adversarial matrix,
|
||||
and current evidence:
|
||||
[`2026-07-26-modern-runtime-slice-j6.md`](2026-07-26-modern-runtime-slice-j6.md).
|
||||
|
||||
- Move authoritative teleport/session cell identity, world clock, weather
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Modern runtime Slice J6 — world, transit, and host handshake
|
||||
|
||||
**Status:** J6.0 ACTIVE
|
||||
**Status:** J6.0–J6.1 COMPLETE; J6.2 ACTIVE
|
||||
**Parent:** `2026-07-25-modern-runtime-slice-j.md`, J6
|
||||
**Authorization:** the user approved Slices F–L, including gameplay-owner
|
||||
moves, on 2026-07-24
|
||||
|
|
@ -194,6 +194,8 @@ planned owner and no accepted presentation edge changes.
|
|||
|
||||
### J6.1 — instance-scoped environment owner
|
||||
|
||||
**Complete 2026-07-26 at `902076c0`.**
|
||||
|
||||
- Add `DerethCalendar` and make `WorldTimeService` consume its exact instance.
|
||||
- Add `RuntimeWorldEnvironmentState` and immutable environment definitions.
|
||||
- Reduce App's `WorldEnvironmentController` to DAT conversion plus
|
||||
|
|
@ -207,6 +209,16 @@ planned owner and no accepted presentation edge changes.
|
|||
Gate: Core/Runtime/App focused tests, Release build, full tests, exact
|
||||
day-group fixtures, and no Runtime dependency violation.
|
||||
|
||||
Result: Runtime now owns the one instance-scoped calendar, synchronized world
|
||||
clock, weather state, selected day group, AdminEnvirons state, and debug
|
||||
overrides. App only translates immutable DAT sky definitions and projects the
|
||||
selected Runtime state into the renderer. The 332 Runtime tests, 3,718 App
|
||||
tests / 3 skips, 8,611 complete Release tests / 5 skips, and exact-binary
|
||||
connected lifecycle/reconnect route pass. Both connected clients used
|
||||
`902076c0a42079596a8a273e9be402776cabf4b0`, completed all seven checkpoints,
|
||||
and exited gracefully with code zero. Evidence:
|
||||
[`../research/2026-07-26-slice-j6-1-environment-ownership.md`](../research/2026-07-26-slice-j6-1-environment-ownership.md).
|
||||
|
||||
### J6.2 — canonical reveal generation and typed readiness
|
||||
|
||||
- Add `RuntimeWorldTransitState`, immutable readiness acknowledgement, and
|
||||
|
|
@ -306,6 +318,12 @@ Release, full-suite, dependency, and teardown gates. The exact production
|
|||
commit and matching `git revert <sha>` are recorded here, in the parent plan,
|
||||
the closeout evidence, architecture, and durable memory before moving on.
|
||||
|
||||
J6.1 exact rollback:
|
||||
|
||||
```text
|
||||
git revert 902076c0a42079596a8a273e9be402776cabf4b0
|
||||
```
|
||||
|
||||
Documentation-only research/plan commits are not behavior rollback points.
|
||||
No workaround, timer, forced-ready path, duplicated owner, or alternate
|
||||
headless behavior is permitted.
|
||||
|
|
|
|||
69
docs/research/2026-07-26-slice-j6-1-environment-ownership.md
Normal file
69
docs/research/2026-07-26-slice-j6-1-environment-ownership.md
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
# Slice J6.1 — canonical world-environment ownership
|
||||
|
||||
**Date:** 2026-07-26
|
||||
**Production commit:** `902076c0a42079596a8a273e9be402776cabf4b0`
|
||||
**Exact rollback:** `git revert 902076c0a42079596a8a273e9be402776cabf4b0`
|
||||
|
||||
## Outcome
|
||||
|
||||
`AcDream.Runtime` now owns one world-environment lifetime per client session:
|
||||
|
||||
- an instance-scoped `DerethCalendar`;
|
||||
- the server-synchronized world clock;
|
||||
- weather progression and active weather state;
|
||||
- retail day-group selection;
|
||||
- AdminEnvirons state;
|
||||
- typed debug time and weather overrides.
|
||||
|
||||
`AcDream.App` remains the graphical host. It converts immutable DAT sky
|
||||
definitions into the Runtime definition and maps Runtime's selected day-group
|
||||
index, clock, and weather snapshot into sky rendering. It does not own a
|
||||
second clock or weather state.
|
||||
|
||||
The production path no longer mutates a process-global Region calendar origin.
|
||||
Two Runtime instances may therefore use different Region origins and server
|
||||
times without contaminating each other. Startup environment variables enter
|
||||
once through `RuntimeOptions`.
|
||||
|
||||
## Retail mechanism
|
||||
|
||||
- `SkyDesc::CalcPresentDayGroup @ 0x00500E10`
|
||||
- `CPlayerSystem::Handle_Admin__Environs @ 0x0055DE20`
|
||||
|
||||
`SkyDayGroupSelector` preserves the named-retail ordered selection algorithm
|
||||
and its `0x6A42FDB2` pseudo-random multiplier. `DerethCalendar` preserves the
|
||||
existing retail epoch conversion while moving the mutable Region origin into
|
||||
the owning Runtime instance.
|
||||
|
||||
No new retail divergence was introduced.
|
||||
|
||||
## Automated evidence
|
||||
|
||||
- Runtime: 332 passed.
|
||||
- App: 3,718 passed / 3 skipped.
|
||||
- Complete solution: 8,611 passed / 5 skipped.
|
||||
- Release build: 0 errors, 0 warnings.
|
||||
- Runtime dependency/source guards: passed.
|
||||
- Two-instance calendar, TimeSync, rollover/day-group, AdminEnvirons, debug
|
||||
override, reset, and projection fixtures: passed.
|
||||
|
||||
## Connected evidence
|
||||
|
||||
Report:
|
||||
`logs/connected-world-gate-20260726-164602/report.json`
|
||||
|
||||
The report records source and embedded binary commit
|
||||
`902076c0a42079596a8a273e9be402776cabf4b0`.
|
||||
|
||||
- Capped process: 244.907 seconds, six checkpoints, graceful code-zero exit.
|
||||
- Uncapped fresh-process reconnect: 61.46 seconds, one checkpoint, graceful
|
||||
code-zero exit.
|
||||
- Route: fresh login, Aerlinthe, Rynthid world edge, Facility Hub dungeon,
|
||||
Holtburg, Aerlinthe revisit, then fresh-process reconnect.
|
||||
- Failures: zero.
|
||||
- Expected warning: 25 instrumented world-edge landblock misses.
|
||||
- Reveal invariant failures: zero.
|
||||
|
||||
This proves the new environment owner preserves connected login, outdoor,
|
||||
world-edge, dungeon, revisit, disconnect, and reconnect behavior before J6.2
|
||||
moves the independent portal/reveal lifetime.
|
||||
Loading…
Add table
Add a link
Reference in a new issue