diff --git a/docs/plans/2026-08-02-placement-cutover.md b/docs/plans/2026-08-02-placement-cutover.md index 6ececdbe..12da3be9 100644 --- a/docs/plans/2026-08-02-placement-cutover.md +++ b/docs/plans/2026-08-02-placement-cutover.md @@ -47,12 +47,33 @@ same commit) → docs/handoff commit. No workarounds; no fused slices. ## Slices -- **C0 — Runtime bridge + live inputs (dormant).** Publish executor - adoption/completion through `Placements` as the receipt stream hosts - consume; derive `UsePositionFromServer`/`PlayerDistance` inside Runtime - from its own owners (no host-supplied gameplay inputs); wire the - exact-Setup mover chain end-to-end for the initial-Create placement; fix - the route-7 cancellation asymmetries. Still no production caller. +- **C0 — Runtime bridge + live inputs — COMPLETE at `67f63e85` + (2026-08-02, dual reviews PASS).** The executor publishes an + acknowledge-only `ExecutorCompleted` receipt through the one placement + stream (registered before dispatch; correlation reaped on + acknowledgement/discard/clear; `PendingCompletionReceiptCount` in + `IsConverged`); all three production sinks acknowledge-and-ignore the + kind via early returns proven behavior-preserving for every other kind + (sanctioned seam completion — provably inert, no production publisher); + `UsePositionFromServer` derives retail-exactly from + `RuntimeCharacterState.AutonomyLevel != 2` and `PlayerDistance` from the + live movement controller with null-safe fallback to the caller struct; + `TryPrepareAndSubmitAuthoredPlacement` chains the prepared-collision + Setup read through `PrepareMover` to submission with zero validation + changes; `TryCommitParent`/`CommitWithdrawal` gained the sibling + cancellation flow (the `LeaveWorld` omission in `TryCommitParent` is + retail-REQUIRED per `set_parent` 0x00515A90:283832-283833's single gated + `leave_world`). Not fully dormant by design: the two cancellation fixes + change live Runtime paths production already calls; everything else has + no production caller. + **C3 prerequisites recorded from C0's reviews:** (a) the completion + receipt/trace surface is internal-only — C3 must define the public host + consumption shape when it wires the hosts; (b) `PlayerDistance` is + resolved once per `Execute` entry, not per continuation — a multi-Position + FIFO classifies later entries against entry-time distance (documented + deferral; refine at C3/C4 if the connected gates show it matters); + (c) any future host exposure of `TrySetAutonomyLevel` must carry retail's + `SendAutonomyLevelEvent` (699550). - **C1 — atomic controller/body publication (prerequisite C).** One Runtime-owned transaction publishing the exact same canonical body to graphical and no-window controllers, prepared off-canonical, committed