docs: hand off placement campaign finish
This commit is contained in:
parent
175ad6b0d0
commit
205f3fea6f
8 changed files with 441 additions and 176 deletions
|
|
@ -52,26 +52,17 @@ What does NOT go here:
|
||||||
review). Related narrowing: a remote whose landblock leaves the
|
review). Related narrowing: a remote whose landblock leaves the
|
||||||
headless service window between ProjectSpawn and placement commit
|
headless service window between ProjectSpawn and placement commit
|
||||||
still parks (route 8, rarer than the pre-F7 leak).
|
still parks (route 8, rarer than the pre-F7 leak).
|
||||||
- **#278 — OPEN — post-C3c user-session triage bundle (2026-08-02
|
- **#278 — NARROWED 2026-08-03 — post-C3c user-session triage bundle.**
|
||||||
observations).** (a) purple materialization haze re-fires while
|
Resolved and user-verified: (a) the persistent login purple haze no longer
|
||||||
standing still — traced to the Hidden/UnHide script re-firing on a
|
races raw PlayerCreate receipt (`175ad6b0`); (c) `/ls` works; (d) remote
|
||||||
visibility edge; most plausible driver is the pre-existing `6b28ff99`
|
monsters no longer pop in behind the player or place/attack in a different
|
||||||
streaming-convergence regression (its dedicated slice precedes C5) —
|
coordinate frame (`670f307c`); (e) the retirement-receipt replay loop that
|
||||||
re-observe after that slice; (b) no lateral glide when walking against
|
stalled streaming and portal convergence is gone (`01f4791e`); and (f)
|
||||||
impassable slopes — verify against open #269 (Campaign P slope-slide
|
materialization/effect presentation is bound after canonical placement
|
||||||
residual) in the session before treating as new; (c) ~~`/ls` command
|
(`f24532ad`, `175ad6b0`). The remaining item is (b): explicitly compare
|
||||||
reported non-working~~ — RESOLVED 2026-08-02: user confirmed `/ls`
|
lateral glide against impassable slopes with open #269 before closing this
|
||||||
works in-client; the earlier report was environmental noise.
|
bundle. Far terrain that can visibly continue building after portal reveal
|
||||||
**Smoke-test additions (2026-08-02 evening, retail-UI session):**
|
is tracked separately as #280.
|
||||||
(d) monsters pop into existence late — appear on radar BEHIND the
|
|
||||||
running player; (e) recall spends far longer in portal space than
|
|
||||||
retail, occasionally sticks there; (f) on portal exit the character
|
|
||||||
pops in instead of being visible at reveal. (d)/(e)/(f) are the
|
|
||||||
`6b28ff99` publication-throughput regression made user-visible by
|
|
||||||
C3c's retail-correct wait-for-collision placement order (spawns no
|
|
||||||
longer hand-place ahead of publication); expected to resolve with the
|
|
||||||
O(changed)-clone slice — re-verify all three in its acceptance
|
|
||||||
session.
|
|
||||||
- **#279 — DONE (2026-08-03, user-verified) — one-shot spell/effect
|
- **#279 — DONE (2026-08-03, user-verified) — one-shot spell/effect
|
||||||
scripts arriving during the suppressed-until-receipt window were lost.**
|
scripts arriving during the suppressed-until-receipt window were lost.**
|
||||||
`EntityEffectController` now retains the mixed F754/F755 FIFO behind an
|
`EntityEffectController` now retains the mixed F754/F755 FIFO behind an
|
||||||
|
|
@ -80,7 +71,7 @@ What does NOT go here:
|
||||||
resources. Live rebuckets also keep the effect cell synchronized with the
|
resources. Live rebuckets also keep the effect cell synchronized with the
|
||||||
entity cell. Spell buffs, recalls, arrows, and combat spell projectiles were
|
entity cell. Spell buffs, recalls, arrows, and combat spell projectiles were
|
||||||
verified in the connected client; focused effect, projectile, and
|
verified in the connected client; focused effect, projectile, and
|
||||||
cell-transition tests cover the race.
|
cell-transition tests cover the race. Landed at `f24532ad`.
|
||||||
- **#280 — OPEN — portal reveal can expose an incompletely streamed distant
|
- **#280 — OPEN — portal reveal can expose an incompletely streamed distant
|
||||||
landscape.** User-observed 2026-08-03: after some recalls, the nearby
|
landscape.** User-observed 2026-08-03: after some recalls, the nearby
|
||||||
destination is playable but terrain near the far end of the view continues
|
destination is playable but terrain near the far end of the view continues
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# acdream — strategic roadmap
|
# acdream — strategic roadmap
|
||||||
|
|
||||||
**Status:** Living document. Updated 2026-07-27. **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 closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 closed Slice J at `a9a822f2` with one shared graphical/no-window root and generation-reset transaction. Slice K Linux headless/multi-session work is closed. K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's portable single-session host at `f8cb840f`, K2's deterministic scheduler and shared bot API at `7e8acb74` plus `38e83640`, and K3's shared-content/isolation plus connected observer gate at `3f340125`. K4 closed through `776482da`: 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, committed resource ceilings, ten minutes of exact native Linux two-account connected sampling, ACE-confirmed graceful logout, and zero-debt Runtime/content convergence all pass. Slice L Linux graphical/platform work is parked at its L1 implementation checkpoint by user direction on 2026-07-27. Issue #225's lifestone/particle alpha comparison remains a separate rendering visual gate.
|
**Status:** Living document. Updated 2026-08-03. **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 closed at `a6860d55` plus `acb845d8`; J6.3 exact F751/Position destination correlation is closed at `6a063a27`; J6.4 exact graphical-host acknowledgement and owner cleanup is closed at `18d17d8b`. J7's one graphical `GameRuntime` root is closed at `ce41efb9`, including the user's 2026-07-27 exact post-cutover visual acceptance. J8 closed Slice J at `a9a822f2` with one shared graphical/no-window root and generation-reset transaction. Slice K Linux headless/multi-session work is closed. K0's tested no-presentation Windows/Linux boundary closed at `aada8a37`, K1's portable single-session host at `f8cb840f`, K2's deterministic scheduler and shared bot API at `7e8acb74` plus `38e83640`, and K3's shared-content/isolation plus connected observer gate at `3f340125`. K4 closed through `776482da`: 1/5/10/30-root isolation and two-hour simulated endurance, death/randomized cancellation, committed resource ceilings, ten minutes of exact native Linux two-account connected sampling, ACE-confirmed graceful logout, and zero-debt Runtime/content convergence all pass. Slice L Linux graphical/platform work is parked at its L1 implementation checkpoint by user direction on 2026-07-27. 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.
|
**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.
|
||||||
|
|
||||||
**Slice L checkpoint:** L0 closed at `66f114b2` with one typed graphical
|
**Slice L checkpoint:** L0 closed at `66f114b2` with one typed graphical
|
||||||
|
|
@ -62,7 +62,7 @@ crowd, two-client remote/door/portal, and shallow-water behavior. The user
|
||||||
waived the general sweep and explicitly deferred the barred-house gate as
|
waived the general sweep and explicitly deferred the barred-house gate as
|
||||||
#274. The later exact-location #273 tight-gap gate is now fixed and accepted.
|
#274. The later exact-location #273 tight-gap gate is now fixed and accepted.
|
||||||
|
|
||||||
**Remaining physics-divergence closeout (ACTIVE 2026-07-31):** the user then
|
**Remaining physics-divergence closeout (ACTIVE, checkpoint 2026-08-03):** the user then
|
||||||
authorized retirement of the remaining proven collision/placement gaps before
|
authorized retirement of the remaining proven collision/placement gaps before
|
||||||
vendor work resumes. Nested retry, edge/StepDown/Path-6 ordering, exact cell
|
vendor work resumes. Nested retry, edge/StepDown/Path-6 ordering, exact cell
|
||||||
availability, atomic collision generations, canonical Core SetPosition,
|
availability, atomic collision generations, canonical Core SetPosition,
|
||||||
|
|
@ -84,12 +84,17 @@ execution-time retail Position routing, shared apply bodies keeping one
|
||||||
snapshot store in lockstep, and converged ownership ledgers on every
|
snapshot store in lockstep, and converged ownership ledgers on every
|
||||||
abandonment path — dual independent reviews PASS; register rows
|
abandonment path — dual independent reviews PASS; register rows
|
||||||
AD-59/AD-60/AP-130/AP-131/AP-132/TS-62/TS-63 filed in the same commit.
|
AD-59/AD-60/AP-130/AP-131/AP-132/TS-62/TS-63 filed in the same commit.
|
||||||
Production Create registration is not yet cut over (the executor has no
|
Production initial Create registration is now cut over by C3c (`529e0e9d`).
|
||||||
production caller). Next is the all-host/all-route cutover which can retire
|
The O(changed) collision-publication checkpoint and five stabilization fixes
|
||||||
AP-1/AD-1 behind its connected/visual gates. AP-22 authored object shapes and
|
through `175ad6b0` restore recenter convergence, remote world-frame placement
|
||||||
AD-10 remote contact-plane projection follow, then the final matrix and
|
and targeting, distant Use, one-shot spell/projectile/static effects, and
|
||||||
ledger closeout. Current handoff:
|
login materialization; the corresponding connected user gates passed. The
|
||||||
[`2026-08-02-runtime-continuation-executor-handoff.md`](../research/2026-08-02-runtime-continuation-executor-handoff.md).
|
campaign remains open for six fixture reconciliations, C4 routes 2–7, portal
|
||||||
|
destination prefetch #280, the final-binary C5 suite/soak/visual matrix,
|
||||||
|
AP-22 authored object shapes, and AD-10 remote contact-plane projection.
|
||||||
|
Current plan and copy-ready handoff:
|
||||||
|
[`2026-08-02-placement-cutover.md`](2026-08-02-placement-cutover.md) and
|
||||||
|
[`NEXT-AGENT-PROMPT.md`](../research/2026-08-02-collision-throughput-handoff/NEXT-AGENT-PROMPT.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,12 +109,18 @@ through the canonical SetPosition lifecycle. Independent retail-conformance
|
||||||
and architecture/adversarial reviews both PASS after five implementation
|
and architecture/adversarial reviews both PASS after five implementation
|
||||||
rounds; register rows AD-59/AD-60/AP-130/AP-131/AP-132/TS-62/TS-63 document
|
rounds; register rows AD-59/AD-60/AP-130/AP-131/AP-132/TS-62/TS-63 document
|
||||||
the slice's deviations; Runtime tests 903/903, complete Release solution
|
the slice's deviations; Runtime tests 903/903, complete Release solution
|
||||||
10,696/4 skips. Production Create registration is still NOT cut over — the
|
10,696/4 skips. Production initial Create registration is now cut over by C3c
|
||||||
executor has no production caller. The remaining order is the all-host/
|
(`529e0e9d`). The O(changed) collision-publication checkpoint and
|
||||||
all-route cutover (which can retire AP-1/AD-1 behind its connected/visual
|
stabilization fixes `01f4791e`, `670f307c`, `1fc529cd`, `f24532ad`, and
|
||||||
gates), AP-22 shape fidelity, AD-10 remote contact-plane projection, and the
|
`175ad6b0` are connected user-accepted for recenter convergence, remote
|
||||||
final matrix/ledger closeout. Resume Slice 5 vendor browsing only after that
|
monster/static placement and targeting, distant Use, spell/projectile/static
|
||||||
closeout or a new explicit user direction.
|
VFX, and login materialization. The remaining order is six selected-fixture
|
||||||
|
reconciliations, C4 routes 2–7, portal destination prefetch #280, C5's
|
||||||
|
final-binary complete suite/soak/two-client matrix, AP-22 shape fidelity,
|
||||||
|
AD-10 remote contact-plane projection, and final ledger closeout. Resume Slice
|
||||||
|
5 vendor browsing only after that closeout or a new explicit user direction.
|
||||||
|
Canonical checkpoint:
|
||||||
|
[`2026-08-02-placement-cutover.md`](2026-08-02-placement-cutover.md).
|
||||||
|
|
||||||
The separately authorized modern-runtime performance program has completed
|
The separately authorized modern-runtime performance program has completed
|
||||||
Slices A–D: corrected measurement, prepared-package bake/dedup, package-only
|
Slices A–D: corrected measurement, prepared-package bake/dedup, package-only
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,60 @@ residence + continuation-executor owner (`38fd4b8d` / `30012361` /
|
||||||
`5db3de3c`), delete the legacy duplicate authorities, and retire AP-1/AD-1
|
`5db3de3c`), delete the legacy duplicate authorities, and retire AP-1/AD-1
|
||||||
behind connected + user-visual gates.
|
behind connected + user-visual gates.
|
||||||
|
|
||||||
|
## Handoff checkpoint — 2026-08-03
|
||||||
|
|
||||||
|
**Status: stabilization checkpoint accepted; campaign closeout is not yet
|
||||||
|
complete.** The C3c production cutover and the O(changed) collision
|
||||||
|
publication checkpoint are now playable after five separately committed
|
||||||
|
root-cause fixes:
|
||||||
|
|
||||||
|
- `01f4791e` stops origin recenter from manufacturing and replaying a second
|
||||||
|
retirement receipt for a pending-only live-projection bucket. Its exact
|
||||||
|
binary passed the complete Release suite, lifecycle route, and canonical
|
||||||
|
nine-stop soak (`connected-r6-soak-20260802-204309`, nine stops, zero
|
||||||
|
failures/wait cues/pending retirements).
|
||||||
|
- `670f307c` keeps remote Create placement, the local-player physics host,
|
||||||
|
targeting, chasing, and attacks in the same world-coordinate frame. The
|
||||||
|
user accepted monster placement/chase/hit behavior and static placement
|
||||||
|
after portals.
|
||||||
|
- `1fc529cd` materializes the canonical minimal static physics host before a
|
||||||
|
distant Use/MoveTo route and reconciles the pre-PartArray startup motion
|
||||||
|
suffix. The user accepted near and distant object use.
|
||||||
|
- `f24532ad` defers one-shot F754/F755 effects until canonical placement has
|
||||||
|
bound presentation, retries projectile/static-animation sidecars on the
|
||||||
|
committed visibility edge, and keeps effect cells synchronized. The user
|
||||||
|
accepted buffs, recalls, arrows, combat spell projectiles, portals, and
|
||||||
|
static animation.
|
||||||
|
- `175ad6b0` sends LoginComplete from the local first-placement terminal edge
|
||||||
|
instead of raw PlayerCreate receipt, so ACE's intentional login Hidden/
|
||||||
|
materialization state cannot race placement. The user accepted the login
|
||||||
|
haze behavior.
|
||||||
|
|
||||||
|
Focused verification after the final fix passed 90 App effect/projectile/
|
||||||
|
static-scheduler tests, two Runtime login tests, the exact live-entity cell
|
||||||
|
tracking regression, all 79 Headless tests, and the Release solution build
|
||||||
|
with zero errors. The long connected soak and complete solution suite have
|
||||||
|
**not** been rerun on the final `175ad6b0` binary. A broader selected fixture
|
||||||
|
run also exposed five `LiveEntityRuntimeTests` failures tied to the still-open
|
||||||
|
placement cutover plus one old remote first-entry fixture that supplies an
|
||||||
|
empty collision source; classify and fix those before claiming C5 closure.
|
||||||
|
|
||||||
|
Remaining campaign work, in order:
|
||||||
|
|
||||||
|
1. Reproduce and repair the six fixture failures without weakening their
|
||||||
|
assertions or adding compatibility bypasses.
|
||||||
|
2. Finish C4's routes 2–7 and remove their legacy placement writers; fold in
|
||||||
|
#276 and #277 where their route becomes authoritative.
|
||||||
|
3. Resolve #280 with retail's configured destination-prefetch window so the
|
||||||
|
portal viewport never reveals visibly constructing far terrain.
|
||||||
|
4. Run C5's complete Release suite, lifecycle/reconnect route, latest-binary
|
||||||
|
nine-stop soak, two-client observation, and the remaining #269 slope-glide
|
||||||
|
visual check. A pass from `01f4791e` is evidence for that fix, not a
|
||||||
|
substitute for the final-binary soak.
|
||||||
|
5. Delete the superseded paths, retire AP-1/AD-1/AP-131 and AD-60's legacy
|
||||||
|
half only when the code proves they are gone, then complete AP-22 and
|
||||||
|
AD-10 and close the campaign ledger.
|
||||||
|
|
||||||
**Inputs (read in order):**
|
**Inputs (read in order):**
|
||||||
1. [`2026-08-02-runtime-continuation-executor-handoff.md`](../research/2026-08-02-runtime-continuation-executor-handoff.md)
|
1. [`2026-08-02-runtime-continuation-executor-handoff.md`](../research/2026-08-02-runtime-continuation-executor-handoff.md)
|
||||||
— the completed dormant mechanism and its cutover notes.
|
— the completed dormant mechanism and its cutover notes.
|
||||||
|
|
@ -189,7 +243,7 @@ same commit) → docs/handoff commit. No workarounds; no fused slices.
|
||||||
175401`). Closeout:
|
175401`). Closeout:
|
||||||
[`2026-08-02-c3c-cutover-closeout.md`](../research/2026-08-02-c3c-cutover-closeout.md).
|
[`2026-08-02-c3c-cutover-closeout.md`](../research/2026-08-02-c3c-cutover-closeout.md).
|
||||||
**Carried to C4/C5:** route-1 far-Create service-window conversion
|
**Carried to C4/C5:** route-1 far-Create service-window conversion
|
||||||
if either streaming/broadcast radius changes (#276); the
|
if either streaming/broadcast radius changes (#277); the
|
||||||
window-departure park narrowing; `NotifyRetirement`-on-active-entry
|
window-departure park narrowing; `NotifyRetirement`-on-active-entry
|
||||||
subscriber invariant; the reachable equip-mid-conductor fail-fast;
|
subscriber invariant; the reachable equip-mid-conductor fail-fast;
|
||||||
settle-CellId discard (#276-adjacent, see ISSUES).
|
settle-CellId discard (#276-adjacent, see ISSUES).
|
||||||
|
|
@ -198,9 +252,10 @@ same commit) → docs/handoff commit. No workarounds; no fused slices.
|
||||||
4 (remote Create/Position; delete `RemoteTeleportController`/`Placement`
|
4 (remote Create/Position; delete `RemoteTeleportController`/`Placement`
|
||||||
and the inline MoveOrTeleport duplicate), 5 (projectile authoritative),
|
and the inline MoveOrTeleport duplicate), 5 (projectile authoritative),
|
||||||
6 (drops + split-recovery marking), 7 (residual pickup/parent/delete
|
6 (drops + split-recovery marking), 7 (residual pickup/parent/delete
|
||||||
polish).** May land as more than one commit if a route proves large;
|
polish). — OPEN at the 2026-08-03 handoff.** May land as more than one
|
||||||
|
commit if a route proves large;
|
||||||
each sub-landing keeps the full review discipline.
|
each sub-landing keeps the full review discipline.
|
||||||
- **C5 — legacy deletion + closeout gates.** Delete every superseded legacy
|
- **C5 — legacy deletion + closeout gates — OPEN.** Delete every superseded legacy
|
||||||
path; parity tests; exact lifecycle/reconnect + canonical nine-stop
|
path; parity tests; exact lifecycle/reconnect + canonical nine-stop
|
||||||
connected routes; two-client observation; **user visual matrix** (the
|
connected routes; two-client observation; **user visual matrix** (the
|
||||||
campaign's stopping point for user acceptance). Retire AP-1, AD-1,
|
campaign's stopping point for user acceptance). Retire AP-1, AD-1,
|
||||||
|
|
|
||||||
|
|
@ -1,155 +1,285 @@
|
||||||
# Task: diagnose and fix the acdream collision/placement regressions, then COMMIT the fixes
|
# Next-agent prompt — finish the retail placement/collision campaign
|
||||||
|
|
||||||
Work EXCLUSIVELY in `C:\Users\erikn\.codex\worktrees\af5e\acdream`, branch
|
Continue acdream from the 2026-08-03 stabilization checkpoint. The code is
|
||||||
`codex/port-claude-agents`, HEAD `71604331`. Read `CLAUDE.md` at the repo
|
modern; behavior must remain retail-faithful. The campaign is playable again,
|
||||||
root FIRST — its rules bind you (grep-named-retail-first workflow, no
|
but it is **not closed**.
|
||||||
workarounds, divergence-register bookkeeping, connected gates, launch
|
|
||||||
instructions). The user's in-game observations quoted below are AXIOMS —
|
|
||||||
they override any green gate number.
|
|
||||||
|
|
||||||
## Standing constraints
|
## Start here
|
||||||
|
|
||||||
- NEVER `git add -A`, `git add .`, `git reset --hard`, or
|
Use the merged local `main` worktree:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Users\erikn\source\repos\acdream
|
||||||
|
```
|
||||||
|
|
||||||
|
The completed fixes originated on `codex/port-claude-agents` and are merged
|
||||||
|
into local `main`. Confirm the exact starting commit with `git rev-parse HEAD`
|
||||||
|
and read the operator's handoff message for the merge SHA. Do not reset,
|
||||||
|
clean, or overwrite the main worktree's untracked research/reference files.
|
||||||
|
The original feature worktree remains at:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\Users\erikn\.codex\worktrees\af5e\acdream
|
||||||
|
```
|
||||||
|
|
||||||
|
That feature worktree contains protected user-local modifications and is not
|
||||||
|
the preferred continuation workspace.
|
||||||
|
|
||||||
|
Read these files in order before editing:
|
||||||
|
|
||||||
|
1. `CLAUDE.md` and `AGENTS.md`.
|
||||||
|
2. `docs/plans/2026-08-02-placement-cutover.md` — canonical placement-cutover
|
||||||
|
plan and the 2026-08-03 checkpoint.
|
||||||
|
3. This prompt.
|
||||||
|
4. `docs/research/2026-08-02-collision-throughput-handoff/implementer-progress.md`
|
||||||
|
— especially `## P1` and the final stabilization checkpoint.
|
||||||
|
5. `docs/research/2026-08-02-collision-throughput-handoff/p1-retirement-receipt-loop.md`.
|
||||||
|
6. `docs/research/2026-08-02-c3c-cutover-closeout.md`.
|
||||||
|
7. `docs/ISSUES.md` #269 and #276–#280.
|
||||||
|
8. `docs/architecture/retail-divergence-register.md` rows AP-1, AP-22,
|
||||||
|
AP-131, AD-1, AD-10, AD-60, and TS-28.
|
||||||
|
|
||||||
|
`docs-drafts.md` is now explicitly historical. Do **not** apply it wholesale:
|
||||||
|
it predates the final fixes and incorrectly tries to reuse issue number #280.
|
||||||
|
|
||||||
|
## Binding rules
|
||||||
|
|
||||||
|
- Grep `docs/research/named-retail/acclient_2013_pseudo_c.txt` by named
|
||||||
|
`class::method` before fresh decompilation. Retail behavior is the oracle.
|
||||||
|
- Preserve the modern Runtime-owned, presentation-independent architecture.
|
||||||
|
Graphical and headless hosts must use the same canonical gameplay owners.
|
||||||
|
- Root causes only. Do not add timeouts, grace periods, suppression flags,
|
||||||
|
catch-and-swallow paths, duplicated placement writers, or compatibility
|
||||||
|
bypasses to make a test green.
|
||||||
|
- The user's connected observations are acceptance facts. A green automated
|
||||||
|
test cannot overrule a live regression.
|
||||||
|
- Never use `git add -A`, `git add .`, `git reset --hard`, or
|
||||||
`git checkout -- <path>`. Stage exact paths only.
|
`git checkout -- <path>`. Stage exact paths only.
|
||||||
- NEVER stage, revert, or normalize these user-local files: `AGENTS.md`,
|
- Do not delete or normalize unrelated/untracked worktree content.
|
||||||
`src/AcDream.App/Interaction/PlayerInteractionMovementSink.cs`,
|
- Each independent fix must be a bisectable commit whose message records the
|
||||||
`src/AcDream.App/Rendering/LiveAnimationPresentationContext.cs`,
|
root cause and evidence.
|
||||||
`src/AcDream.Runtime/Physics/RuntimeRemotePhysicsUpdater.cs`,
|
- Update the divergence register and issues in the same commit that changes
|
||||||
`tests/AcDream.Core.Tests/Physics/CellTransitTests.cs`,
|
their truth. Retire a row only when its exact legacy mechanism is gone.
|
||||||
`tests/AcDream.Core.Tests/Physics/Issue133DungeonTeleportPrefixTests.cs`,
|
- Do not push unless the user explicitly asks.
|
||||||
`tools/A8CellAudit/A8CellAudit.csproj`, the root
|
- Connected tests require the user's ACE server at `127.0.0.1:9000`. Close
|
||||||
`implementer-progress.md`, and any `launch-*.log`.
|
the client gracefully before reconnecting so ACE releases the session.
|
||||||
- No workarounds without explicit user approval: root causes only — no
|
|
||||||
rate knobs, grace periods, suppression flags, or catch-and-swallow.
|
|
||||||
- Do not push. Commit locally to `codex/port-claude-agents` only.
|
|
||||||
- Connected gates need the user's ACE server at `127.0.0.1:9000`
|
|
||||||
(normally up). Follow CLAUDE.md's "Logout-before-reconnect" graceful-
|
|
||||||
close discipline between client launches. If ACE is unreachable, STOP
|
|
||||||
and report — never fake or skip a connected gate.
|
|
||||||
|
|
||||||
## Where everything is
|
## What has been completed
|
||||||
|
|
||||||
- **This directory** (`docs/research/2026-08-02-collision-throughput-handoff/`):
|
### C3c and collision-publication checkpoint
|
||||||
`design-note.md` (the approved D2 delta-commit design),
|
|
||||||
`implementer-progress.md` (the complete campaign evidence trail — read
|
|
||||||
the `## Collision-clone O1/O2/O3` and `## C3c-F4` sections first),
|
|
||||||
`docs-drafts.md` (register/digest drafts NOT yet applied),
|
|
||||||
`user-observations-*.md` (the axioms).
|
|
||||||
- Campaign plan: `docs/plans/2026-08-02-placement-cutover.md`. C3c
|
|
||||||
closeout: `docs/research/2026-08-02-c3c-cutover-closeout.md`. Issues:
|
|
||||||
`docs/ISSUES.md` #276–#279.
|
|
||||||
- Recent commits: `529e0e9d` (C3c production placement cutover — REVIEWED
|
|
||||||
and accepted), `f4ef2b2a`/`c52ce14a` (docs), `71604331` (the O1–O3
|
|
||||||
collision delta-commit — **WIP, ON HOLD, NO review passed it**; its
|
|
||||||
commit message summarizes state).
|
|
||||||
- Logs (untracked): `launch-feeltest-oclone.log` (the FAILING user feel
|
|
||||||
test on the O-tree), `logs/connected-r6-soak-20260802-194423.*`
|
|
||||||
(current soak: Passed=false, 4 failures),
|
|
||||||
`logs/connected-r6-soak-20260802-143157.*` (pre-O soak: 37 failures),
|
|
||||||
`logs/connected-r6-soak-20260727-004942.artifacts` (last fully-PASSING
|
|
||||||
baseline), `logs/connected-world-gate-20260802-193029` (lifecycle PASS
|
|
||||||
on the O-tree).
|
|
||||||
|
|
||||||
## Problems to diagnose and fix (priority order)
|
- `529e0e9d` — C3c production first-entry cutover for graphical and headless
|
||||||
|
hosts.
|
||||||
|
- `71604331` — O(changed) per-landblock collision publication checkpoint.
|
||||||
|
Its original commit was deliberately marked WIP after the first feel test;
|
||||||
|
do not treat that old label as the current product status. The following
|
||||||
|
fixes addressed the observed failures.
|
||||||
|
|
||||||
**P1 — the retirement-receipt exception loop (smoking gun).**
|
### Stabilization fixes, all user-verified where visual behavior applies
|
||||||
`launch-feeltest-oclone.log` contains **243** occurrences of
|
|
||||||
`streaming: origin-recenter preparation will resume:
|
|
||||||
System.InvalidOperationException: Landblock <id> already has a full
|
|
||||||
retirement receipt.` — a continuous catch-retry loop during origin
|
|
||||||
recenter. Find the receipt-lifecycle break introduced (or exposed) by
|
|
||||||
the O1–O3 diff (`git show 71604331`): the retirement machinery is
|
|
||||||
`RuntimePhysicsState.AdvanceCollisionRetirementMutation` (~:1880-1990),
|
|
||||||
`StreamingController.cs` `AdvanceRetirements` call sites (:648/:670/:689/:736),
|
|
||||||
recenter adoption at `LandblockPresentationPipeline.cs:322-345`. The
|
|
||||||
catch-and-resume site that swallows this exception may itself violate
|
|
||||||
the no-silent-catch rule — evaluate it too.
|
|
||||||
|
|
||||||
**P2 — user-visible placement failures on the O-tree (the axioms).**
|
1. `01f4791e` — **retirement-receipt replay loop fixed.**
|
||||||
Quote: "Monsters pop into existence as I run by them. ran to a different
|
- Root cause: a pending-only live-projection bucket was promoted to a
|
||||||
place, spawned in the air long in front of me, stabs are placed
|
second full landblock cleanup receipt after the first detach had already
|
||||||
incorrectly. This is not how retail worked. I could see monsters way in
|
committed. The duplicate guard threw; a broad resumable path replayed
|
||||||
front of me." Suspects, in order: (a) P1's stalled/looping recenter
|
the detach 243 times.
|
||||||
preparation starving placement; (b) the commit-time reflood diverging
|
- Fix: retain pending identities without manufacturing another receipt;
|
||||||
from the deleted staged-clone world in live conditions
|
post-commit receipt invariants are terminal, not resumable.
|
||||||
(`PhysicsEngine.CommitLandblockReplacement` +
|
- Evidence: focused recenter tests; complete Release suite 10,815 passed /
|
||||||
`RefloodPrefixOwnersAfterReplacement`; the oracle test
|
4 skipped; lifecycle report
|
||||||
`CommitTimeRefloodMatchesPrecomputedReflood` covers only 3 landblock
|
`logs/connected-world-gate-20260802-203751/report.json`; nine-stop report
|
||||||
archetypes and may under-cover); (c) siblings of the staged-owner
|
`logs/connected-r6-soak-20260802-204309.report.json` with `Passed=true`,
|
||||||
admission gap the implementer already fixed once (ShadowObjectRegistry
|
nine checkpoints, zero failures, zero wait cues, zero pending
|
||||||
phase 2); (d) ordering between the reflood and admission
|
retirements, and no recurrence of the 243x exception.
|
||||||
commit/RetryDeferred for operations parked on the republished prefix.
|
|
||||||
Note: under C3c rules entities WAIT for collision before placing — so
|
|
||||||
"spawned mid-air" means placement completed against wrong/incomplete
|
|
||||||
collision, not merely late.
|
|
||||||
|
|
||||||
**P3 — the soak's 4 remaining failures.**
|
2. `670f307c` — **remote placement and targeting share one world frame.**
|
||||||
`connected-r6-soak-20260802-194423.report.json`:
|
- Root cause: CreateObject positions are landblock-local, but Runtime
|
||||||
`pendingLandblockRetirements`=131/122 at sawato-baseline/plateau,
|
submitted remote first-entry placement with zero world offset; the local
|
||||||
`waitCueShown=true` at holtburg, cpuUs p99 over-limit at the six
|
physics host also published a landblock-local origin to targeting.
|
||||||
non-Caul stops. The WIP's "exposed pre-existing" classification
|
- Fix: Runtime owns the accepted local-player world center, converts remote
|
||||||
(reasoning in `implementer-progress.md ## Collision-clone`) was made
|
Create placement before SetPosition, and publishes the local body's world
|
||||||
BEFORE P1 was discovered — re-judge it against the exception loop.
|
position.
|
||||||
|
- User gate: monsters and statics place correctly; monsters chase and hit
|
||||||
|
the visible player instead of attacking another coordinate.
|
||||||
|
|
||||||
**P4 — door/use approach regression (in COMMITTED C3c code, `529e0e9d`).**
|
3. `1fc529cd` — **distant Use/approach restored.**
|
||||||
Quote: "I dont approach doors when I use them." Using a door no longer
|
- Root cause: Runtime object lookup is intentionally non-constructing, so a
|
||||||
walks the character to it first. Prime suspect:
|
static door/corpse could enter MoveTo without a physics host and its
|
||||||
`src/AcDream.App/Input/PlayerModeController.cs`'s conditional MoveTo
|
target snapshot expired at the origin. Startup placement could also
|
||||||
bind (`if (controller.MoveTo is { } moveTo)`) — the legacy path CREATED
|
leave an impossible pre-PartArray motion suffix ahead of later actions.
|
||||||
the MoveToManager at attach via factory; the flip only binds approach
|
- Fix: ensure the canonical minimal static host before routing MoveTo and
|
||||||
callbacks IF Runtime's publication chain already ran `MakeMoveToManager`
|
reconcile the startup suffix exactly at presentation attach.
|
||||||
(`RuntimeLocalPlayerPhysicsPublicationState`). Establish when (or
|
- User gate: near and distant object use works, including approach, turn,
|
||||||
whether) Runtime creates it relative to player-mode attach; the
|
and use after arrival.
|
||||||
interaction flow is `SelectionInteractionController` →
|
|
||||||
approach-MoveTo → use (see `claude-memory/project_interaction_pipeline.md`
|
|
||||||
and register row AD-27).
|
|
||||||
|
|
||||||
**P5 — intermittent spell particle loss (#279, C3c-era).**
|
4. `f24532ad` — **spell, recall, projectile, and static VFX binding fixed.**
|
||||||
One-shot VFX/scripts arriving while their entity is in C3c's
|
- Root cause: C3c could create effect/projectile/static-animation sidecars
|
||||||
suppressed-until-receipt window are dropped instead of deferred; retail
|
before first SetPosition had bound the entity's mesh, pose, cell, and
|
||||||
queues scripts for not-yet-in-world objects (grep
|
visibility. One-shot F754/F755 packets were lost and projectiles could
|
||||||
`docs/research/named-retail/acclient_2013_pseudo_c.txt` for the
|
inherit a cell-less body.
|
||||||
PlayScript/pending-script handling around `HandleCreateObject`
|
- Fix: exact-incarnation presentation barrier and FIFO replay; retry
|
||||||
0x00454C80 / `set_hidden` 0x00514C60). Route the deferral through the
|
projectile/static binding on the committed visibility edge; synchronize
|
||||||
presentation-binding moment
|
effect cells on rebucket.
|
||||||
(`TryApplyInitialCreateCompletionPresentation` in
|
- User gate: buffs/protections, recall effects, arrows, combat spell
|
||||||
`src/AcDream.App/World/LiveEntityRuntime.cs` and the equivalent headless
|
projectiles, portals, and static animation all work.
|
||||||
sink).
|
|
||||||
|
|
||||||
**P6 — verify after P1–P3 land:** purple materialization haze re-firing
|
5. `175ad6b0` — **login materialization acknowledgement fixed.**
|
||||||
while standing still (#278a — believed the same root as the visibility
|
- Root cause: ACE creates the local player Hidden and releases that state on
|
||||||
edges), the monster pop-in re-check, slope-glide vs open #269.
|
LoginComplete. Sending LoginComplete from raw F746 receipt raced first
|
||||||
|
canonical placement and left the purple haze over the character.
|
||||||
|
- Fix: one completion callback from Runtime's local first-entry terminal
|
||||||
|
edge; content-less headless retains its only truthful accepted-Create
|
||||||
|
edge.
|
||||||
|
- User gate: ordinary login no longer leaves the purple haze; recall still
|
||||||
|
has the intended materialization presentation.
|
||||||
|
|
||||||
## Required process per fix
|
### Latest focused verification
|
||||||
|
|
||||||
1. Root cause with file:line evidence BEFORE writing the fix; for any
|
After the final fix, these passed:
|
||||||
AC-specific behavior, cite the named-retail decomp.
|
|
||||||
2. Tests that fail pre-fix and pass post-fix.
|
|
||||||
3. Any new retail deviation gets its register row
|
|
||||||
(`docs/architecture/retail-divergence-register.md`) in the SAME
|
|
||||||
commit; when the collision work lands for real, APPLY the prepared
|
|
||||||
`docs-drafts.md` entries (AD-6 successor note, AD-62, digest entries,
|
|
||||||
#280) rather than re-deriving them.
|
|
||||||
4. Gates before each commit: `dotnet build AcDream.slnx -c Release`;
|
|
||||||
`dotnet test AcDream.slnx -c Release --no-build --no-restore -m:1`
|
|
||||||
with `ACDREAM_PAK_PATH=C:\Users\erikn\Documents\Asheron's Call\acdream.pak`
|
|
||||||
(baseline: 10,812 passed / 0 failed / 4 skipped);
|
|
||||||
`tools/run-connected-world-lifecycle-gate.ps1` must PASS; then
|
|
||||||
`tools/run-connected-r6-soak.ps1` — the FINAL acceptance:
|
|
||||||
`report.json` `Passed=true`, zero failures, `waitCueShown=false` at
|
|
||||||
all nine stops, per-checkpoint cpuUs p99 within +10% of the
|
|
||||||
20260727-004942 baseline. READ `report.json`, never the markers log.
|
|
||||||
A failure whose only signature is `activeTeleportCount=1` at a stable
|
|
||||||
checkpoint is user interference — one clean re-run allowed; any other
|
|
||||||
failure is real: fix it, don't re-run past it.
|
|
||||||
5. COMMIT each completed fix as its own bisectable commit on
|
|
||||||
`codex/port-claude-agents` with a message explaining the why.
|
|
||||||
6. Manual verification launch (for the user): the PowerShell launch in
|
|
||||||
CLAUDE.md "Running the client against the live server", plus
|
|
||||||
`ACDREAM_RETAIL_UI=1`.
|
|
||||||
|
|
||||||
## Final deliverable
|
- 90 focused App effect/projectile/static-animation scheduler tests.
|
||||||
|
- Two focused Runtime login-completion tests.
|
||||||
|
- The exact live-entity cell-tracking regression.
|
||||||
|
- All 79 Headless tests.
|
||||||
|
- `dotnet build AcDream.slnx -c Release --no-restore` with zero errors
|
||||||
|
(existing warnings remain).
|
||||||
|
|
||||||
Per-problem disposition (root cause → fix → evidence), the commit SHAs,
|
The long complete suite and connected nine-stop soak were **not rerun after
|
||||||
full gate numbers including the soak report values, and an explicit list
|
the final four stabilization commits**. The P1 soak proves P1's binary, not
|
||||||
of anything left open.
|
the final campaign binary.
|
||||||
|
|
||||||
|
## What remains — execute in this order
|
||||||
|
|
||||||
|
### 1. Reconcile the six selected-fixture failures
|
||||||
|
|
||||||
|
A broad selected run after cleanup exposed:
|
||||||
|
|
||||||
|
- five failures in `LiveEntityRuntimeTests`, associated with the still-open
|
||||||
|
placement/cell cutover;
|
||||||
|
- one old `RuntimeLiveEntitySessionControllerTests` remote-first-entry fixture
|
||||||
|
that provides an empty collision source while the production contract now
|
||||||
|
requires truthful collision admission.
|
||||||
|
|
||||||
|
Re-run these two classes first and record the exact test names and assertions.
|
||||||
|
Classify each as either a real product failure or a stale fixture. If stale,
|
||||||
|
update the fixture to provide the same valid prepared collision neighborhood
|
||||||
|
as production; never weaken the product contract or merely change expected
|
||||||
|
values. If real, fix the owning production mechanism and add a smaller
|
||||||
|
regression test.
|
||||||
|
|
||||||
|
Suggested first commands:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$env:ACDREAM_PAK_PATH='C:\Users\erikn\Documents\Asheron''s Call\acdream.pak'
|
||||||
|
dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~LiveEntityRuntimeTests -m:1
|
||||||
|
dotnet test tests/AcDream.Runtime.Tests/AcDream.Runtime.Tests.csproj -c Release --no-restore --filter FullyQualifiedName~RuntimeLiveEntitySessionControllerTests -m:1
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Finish C4: remaining authoritative placement routes
|
||||||
|
|
||||||
|
The plan still marks routes 2–7 open:
|
||||||
|
|
||||||
|
- route 2: ForcePosition;
|
||||||
|
- route 3: portal placement through `RuntimeWorldTransitState` and
|
||||||
|
`RuntimePortalPlacementAuthority`;
|
||||||
|
- route 4: remote Create/Position, deleting the remaining
|
||||||
|
`RemoteTeleportController`/inline MoveOrTeleport duplicate;
|
||||||
|
- route 5: authoritative projectile correction;
|
||||||
|
- route 6: drops and split-recovery marking;
|
||||||
|
- route 7: pickup, parent-detach, and delete/recreate residue.
|
||||||
|
|
||||||
|
Inventory every current writer before editing. For each route, prove:
|
||||||
|
|
||||||
|
- one Runtime SetPosition transaction owns accepted frame, exact cell,
|
||||||
|
collision result, shadow/workset membership, and deferred-cell lifetime;
|
||||||
|
- App only projects the committed result;
|
||||||
|
- graphical and headless hosts use the same command and state path;
|
||||||
|
- stale sequences, delete/GUID reuse, missing cells, portal generations, and
|
||||||
|
replacement collision generations cannot commit old state;
|
||||||
|
- no route reconstructs from a stale spawn or uses the legacy outdoor demote/
|
||||||
|
terrain-Z lift.
|
||||||
|
|
||||||
|
Resolve #276 when the spawn settler's resolved `CellId` becomes authoritative.
|
||||||
|
Resolve #277 with a real service-window/celless lifecycle instead of relying
|
||||||
|
on ACE's current broadcast radius.
|
||||||
|
|
||||||
|
### 3. Fix #280: destination prefetch before portal reveal
|
||||||
|
|
||||||
|
Current behavior waits only a hard-coded radius-one (3x3) outdoor
|
||||||
|
neighborhood, while the visible configured world extends farther. The user
|
||||||
|
can see distant terrain continue building after portal exit.
|
||||||
|
|
||||||
|
Port the retail mechanism, not a larger magic number:
|
||||||
|
|
||||||
|
- `CellManager::PreFetchCells @ 0x00455820`;
|
||||||
|
- `LScape::PreFetchCells @ 0x00505660`;
|
||||||
|
- `CLandBlock::PreFetchCells` and `CLandBlockInfo::PreFetchCells`;
|
||||||
|
- `SmartBox::UseTime @ 0x00455410` while `blocking_for_cells`;
|
||||||
|
- the `TAS_TUNNEL_CONTINUE` resume/reveal order.
|
||||||
|
|
||||||
|
Use the quality/view-distance configured destination window. Hold one
|
||||||
|
generation-scoped reservation across terrain, buildings/statics, EnvCells,
|
||||||
|
render publication, composite textures, and collision. Keep portal UI and
|
||||||
|
wait cue responsive. Never reveal early because of a timeout, and do not wait
|
||||||
|
for an impossible terminal marker for all dynamic ACE objects.
|
||||||
|
|
||||||
|
Acceptance: repeated login, `/ls`, spell recall, and portals at every quality
|
||||||
|
setting reveal no constructing terrain, missing nearby statics/buildings,
|
||||||
|
unready interiors, missing composites, or absent nearby collision. Dynamic
|
||||||
|
monsters/items may still arrive later from ACE.
|
||||||
|
|
||||||
|
### 4. C5 closeout and live gates
|
||||||
|
|
||||||
|
After steps 1–3:
|
||||||
|
|
||||||
|
1. Delete every superseded placement writer and compatibility projection.
|
||||||
|
2. Run focused Runtime/Core/App tests for every route.
|
||||||
|
3. Run the complete Release solution suite with the installed pak.
|
||||||
|
4. Run the exact lifecycle/reconnect route.
|
||||||
|
5. Run the canonical nine-stop soak on the **final binary**. Read
|
||||||
|
`report.json`, not marker output. Required: `Passed=true`, zero failures,
|
||||||
|
every canonical checkpoint, `waitCueShown=false`, zero pending
|
||||||
|
publication/retirement/reveal debt, graceful exit, and no render-shadow
|
||||||
|
mismatch. Diagnose any real failure; do not rerun past it.
|
||||||
|
6. Perform two-client observation for remote creation, chase/attack, doors,
|
||||||
|
drops/pickups, portal departure/arrival, arrows, and spells.
|
||||||
|
7. Ask the user for the remaining #269/#278 slope-glide comparison at the
|
||||||
|
known impassable slope.
|
||||||
|
|
||||||
|
Only then retire AP-1, AD-1, AP-131, and the legacy half of AD-60 and close
|
||||||
|
the corresponding placement issues.
|
||||||
|
|
||||||
|
### 5. Finish the original physics-divergence campaign
|
||||||
|
|
||||||
|
After placement C5 is green:
|
||||||
|
|
||||||
|
- **AP-22:** make `ShadowShapeBuilder` the sole authority for authored Setup
|
||||||
|
collision shapes. Preserve cylinder order; use authored spheres when there
|
||||||
|
are no cylinders; cylinder-first for mixed data; truly shapeless means no
|
||||||
|
shadow. Remove invented `Setup.Radius` cylinders, `Radius * 2` heights, and
|
||||||
|
sphere-to-cylinder coercion across graphical, headless, static, and live
|
||||||
|
paths.
|
||||||
|
- **AD-10:** prove remote motion uses the full transition sweep, remove
|
||||||
|
terrain-normal preprojection, and let `CTransition::adjust_offset` project
|
||||||
|
against the actual retained contact plane. Preserve interpolation,
|
||||||
|
correction replacement, Hidden state, and network cadence.
|
||||||
|
- Run the final movement/collision matrix and update the divergence ledger,
|
||||||
|
architecture, roadmap, milestones, memory, `CLAUDE.md`, and `AGENTS.md`.
|
||||||
|
Resume vendor Slice 5 only after this campaign is genuinely closed.
|
||||||
|
|
||||||
|
## Required deliverable
|
||||||
|
|
||||||
|
For every remaining item report:
|
||||||
|
|
||||||
|
- observed failure and deterministic reproduction;
|
||||||
|
- retail/reference evidence with named functions and addresses;
|
||||||
|
- root cause in plain language plus file/line evidence;
|
||||||
|
- exact fix and why it preserves Runtime ownership;
|
||||||
|
- tests added or corrected;
|
||||||
|
- commit SHA;
|
||||||
|
- complete build/test/connected-gate numbers;
|
||||||
|
- user visual result where required;
|
||||||
|
- divergence/issue rows retired, narrowed, or left open.
|
||||||
|
|
||||||
|
Finish with an explicit list of anything still open. Do not describe the
|
||||||
|
campaign as complete while any C4 route, #280, final-binary soak, AP-22,
|
||||||
|
AD-10, or required user visual gate remains.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,14 @@
|
||||||
# Docs-commit drafts — collision publication-throughput fix (O1/O2/O3)
|
# Docs-commit drafts — collision publication-throughput fix (O1/O2/O3)
|
||||||
|
|
||||||
|
> **HISTORICAL DRAFT — DO NOT APPLY WHOLESALE (2026-08-03).** The O1/O2/O3
|
||||||
|
> implementation landed in `71604331` and the user-visible stabilization
|
||||||
|
> fixes continued through `175ad6b0`. This draft predates that work, assigns
|
||||||
|
> issue number #280 to the collision clone even though #280 now canonically
|
||||||
|
> tracks incomplete portal-destination prefetch, and names ledger edits that
|
||||||
|
> must be re-audited against the final production tree. It remains only as
|
||||||
|
> research evidence. Use `NEXT-AGENT-PROMPT.md`, the campaign plan, and the
|
||||||
|
> live divergence register for current work.
|
||||||
|
|
||||||
Drafted per contract; NOT applied to the repo. Apply in the docs commit after
|
Drafted per contract; NOT applied to the repo. Apply in the docs commit after
|
||||||
code review. Register judgment executed as pinned: AD-6 stays retired with a
|
code review. Register judgment executed as pinned: AD-6 stays retired with a
|
||||||
successor note; the residual timing/order compression gets a NEW row (AD-62).
|
successor note; the residual timing/order compression gets a NEW row (AD-62).
|
||||||
|
|
|
||||||
|
|
@ -4547,3 +4547,41 @@ _entities.AdvanceCreateAuthority in the executor, inside
|
||||||
ApplyWeenieDescriptionAction; registration advance still residence-gated).
|
ApplyWeenieDescriptionAction; registration advance still residence-gated).
|
||||||
Focused files 82/82; Runtime 1,003/1,003; App 4,039/3 skips of 4,042;
|
Focused files 82/82; Runtime 1,003/1,003; App 4,039/3 skips of 4,042;
|
||||||
git diff --check exit 0. No staging/commits.
|
git diff --check exit 0. No staging/commits.
|
||||||
|
|
||||||
|
## 2026-08-03 stabilization checkpoint and handoff
|
||||||
|
|
||||||
|
Five separately bisectable root-cause fixes followed the O1/O2/O3 checkpoint:
|
||||||
|
|
||||||
|
1. `01f4791e` — pending-only live projection buckets no longer manufacture a
|
||||||
|
second origin-recenter retirement receipt. Complete Release, lifecycle,
|
||||||
|
and canonical nine-stop soak passed on this binary; the soak had nine
|
||||||
|
checkpoints, zero failures, zero wait cues, and zero pending retirements.
|
||||||
|
2. `670f307c` — Runtime converts remote Create frames through the accepted
|
||||||
|
local-player world center and publishes the local physics body's world
|
||||||
|
position. The user accepted monster/static placement, chase, and attacks.
|
||||||
|
3. `1fc529cd` — distant Use materializes the canonical minimal static physics
|
||||||
|
host before MoveTo, and presentation attach reconciles the pre-PartArray
|
||||||
|
startup motion suffix. The user accepted near and distant object use.
|
||||||
|
4. `f24532ad` — exact-incarnation effect packets wait for canonical
|
||||||
|
presentation binding; projectile and static-animation sidecars retry on the
|
||||||
|
committed visibility edge; effect cells follow rebuckets. The user accepted
|
||||||
|
buffs, recalls, arrows, combat spell projectiles, portals, and statics.
|
||||||
|
5. `175ad6b0` — LoginComplete is emitted from the local first-placement
|
||||||
|
terminal edge instead of raw PlayerCreate receipt. The user accepted login
|
||||||
|
materialization haze behavior.
|
||||||
|
|
||||||
|
Post-fix focused evidence: 90 App effect/projectile/static-scheduler tests,
|
||||||
|
two Runtime login tests, the exact live-entity cell tracking test, all 79
|
||||||
|
Headless tests, and a Release solution build with zero errors passed. The
|
||||||
|
complete suite and connected nine-stop soak were not rerun after the final
|
||||||
|
four stabilization commits. A broader selected fixture run exposed five
|
||||||
|
still-open `LiveEntityRuntimeTests` failures associated with the placement
|
||||||
|
cutover and one old remote-first-entry fixture that supplies an empty
|
||||||
|
collision source. These are campaign work, not evidence to weaken the new
|
||||||
|
production contracts.
|
||||||
|
|
||||||
|
Open campaign finish: classify/fix those six fixtures; finish placement routes
|
||||||
|
2–7 and delete legacy writers; resolve #276/#277 and portal-prefetch #280; run
|
||||||
|
the final-binary complete suite/lifecycle/nine-stop/two-client gates; perform
|
||||||
|
the #269 slope-glide visual check; retire AP-1/AD-1/AP-131/AD-60 only when the
|
||||||
|
legacy paths are gone; then land AP-22 and AD-10 and close the ledger.
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,38 @@
|
||||||
# Collision System Port - Status and Plan
|
# Collision System Port - Status and Plan
|
||||||
|
|
||||||
|
## 2026-08-03 production cutover stabilization checkpoint
|
||||||
|
|
||||||
|
Production initial Create placement is cut over through the Runtime residence
|
||||||
|
and continuation-executor path. The O(changed) collision-publication
|
||||||
|
checkpoint is live, followed by five root-cause fixes:
|
||||||
|
|
||||||
|
- `01f4791e`: pending-only live projections no longer create/replay a second
|
||||||
|
origin-recenter retirement receipt;
|
||||||
|
- `670f307c`: remote Create placement, local-player hosting, targeting, chase,
|
||||||
|
and attack share the same world-coordinate frame;
|
||||||
|
- `1fc529cd`: distant Use materializes the canonical minimal static host before
|
||||||
|
MoveTo;
|
||||||
|
- `f24532ad`: effects, projectiles, and static animation bind after canonical
|
||||||
|
placement and follow the committed cell;
|
||||||
|
- `175ad6b0`: LoginComplete waits for the local first-placement terminal edge.
|
||||||
|
|
||||||
|
The user accepted those connected behaviors. The campaign remains open for
|
||||||
|
six fixture reconciliations, C4 placement routes 2–7, #276/#277, destination
|
||||||
|
prefetch #280, C5's final-binary suite/soak/two-client matrix, AP-22, and
|
||||||
|
AD-10. Canonical continuation prompt:
|
||||||
|
`docs/research/2026-08-02-collision-throughput-handoff/NEXT-AGENT-PROMPT.md`.
|
||||||
|
|
||||||
|
**Do not use the 2026-04-29 whole-world staging-root description below as a
|
||||||
|
production blueprint.** It is retained as historical context. O1/O2/O3 at
|
||||||
|
`71604331` replaced that clone/journal/rebase design with the per-landblock
|
||||||
|
O(changed) publication mechanism; `01f4791e` then repaired its recenter
|
||||||
|
receipt lifetime.
|
||||||
|
|
||||||
## 2026-08-01 initial Create residence checkpoint
|
## 2026-08-01 initial Create residence checkpoint
|
||||||
|
|
||||||
|
> Historical checkpoint; superseded by the 2026-08-03 production cutover
|
||||||
|
> status above.
|
||||||
|
|
||||||
The dormant Runtime SetPosition path is now complete through activation,
|
The dormant Runtime SetPosition path is now complete through activation,
|
||||||
graphical/no-window placement receipts, collision-prefix quiescence, exact
|
graphical/no-window placement receipts, collision-prefix quiescence, exact
|
||||||
authoritative route classification, pre-placement App staging, and initial
|
authoritative route classification, pre-placement App staging, and initial
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue