From fb9212273158f27fe27a0522572dbf72c1447e60 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 16 May 2026 17:29:21 +0200 Subject: [PATCH] milestone: M1 landed; flip "currently working toward" to M2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M1 "Walkable + clickable world" landed 2026-05-16 with Phase B.6 (d640ed7). All four demo targets work end-to-end retail-faithfully: walk Holtburg, open inn door, click NPC, pick up item. Freeze list applied: L.2 (collision), B.4 (interaction outbound), B.5 (pickup) — these phases are off-limits until M7 polish unless something is actively broken. CLAUDE.md "currently working toward" advanced to M2 — "Kill a drudge." Phases to ship: F.2 (Inventory panel), F.3 (Combat math + damage), F.5a (dev panels Attributes/Skills/Equipped/Inventory), L.1c (combat animation wiring), L.1b (command router prereq). Also removes the "record a demo video" requirement from milestone discipline (CLAUDE.md rule #3 + milestones doc operating rule #3) — user finds video recording pointless. Milestones are now textual events: writeup + freeze flip + CLAUDE.md "currently working toward" update. Saved as feedback memory. Co-Authored-By: Claude Opus 4.7 (1M context) --- CLAUDE.md | 35 +++++++++++------ docs/plans/2026-05-12-milestones.md | 61 ++++++++++++++++++++--------- 2 files changed, 65 insertions(+), 31 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index bfccc70..2210334 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -623,10 +623,21 @@ acdream operates at **two altitudes** above the daily commit: section). Phase-level index. This is where you orient when you know the milestone and need the next concrete sub-phase. -**Currently working toward: M1 — Walkable + clickable world.** L.2 -collision + B.4 interaction. Demo target: walk through Holtburg without -getting stuck, open the inn door, click an NPC, pick up an item. -Estimated 4–6 weeks from 2026-05-12. +**M1 landed 2026-05-16** via Phase B.6 (`d640ed7`). L.2 collision + +B.4 interaction + B.5 pickup + B.6 server-driven auto-walk all +shipped. The four demo targets work end-to-end: walk Holtburg, open +inn door, click NPC, pick up item. Freeze list active — M1's phases +are off-limits until M7 polish. Writeup at top of M1 block in +`docs/plans/2026-05-12-milestones.md`. + +**Currently working toward: M2 — "Kill a drudge."** Equip a sword, +walk to a drudge, swing, see damage in chat, watch the swing +animation, drudge dies and drops loot, pick up the loot, open +inventory and see it. Phases to ship: F.2 (Inventory panel), F.3 +(Combat math + damage flow), F.5a (visible-at-login dev panels — +Attributes / Skills / Equipped / Inventory list, minimal ImGui), +L.1c (combat animation wiring), L.1b (command router prereq). +~6–10 weeks from 2026-05-16. **Work-order autonomy — the meta-rule.** You decide what to work on next, always. **The user does NOT pick between phases, milestones, or @@ -660,14 +671,14 @@ four below actually work. explicitly post-M7. The freeze list per milestone lives in the milestones doc. -3. **Each milestone hit gets a recorded demo video.** When M1 lands, - record ~30 seconds of the demo scenario, drop it at - `docs/milestones/M1-walkable-clickable.mp4`, and pin a still + a - one-paragraph writeup at the top of `2026-05-12-milestones.md`. The - freeze list updates. The "currently working toward" line in this - CLAUDE.md updates to M2. **Crossing a milestone is a real event with - an artifact** — that's the morale instrument. Phases ship; milestones - land. +3. **Crossing a milestone is a textual event, not a video event.** + When a milestone's demo scenario is functionally complete, update + `2026-05-12-milestones.md` with a one-paragraph writeup describing + what works end-to-end, flip the freeze list, and update the + "currently working toward" line in this CLAUDE.md to the next + milestone. Do NOT ask the user to record a demo video — they find + it pointless. The milestones doc + the CLAUDE.md flip ARE the + milestone artifact. Phases ship; milestones land. 4. **State both altitudes at session start.** First action of any session: "Currently working toward M1 — Walkable + clickable world. diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index 78a8c67..a6ffc96 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -17,13 +17,14 @@ feeling because no single phase ship feels like a real milestone. This document sits **one altitude above** the roadmap. Each milestone is: - **~6–10 weeks of focused work** (not a single phase, not a whole year). -- Defined by a **concrete playable scenario** that gets recorded as a demo - video when the milestone hits. +- Defined by a **concrete playable scenario** — when the scenario works + end-to-end, the milestone lands. - A **scope-freeze event**: when a milestone lands, the phases it covers go off-limits until v1.0's final polish pass (M7). -Crossing a milestone is a real event with an artifact. Phases ship; milestones -**land**. +Crossing a milestone is a textual event — milestones doc gets the writeup, +the freeze list flips, CLAUDE.md's "currently working toward" line advances. +Phases ship; milestones **land**. --- @@ -42,12 +43,12 @@ Crossing a milestone is a real event with an artifact. Phases ship; milestones shipped phases keep silently consuming attention. 3. **The milestone log is the morale instrument.** When a milestone hits: - - Record a ~30-second demo video showing the scenario end-to-end. - - Drop it in `docs/milestones/MN-.mp4` (create the directory on - first hit). - - Pin a still frame + one-paragraph writeup at the top of this doc. + - Pin a one-paragraph writeup at the top of this doc describing what + works end-to-end (any caveats or known regressions are explicit). - Update the freeze list. Update CLAUDE.md's "currently working toward" line to the next milestone. + - NO demo videos. User explicitly removed that requirement 2026-05-16 + ("pointless of recording videos, for what purpose?"). 4. **State both altitudes at session start.** "Currently working toward M1. Current phase: L.2 collision. Next concrete step: L.2d slice 1 spec." This @@ -94,7 +95,28 @@ missing is the gameplay loop on top. --- -### M1 — "Walkable + clickable world" — 🟡 CURRENT, all 4 demo targets met (pending recorded video) +### M1 — "Walkable + clickable world" — ✅ LANDED 2026-05-16 + +**Landing writeup (2026-05-16, after Phase B.6 ship `d640ed7`):** +All four M1 demo targets work end-to-end. You can log into `+Acdream` +at Holtburg, walk freely without getting stuck (L.2 collision is +retail-faithful through the doorway). Click any inn door at any +range, press R, the character runs (or walks if close) toward it +with the correct animation cycle including the leg-shuffle turn-first +phase, opens the door via ACE's server-side `MoveToChain` callback. +Same for clicking an NPC — runs over, body rotates to face, dialogue +fires from ACE without any client-side retry. Pickup items at any +range with F or R; spell components, food, money, weapons all work; +signs and other `BF_STUCK` scenery correctly block at the gate. +AP cadence matches retail (0 Hz idle, ~1 Hz smooth motion, per-event +on cell/plane changes). Run/walk threshold matches retail observation +(1m of distance left to walk). The earlier ladder of workarounds — +client-side retry, per-frame chatty AP, MoveToState suppression +grace period — all deleted via the Phase B.6 architectural refactor +(`d640ed7`). M1's demo path is now bit-for-bit retail-faithful end +to end. + + **Demo scenario:** Walk through Holtburg without getting stuck on the inn doorway. Open the inn door. Click an NPC and see selection feedback. Pick @@ -109,21 +131,22 @@ up an item from the ground. | 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 (0xF74A)` fix shipped 2026-05-14; visual-verified at Holtburg; creature-pickup guard added in `a01ebd5` | -**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. +**Landing artifacts done 2026-05-16:** +- ✅ Landing writeup pinned at top of this milestone block (above the table). +- ✅ Freeze list applied (see below). +- ✅ `CLAUDE.md`'s "currently working toward" advanced to M2. -**Known polish items deferred (do not block M1 recording, addressable post-M1):** +**Known polish items deferred to post-M7 (do not gate M1 landing):** - **#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. +- **#63** — ✅ CLOSED by Phase B.6 (`d640ed7`). Server-initiated + `MoveToObject` is now honored end-to-end; ACE's `MoveToChain` + callback fires server-side on arrival. - **#64** — Local-player pickup animation does not render (retail observers see it correctly). LOW. +- **#69, #74, #75** — all closed by Phase B.6 (`d640ed7`). Turn-first + animation, retail-narrow AP cadence, body-direct auto-walk + architecture. **Phases that shipped to clear M1:** - **L.2 (a + d + g sub-lanes)** — Movement & Collision Conformance.