From 7be13938bce34c0721ef59780f62106a746aa7a2 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 14 May 2026 16:55:21 +0200 Subject: [PATCH] docs(M1): record all 4 demo targets met, list deferred polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M1's demo scenario is mechanically complete: 1. Walk through Holtburg — met via L.2a/d/g 2. Open the inn door — met via B.4b + B.4c 3. Click an NPC — met via B.4b chain + chat handlers (visually verified 2026-05-14 on Tirenia + Royal Guard) 4. Pick up an item — met via B.5 + 87ba5c9 feedback polish What's left to formally land: record ≈30s demo video, pin still + writeup, flip freeze list, point CLAUDE.md "currently working toward" at M2. Per the milestone-discipline rules, milestone landing is a user-driven event with an artifact; this commit only updates the factual demo-target status. Filed but explicitly deferred (don't block M1 recording): #61 (door swing cycle-boundary flash), #62 (PARTSDIAG null-guard), #63 (server-initiated MoveToObject auto-walk — candidate Phase B.6), #64 (local-player pickup animation). --- docs/plans/2026-05-12-milestones.md | 62 +++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 94238cb..f1c9e49 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -94,35 +94,65 @@ missing is the gameplay loop on top. --- -### M1 — "Walkable + clickable world" — 🟡 CURRENT (~4–6 weeks) +### M1 — "Walkable + clickable world" — 🟡 CURRENT, all 4 demo targets met (pending recorded video) **Demo scenario:** Walk through Holtburg without getting stuck on the inn 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 a–g)** — Movement & Collision Conformance. - L.2a slices 1+2+3 + L.2d slice 1+1.5 + L.2g slice 1 (code) shipped - 2026-05-12. L.2g slice 1 visual verification deferred to B.4b session - (the inbound SetState chain can't fire until the outbound Use sends). -- **B.4 / B.4b** — `Use` / `UseWithTarget` / `PickUp` interaction. - B.4 (2026-04-28) shipped the wire builders, `SelectionState`, - `WorldPicker`, the input-action enums, and the keybindings — but - *not* the `GameWindow.OnInputAction` handler that ties them - together. As of 2026-05-12, clicking on a door silently does nothing. - **B.4b** is the small follow-up slice (~30-50 LOC) that subscribes - `SelectDblLeft` and routes through pick → BuildUse → send. Once B.4b - lands, the same Holtburg-doorway visual test verifies both L.2g - slice 1 and B.4b in one pass. +**Demo-target status (as of 2026-05-14):** + +| # | Target | Status | Evidence | +|---|---|---|---| +| 1 | Walk through Holtburg without getting stuck | ✅ met | L.2a/d/g shipped 2026-05-12; Holtburg doorway verified | +| 2 | Open the inn door | ✅ met | B.4b (interaction) + B.4c (swing animation) shipped 2026-05-13 | +| 3 | Click an NPC and see selection feedback | ✅ met | B.4b chain + chat handlers; verified 2026-05-14 (Tirenia + Royal Guard double-click → NPC dialogue in chat panel) | +| 4 | Pick up an item from the ground | ✅ met (close-range path) | B.5 + post-B.5 PickupEvent fix shipped 2026-05-14; visual-verified at Holtburg; pickup chat/toast feedback added in `87ba5c9` | + +**What's left to formally land M1:** +- Record ~30s demo video of the four-target scenario end-to-end. +- Drop at `docs/milestones/M1-walkable-clickable.mp4`. +- Pin still + one-paragraph writeup at the top of this doc. +- Flip the freeze list. Update `CLAUDE.md`'s "currently working toward" + line to M2. + +**Known polish items deferred (do not block M1 recording, addressable post-M1):** +- **#61** — AnimationSequencer link→cycle frame-0 flash on door swing. LOW. +- **#62** — PARTSDIAG null-guard. Latent, not reachable today. +- **#63** — Server-initiated `MoveToObject` auto-walk not honored (blocks + double-click pickup + out-of-range F-pickup; close-range still works). + MEDIUM. Candidate Phase B.6 — holtburger has the reference port. +- **#64** — Local-player pickup animation does not render (retail + observers see it correctly). LOW. + +**Phases that shipped to clear M1:** +- **L.2 (a + d + g sub-lanes)** — Movement & Collision Conformance. + L.2a slices 1+2+3 + L.2d slice 1+1.5 + L.2g slice 1+1b+1c shipped + 2026-05-12 / 2026-05-13. Visual-verified via the B.4b doorway test. +- **B.4b** — outbound Use + `WorldPicker` + double-click detection + + `CollisionExemption` widening + `ServerGuid→entity.Id` translation + (the ID-mismatch trap surfaced during L.2g slice 1c). Shipped + 2026-05-13. +- **B.4c** — door swing animation: spawn-time `AnimationSequencer` + registration + stance-value fix (`NonCombat = 0x3D` not `0x01`, which + had been causing doors to render halfway underground). Shipped + 2026-05-13. +- **B.5** — `BuildPickUp` (PutItemInContainer 0x0019) + `SendPickUp` + helper + F-key wiring + new `PickupEvent (0xF74A)` despawn handler. + Shipped 2026-05-14. +- **B.5 polish** (`87ba5c9`) — pickup feedback chat line + toast so the + M1 demo's "pick up" target has visible payoff. **Freeze on landing:** - L.2 zone (collision, cell ownership, transition parity, wire authority) - B.4 zone (interaction outbound) +- B.5 zone (pickup outbound + inbound despawn) **What "M1 lands" looks like:** the existing Holtburg traversal works as a retail player would expect. Doorways are walkable. Buildings have solid walls. Outdoor cell seams report the right cell. Clicking an NPC selects it -and sends a usable selection state to the server. The Use action opens doors. +and produces NPC chat. The Use action opens doors. F picks up items at +close range and the player sees "You pick up the X." in chat. ---