Restructure docs/development-plan.md into a status-tracked, item-based living roadmap, replacing prose narrative that required full rewrites
Context
development-plan.md had grown into an 11-section prose narrative that mixed forward-looking planning with retrospective explanation, requiring in-place prose rewrites every time an item's status changed -- the user flagged this as an unsustainable pattern (arbitrary rewrites, adding/deleting task lists, risk of losing historical context) and asked for a permanent, scalable structure before any further edits, requiring researched precedent from mature open-source projects and engineering organizations rather than an invented scheme.
Options considered
Decision
Rewrote docs/development-plan.md as a permanent, item-based roadmap: every entry is a discrete, numbered item (RM-001 onward) that is never deleted or rewritten in place once written -- only a controlled status field (Planned / In Progress / Completed / Deferred / Superseded) changes, dated and appended, mirroring the MADR/KEP/PEP status-field pattern sized down to this project's actual scale. Completed items carry a mandatory cross-reference to the decisions.jsonl entry or technical-architecture.md section recording how they were resolved; the roadmap item states what was planned and its current state, the decision log remains the sole place why lives, matching the Rust RFC/tracking-issue separation. Items are grouped into four phases by subject area (orthogonal to status, so an item's phase never changes as its status does): Phase 1 Foundation & Core Engine Architecture (genre-agnostic engine work, including the new GameEvent decoupling and save-schema-versioning policy items from decision 0042), Phase 2 Reference Game: Suika-Style Merge Puzzler (genre-specific feature work, split out as its own phase rather than folded into Phase 1, directly mirroring technical-architecture.md §2.2's own genre-agnostic/genre-specific separation), Phase 3 CI/CD & Deployment Pipeline (glemy-website's build/deploy pipeline plus the open content-hashing and stable/edge-channel items), and Phase 4 Multi-Game Expansion Trigger (the not-yet-met engine-extraction condition, recorded so it's defined in advance rather than decided under pressure). All 42 existing decisions' worth of historical content was preserved and mapped into this structure, not discarded. Stale section-number cross-references (§4, §8, "Phase 8") in game.gleam, pe.gleam, and tools/browser_check.ts, which pointed into the old document's numbering scheme, were updated to the new RM-xxx item IDs.
Verification
gleam test and gleam test --target javascript both pass unchanged (164 Erlang / 187 JavaScript) -- this is a documentation-only change, confirmed by the test counts being identical to before. deno task check-warnings passes (49/49 matching baseline), confirming the doc-comment edits introduced no new warnings. A repo-wide grep for every remaining development-plan.md cross-reference confirmed no stale section-number pointer was left unresolved.
Consequences
development-plan.md no longer needs a rewrite when a single item's status changes -- future updates are a status-field edit plus a dated note, not prose surgery. The three-way separation (decisions.jsonl = why/history, technical-architecture.md = current-state policy, development-plan.md = what's planned/in-progress/resolved) is now explicit and cross-referenced from all three documents, closing the gap technical-architecture.md's own §2.2/§3.3/§3.4/§4.4 policies had already created (those items existed as prose in the architecture document with no corresponding tracked roadmap entry until this change).