docs(phys L.2g): design spec for dynamic PhysicsState toggling (doors)

L.2d slice 1.5 ship identified the Holtburg doorway blocker as a closed
Door entity (Setup 0x020019FF) whose PhysicsState.Ethereal bit flips
when the player Uses the door. The L.2d shape-fidelity work doesn't
cover this — the door's collision shape is correct; what's missing is
honoring the *runtime* state change.

L.2g is the new sub-phase that handles it. Scope is narrow:

  * Parse inbound GameMessageSetState (0xF74B).
  * Plumb the new PhysicsState value into ShadowObjectRegistry's
    cached per-entity state so the existing CollisionExemption.IsExempt
    already-in-place short-circuit sees up-to-date bits.
  * Verify the Holtburg inn-door scenario: walk in blocked, Use door,
    walk through, auto-close blocks again after 30s.
  * Confirm UpdateMotion (NonCombat, On/Off) drives non-creature
    entities (door swing animation).

Why a new L.2 sub-letter (and not B.4 or Door-special-case): the wire
mechanism (SetState flipping Ethereal) is also how ACE handles activated
traps, opened chests, spell projectiles becoming ethereal. Generic
infrastructure with doors as the verification scenario; lane is the
informal sixth "dynamic state."

Roadmap state:
  * L.2 plan-of-record adds the L.2g section after L.2f.
  * Milestones doc M1 phase list extended `a-f` -> `a-g`.
  * CLAUDE.md status pointer + "next phase candidates" list updated to
    name L.2g slice 1 implementation as the natural next step.

Risk: low. Wire-byte width has a hex-dump fallback path in slice 1
(holtburger says 12 bytes, ACE writes 16, capture settles it). ETHEREAL
plumbing already exists; we feed it new data. No resolver changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-12 21:00:36 +02:00
parent 9206d1d4e0
commit 2c10dd4d67
4 changed files with 353 additions and 14 deletions

View file

@ -101,9 +101,13 @@ doorway. Open the inn door. Click an NPC and see selection feedback. Pick
up an item from the ground.
**Phases to ship:**
- **L.2 (all sub-lanes af)** — Movement & Collision Conformance. Currently
active; L.2a slices 1+2+3 shipped 2026-05-12.
- **B.4**`Use` / `UseWithTarget` / `PickUp` outbound messages.
- **L.2 (all sub-lanes ag)** — Movement & Collision Conformance. Currently
active; L.2a slices 1+2+3 + L.2d slice 1+1.5 shipped 2026-05-12. L.2g
(dynamic PhysicsState toggling — doors) brainstormed + design-spec'd
2026-05-12 evening, implementation next.
- **B.4**`Use` / `UseWithTarget` / `PickUp` outbound messages
(shipped 2026-04-28; remains in M1 scope until L.2g completes the
inbound-state half of the Use round-trip).
**Freeze on landing:**
- L.2 zone (collision, cell ownership, transition parity, wire authority)