diff --git a/docs/superpowers/plans/2026-06-21-145-cell-relative-physics-frame.md b/docs/superpowers/plans/2026-06-21-145-cell-relative-physics-frame.md index 665bfb0c..2f9dec6e 100644 --- a/docs/superpowers/plans/2026-06-21-145-cell-relative-physics-frame.md +++ b/docs/superpowers/plans/2026-06-21-145-cell-relative-physics-frame.md @@ -192,7 +192,9 @@ Co-Authored-By: Claude Opus 4.8 (1M context) " --- -## Task 2: `PhysicsBody` carries `Position`; `WorldPosition` accessor; canonicalize on placement (behavior unchanged) +> **Execution note (2026-06-21):** Slice 2 split into **2a** (Core: `PhysicsBody.CellPosition` + `SnapToCell` + setter delta-sync, SHIPPED `afe495b`+`7928b44`) and **2b** (App: seed `SnapToCell` at the placement sites). **2b folds into Task 3** — the seed is only verifiable once membership consumes it, so they ship together under the runaway test. The confirmed mechanism is wire-seed + mirrored deltas (no `_liveCenter` in Core); the `WorldPosition`/`IWorldFrame` bridge described below was superseded by the setter-delta-sync design (no separate bridge type needed). + +## Task 2: `PhysicsBody` carries `Position`; canonicalize on placement (behavior unchanged) **Goal:** Make the body's source of truth a cell-relative `Position`, with a computed `WorldPosition` so render + wire keep working unchanged. Run `AdjustToOutside` wherever a placement/teleport sets position, so the (cell, local) pair is always canonical. No membership/sweep behavior changes yet.