docs(physics): decompose C3 after the flip halted with findings
The first C3 implementation pass landed C3-1 (fe02c4f5) and correctly
stopped on two structural gaps no planning document captured: the local
player's first-entry circularity (the residence opens its placement at
Create, submission needs a body, and only the zero-caller publication
chain can attach one — resolvable by the campaign handoff's own route-1
order, but no driveable state machine exists) and the absence of any
remote-creature body construction at Create time (retail builds physics
in ACCObjectMaint::CreateObject; ours arrive with first motion). The
plan now records the C3a (first-entry conductor, dormant) / C3b
(retail-anchored remote body construction at Create, dormant — its
contract must first resolve set_description's three FPU-elided
friction/translucency gates from the PDB-paired binary) / C3c (the
actual host flips + connected gates) decomposition.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
fe02c4f56d
commit
277ef5d032
1 changed files with 33 additions and 7 deletions
|
|
@ -114,13 +114,39 @@ same commit) → docs/handoff commit. No workarounds; no fused slices.
|
|||
comment-enforced; `IsCurrent(Operation)` remains available and a new
|
||||
reentrancy-spanning call site would silently inherit the tautology —
|
||||
its doc comment warns.
|
||||
- **C3 — spawn-frequency cutover: routes 1 + 8.** Flip graphical AND
|
||||
headless initial Create/login registration to
|
||||
`RegisterEntityWithInitialResidence` + executor + placement receipts
|
||||
together; `MaterializeProjection`/`BuildControllerAndCamera`/
|
||||
`SynchronizeLocalPlayer` become projection + acknowledgement only;
|
||||
presentation-only rebucketing (`RebucketLiveEntity` loses `CommitRebucket`).
|
||||
Gates add the exact lifecycle/reconnect connected route.
|
||||
- **C3 — spawn-frequency cutover: routes 1 + 8 — DECOMPOSED 2026-08-02
|
||||
after the first implementation pass stopped with findings.** C3-1 (the
|
||||
public executor-completion surface via
|
||||
`RuntimePlacementProjectionChannel.TryGetInitialCreateCompletion`)
|
||||
landed separately. Two structural gaps halted the flip, both real and
|
||||
neither in the planning docs:
|
||||
**(B)** the local player's residence lease opens its SetPosition
|
||||
operation at Create time, but `SubmitPreparedPlacementCore` requires a
|
||||
pre-existing canonical body that only the zero-caller publication chain
|
||||
can attach — first-entry needs an explicit resumable sequence
|
||||
(begin-placement → publication Prepare/Commit attaches the body →
|
||||
authored-mover submit → Place receipt → Execute), which matches the
|
||||
campaign handoff's route-1 required order but exists nowhere as a
|
||||
driveable state machine;
|
||||
**(C)** ordinary remote-creature Creates classify to `SetPosition` but
|
||||
have NO production body-construction path at Create time (bodies arrive
|
||||
with first motion today; retail constructs physics at CreateObject via
|
||||
`ACCObjectMaint::CreateObject`/`set_description`, which our retail
|
||||
notes fully document — the defaults come from the wire PhysicsDesc,
|
||||
not invention).
|
||||
Sub-slices, each with the standing contract/dual-review/gate
|
||||
discipline:
|
||||
- **C3a — Runtime first-entry sequencing (dormant):** the resumable
|
||||
local-player entry transaction binding residence → publication
|
||||
body-attach → mover submit → receipt → Execute, test-driven.
|
||||
- **C3b — remote body construction at Create (dormant):**
|
||||
retail-anchored body construction from the wire PhysicsSpawnData per
|
||||
`set_description` order for residence-route remote/creature Creates.
|
||||
- **C3c — the host flips (production):** both hosts onto the complete
|
||||
machinery; seal the Controller setter; presentation-only
|
||||
rebucketing; the connected lifecycle/reconnect + nine-stop gates
|
||||
(harnesses: `tools/run-connected-world-lifecycle-gate.ps1`,
|
||||
`tools/run-connected-r6-soak.ps1`).
|
||||
- **C4 — remaining routes: 2 (ForcePosition), 3 (portal, with the
|
||||
`RuntimeWorldTransitState` → `RuntimePortalPlacementAuthority` adapter),
|
||||
4 (remote Create/Position; delete `RemoteTeleportController`/`Placement`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue