milestone: M1 landed; flip "currently working toward" to M2

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) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-16 17:29:21 +02:00
parent d640ed74e1
commit fb92122731
2 changed files with 65 additions and 31 deletions

View file

@ -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 section). Phase-level index. This is where you orient when you know
the milestone and need the next concrete sub-phase. the milestone and need the next concrete sub-phase.
**Currently working toward: M1 — Walkable + clickable world.** L.2 **M1 landed 2026-05-16** via Phase B.6 (`d640ed7`). L.2 collision +
collision + B.4 interaction. Demo target: walk through Holtburg without B.4 interaction + B.5 pickup + B.6 server-driven auto-walk all
getting stuck, open the inn door, click an NPC, pick up an item. shipped. The four demo targets work end-to-end: walk Holtburg, open
Estimated 46 weeks from 2026-05-12. 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).
~610 weeks from 2026-05-16.
**Work-order autonomy — the meta-rule.** You decide what to work on **Work-order autonomy — the meta-rule.** You decide what to work on
next, always. **The user does NOT pick between phases, milestones, or 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 explicitly post-M7. The freeze list per milestone lives in the
milestones doc. milestones doc.
3. **Each milestone hit gets a recorded demo video.** When M1 lands, 3. **Crossing a milestone is a textual event, not a video event.**
record ~30 seconds of the demo scenario, drop it at When a milestone's demo scenario is functionally complete, update
`docs/milestones/M1-walkable-clickable.mp4`, and pin a still + a `2026-05-12-milestones.md` with a one-paragraph writeup describing
one-paragraph writeup at the top of `2026-05-12-milestones.md`. The what works end-to-end, flip the freeze list, and update the
freeze list updates. The "currently working toward" line in this "currently working toward" line in this CLAUDE.md to the next
CLAUDE.md updates to M2. **Crossing a milestone is a real event with milestone. Do NOT ask the user to record a demo video — they find
an artifact** — that's the morale instrument. Phases ship; milestones it pointless. The milestones doc + the CLAUDE.md flip ARE the
land. milestone artifact. Phases ship; milestones land.
4. **State both altitudes at session start.** First action of any 4. **State both altitudes at session start.** First action of any
session: "Currently working toward M1 — Walkable + clickable world. session: "Currently working toward M1 — Walkable + clickable world.

View file

@ -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: This document sits **one altitude above** the roadmap. Each milestone is:
- **~610 weeks of focused work** (not a single phase, not a whole year). - **~610 weeks of focused work** (not a single phase, not a whole year).
- Defined by a **concrete playable scenario** that gets recorded as a demo - Defined by a **concrete playable scenario** — when the scenario works
video when the milestone hits. end-to-end, the milestone lands.
- A **scope-freeze event**: when a milestone lands, the phases it covers go - A **scope-freeze event**: when a milestone lands, the phases it covers go
off-limits until v1.0's final polish pass (M7). off-limits until v1.0's final polish pass (M7).
Crossing a milestone is a real event with an artifact. Phases ship; milestones Crossing a milestone is a textual event — milestones doc gets the writeup,
**land**. 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. shipped phases keep silently consuming attention.
3. **The milestone log is the morale instrument.** When a milestone hits: 3. **The milestone log is the morale instrument.** When a milestone hits:
- Record a ~30-second demo video showing the scenario end-to-end. - Pin a one-paragraph writeup at the top of this doc describing what
- Drop it in `docs/milestones/MN-<slug>.mp4` (create the directory on works end-to-end (any caveats or known regressions are explicit).
first hit).
- Pin a still frame + one-paragraph writeup at the top of this doc.
- Update the freeze list. Update CLAUDE.md's "currently working toward" - Update the freeze list. Update CLAUDE.md's "currently working toward"
line to the next milestone. 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. 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 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 **Demo scenario:** Walk through Holtburg without getting stuck on the inn
doorway. Open the inn door. Click an NPC and see selection feedback. Pick 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) | | 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` | | 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:** **Landing artifacts done 2026-05-16:**
- Record ~30s demo video of the four-target scenario end-to-end. - ✅ Landing writeup pinned at top of this milestone block (above the table).
- Drop at `docs/milestones/M1-walkable-clickable.mp4`. - ✅ Freeze list applied (see below).
- Pin still + one-paragraph writeup at the top of this doc. - ✅ `CLAUDE.md`'s "currently working toward" advanced to M2.
- 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):** **Known polish items deferred to post-M7 (do not gate M1 landing):**
- **#61** — AnimationSequencer link→cycle frame-0 flash on door swing. LOW. - **#61** — AnimationSequencer link→cycle frame-0 flash on door swing. LOW.
- **#62** — PARTSDIAG null-guard. Latent, not reachable today. - **#62** — PARTSDIAG null-guard. Latent, not reachable today.
- **#63** — Server-initiated `MoveToObject` auto-walk not honored (blocks - **#63** — ✅ CLOSED by Phase B.6 (`d640ed7`). Server-initiated
double-click pickup + out-of-range F-pickup; close-range still works). `MoveToObject` is now honored end-to-end; ACE's `MoveToChain`
MEDIUM. Candidate Phase B.6 — holtburger has the reference port. callback fires server-side on arrival.
- **#64** — Local-player pickup animation does not render (retail - **#64** — Local-player pickup animation does not render (retail
observers see it correctly). LOW. 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:** **Phases that shipped to clear M1:**
- **L.2 (a + d + g sub-lanes)** — Movement & Collision Conformance. - **L.2 (a + d + g sub-lanes)** — Movement & Collision Conformance.