# 工程路线图(批次执行制:里程碑 + 批次序列 + loop 规范)
> 一句话:项目级进度视图——走到哪了、接下来按什么顺序走、每个批怎么跑。待办与待裁事项以 [待办清单](待办清单.md) 为唯一登记处(条目级);批次过程与结论查 git 提交信息与 `reports/`(2026-10-18 用户裁:根目录会话状态文件已废除,本节顶部「当前位」三行即其替代)。
## 当前位(只回答「现在该做什么」;三行内随批次换代,禁止在此扩写成状态快照)
- **阶段**:M3——Alpha 版本的完整实现(2026-10-09 立规:未明令宣布完成前停留 M3,迭代只排 M3 需求,M4 不排期;根目录 stage.txt 为旧阶段开关仅存档)。
- **迭代位**:迭代 1–49 全部已完成——迭代 49(效果端口与掷格分件+模态句柄分域+营地五界面真窗口化三卡)2026-11-02 合回(合并提交 549683a5,独立验收审计通过〔缺漏 0、例外 1 在案〕),批后收尾闭合(2026-11-02):反哺点九条处置闭合(architecture v1.31 轴戊两件与功能层四行换代已建件现状〔EffectPort 六 Callable 路由/RewardRoller 掷格面迁出、B4 公开面 weighted_pick 退役、roll_board 装配序五步、五件类变量实数在案〕+ui_registry 行三域句柄分域换代〔run/menu 两子容器新建、ModalFlow 升格注册面直驻、寻址 `modals.run.*`/`modals.menu.*` 换代〕/术语表 v1.26 立「效果端口件」「掷格件」两条〔用户裁〕/camp.md v2.6 叠层与开合补窗壳形态已实装注记/08-Alpha v1.25 三·界面营地行补窗壳形态在役注记/体验验证清单 ㊽ 登记目检两项/static_scan.sh S8 头注计数句订正 10→14)、产出物退役六件(三需求卡片+反哺点+实现报告+验收审计——吸收即死+证据只留最新)、待办清单三卡条目整条删除(状态机出口)。迭代 48 收尾记录见 git 提交 aa396eb9,迭代 47 见 bd54d1f4。
- **下一步**:迭代 50 编排待发令(`/iter-plan`)——候选=断言补齐批卡(V1–V16 四域断言补齐,已写卡 2026-11-02)。待编池:冒险前资源配比预设(冻结备选)、迭代 30 原卡②③(2026-10-17 已剔出迭代 30 规划、退回待设计,待美术/设计定稿后重新立卡)。
## 里程碑时间线
| 时间 | 里程碑 |
|---|---|
| 2026-09-07 ~ 09-14 | Systems Design 阶段:玩法系统 GDD 全树收口;概念原型 v3 终验 PROCEED(09-12,垂直切片承接);GDD 体系重构(09-14,旧树封存) |
| 2026-09-15 ~ 09-16 | 切片数值语言定型:格面资源批、加法核数值语言拍板、护甲等级掷点批落地(smoke 233)、AP6+AC 验收判读口径 v1.0、待办清单建账改版 |
| 2026-09-17 ~ 09-19 | 切片机制完备:敌人技能池批落地(smoke 263)、关卡节点地图 v1.0 定稿+分支图批、加法核 80 遍试玩基线、无伤通关根因批(AP 压速)、验收读数重测批、掷点流种子偏置修复 A+B、插旗不可逆批、worktree 铁律立规 |
| 2026-09-20 ~ 09-21 | **一局完整冒险闭合**:冒险结构实现批(三关正式序列,smoke 482)、GP+商店房批(smoke 437)、存档序列化批(smoke 518)、元进度实现批(跨局循环闭合,smoke 549)、第三关内容批、八型批 |
| 2026-09-22 | Package B 七轮数值批+成长对齿已入库(用户拍板接受 B 曲线);美术圣经 §6–9 全章成文(v2.0);balance-verifier 数值验证工具批;美术文档过期账清偿批 |
| 2026-09-23 | 换算率标定批(6/9/1+护甲断链修复);停点前移批实施(关卡开局即出图+三区化+LevelStripView 退役);UI 复用候选批 |
| 2026-09-24 | **垂直切片转正(prototypes/ → game/)**;棋盘 Node2D 迁移 Phase A(BoardView 五层叠序);伤害管线单据化(DamageController 唯一管线);棋盘立体中档定稿冻结;状态图标接入 |
| 2026-09-25 | 棋盘小人贴图系列五批(1.5× 档+脚锚自底边+椭圆影);AI 生图退出角色资产管线(定位=上游草稿引擎);生图直出像素网格调研双报告 |
| 2026-09-26 | **战斗舞台 Node2D 迁移 Phase B(循环 1 收口,MC 逐位对拍零漂移)**;高墙瓦片 v9.3 定稿+换肤批(格面瓦片/敌像槽/接触带微光接线);封印紫批;UX 文档欠账处置(level-clear 建档);GP 归属拍板对齐;目录三层收敛大重构(design/artwork/game+熵增闸前身) |
| 2026-09-27 | 熵增闸已入库(repo_structure_audit 四查);单元测试与契约层补建登记 P0;UX 文档面三 spec 齐(battle 欠账处置 / level-clear / level-map 三拍板收口);关卡节点图生成 v0.1→v0.4 立项落文+统一流评估→用户裁丙→**统一随机流批落地(七流并一+全事件日志,329c7a2,状态记录 210)**;**roadmap 重整为批次执行制(本批,状态记录 208)** |
| 2026-09-28 | **M-1 切片表现收口完成(迭代 1+2 已入库,初步验收通过)**:样张 v2 机检 16/16 四冻结(art-bible v2.13)/框材组 8 件换皮/演出密度终稿/棋盘数字终稿/关卡画面三拍板实装/单元九套件/瓦片换色两套;同日**关卡画面独立化立项 M-2 高优先级**(用户裁决独立屏为最终形态,本批) |
| 2026-09-28 | **M-2 关卡画面独立化完成(迭代 3+4 已入库,出口闸目检通过)**:独立屏 LevelMapScreen+独立性断言(状态记录 224)/关卡画面样张 v1 机检 11/11 冻结+节点图标组接线+终稿落码+换层挂点(art-bible v2.14,状态记录 225);出口检查单 `design/qa/m2-exit-gate-checklist-2026-09-28.md` 用户八项目检通过(状态记录 227) |
| 2026-09-29 | **迭代重排(用户裁决「内容逻辑闭环先于验收」)**:M-3 更名「数值标定与 Alpha 创建」——战斗演出完善前移迭代 6、魔法道具+元进度标定编入迭代 7、Alpha 验收后移迭代 8;M-4 转 Alpha 后深化与内容扩展(本批,状态记录 242) |
> **里程碑语义(2026-10-09 用户立规,现行口径)**:现行里程碑 = **M3「Alpha 版本的完整实现」**;M4 = Beta 版本的完整实现。用户未明令宣布 M3 完成前,项目停留在 M3 阶段——迭代规划只编排 M3(Alpha 完整实现)相关需求,M4 内容一律不排期、不进迭代,M4 的门 = 用户明令 M3 完成。2026-10-03「M-3 关闭、Alpha 到手」为验收史记录保留(旧口径 = Alpha 验收到手);上表旧编号 M-1~M-4 保留作历史序列(M-3 旧名「数值标定与 Alpha 创建」,M-4 旧义「Alpha 后深化与内容扩展」),语义以本注为准。
## 迭代总表
一行一个迭代,回答一个问题:这个迭代编入了哪些卡、做到哪一步。各列格式与判据见 doc-conventions §12.2,由流水线闸(`tools/pipeline_gate.py`)机检。
| 迭代代号 | 状态 | 需求卡片 | 编入时间 | 预计周期 | 实现报告 |
|---|---|---|---|---|---|
| 迭代 1 | 已完成(2026-09-28) | — | — | — | 已退役(git 历史可考) |
| 迭代 2 | 已完成(2026-09-28) | — | — | — | 已退役(git 历史可考) |
| 迭代 3 | 已完成(2026-09-28) | — | — | — | 已退役(git 历史可考) |
| 迭代 4 | 已完成(2026-09-28) | — | — | — | 已退役(git 历史可考) |
| 迭代 5 | 已完成(2026-09-30) | — | — | — | 已退役(git 历史可考) |
| 迭代 6 | 已完成(2026-09-29) | — | — | — | 已退役(git 历史可考) |
| 迭代 7 | 已完成(2026-09-29) | — | — | — | 已退役(git 历史可考) |
| 迭代 8 | 已完成(2026-09-29) | — | — | — | 已退役(git 历史可考) |
| 迭代 9 | 已完成(2026-10-03) | 已退役(git 历史可考) | 2026-09-30 | — | 已退役(git 历史可考) |
| 迭代 10 | 已完成(2026-10-01) | — | 2026-09-30 | — | 已退役(git 历史可考) |
| 迭代 11 | 已完成(2026-10-03) | 已退役(git 历史可考) | 2026-10-03 | — | 已退役(git 历史可考) |
| 迭代 12 | 已完成(2026-10-04) | 已退役(git 历史可考) | 2026-10-03 | — | 已退役(git 历史可考) |
| 迭代 13 | 已完成(2026-10-04) | 已退役(git 历史可考) | — | — | 已退役(git 历史可考) |
| 迭代 14 | 已完成(2026-10-05) | 已退役(git 历史可考) | 2026-10-04 | — | 已退役(git 历史可考) |
| 迭代 15 | 已完成(2026-10-05) | 已退役(git 历史可考) | 2026-10-05 | — | 已退役(git 历史可考) |
| 迭代 16 | 已完成(2026-10-06) | 已退役(git 历史可考) | 2026-10-05 | — | 已退役(git 历史可考) |
| 迭代 17 | 已完成(2026-10-07) | 已退役(git 历史可考) | 2026-10-06 | — | 已退役(git 历史可考) |
| 迭代 18 | 已完成(2026-10-07) | 已退役(git 历史可考) | 2026-10-07 | — | 已退役(git 历史可考) |
| 迭代 19 | 已完成(2026-10-08) | 已退役(git 历史可考) | 2026-10-08 | — | 已退役(git 历史可考) |
| 迭代 20 | 已完成(2026-10-11) | 已退役(git 历史可考) | 2026-10-11 | — | 已退役(git 历史可考) |
| 迭代 21 | 已完成(2026-10-12) | 已退役(git 历史可考) | 2026-10-11 | — | 已退役(git 历史可考) |
| 迭代 22 | 已完成(2026-10-12) | 已退役(git 历史可考) | 2026-10-11 | — | 已退役(git 历史可考) |
| 迭代 23 | 已完成(2026-10-12) | 已退役(git 历史可考) | 2026-10-12 | — | 已退役(git 历史可考) |
| 迭代 24 | 已完成(2026-10-13) | 已退役(git 历史可考) | 2026-10-13 | — | 已退役(git 历史可考) |
| 迭代 25 | 已完成(2026-10-13) | 已退役(git 历史可考) | 2026-10-13 | — | 已退役(git 历史可考) |
| 迭代 26 | 已完成(2026-10-14) | 已退役(git 历史可考) | 2026-10-14 | — | 已退役(git 历史可考) |
| 迭代 27 | 已完成(2026-10-14) | 已退役(git 历史可考) | 2026-10-14 | — | 已退役(git 历史可考) |
| 迭代 28 | 已完成(2026-10-15) | 已退役(git 历史可考) | 2026-10-15 | — | 已退役(git 历史可考) |
| 迭代 29 | 已完成(2026-10-16) | 已退役(git 历史可考) | 2026-10-16 | — | 已退役(git 历史可考) |
| 迭代 30 | 已完成(2026-10-17) | 已退役(git 历史可考) | 2026-10-16 | — | 已退役(git 历史可考) |
| 迭代 31 | 已完成(2026-10-19) | 已退役(git 历史可考) | 2026-10-18 | ≈7.5 个工作日 | 已退役(git 历史可考) |
| 迭代 32 | 已完成(2026-10-21) | 已退役(git 历史可考) | 2026-10-20 | ≈8.75 个工作日 | 已退役(git 历史可考) |
| 迭代 33 | 已完成(2026-10-22) | 已退役(git 历史可考) | 2026-10-21 | ≈13.25 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 34 | 已完成(2026-10-22) | 已退役(git 历史可考) | 2026-10-21 | ≈11 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 35 | 已完成(2026-10-25) | 已退役(git 历史可考) | 2026-10-21 | ≈15.25 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 36 | 已完成(2026-10-25) | 已退役(git 历史可考) | 2026-10-24 | ≈5.25 个工作日 | 已退役(git 历史可考) |
| 迭代 37 | 已完成(2026-10-25) | 已退役(git 历史可考) | 2026-10-25 | ≈8.25 个工作日 | 已退役(git 历史可考) |
| 迭代 38 | 已完成(2026-10-26) | 已退役(git 历史可考) | 2026-10-26 | ≈5.225 个工作日 | 已退役(git 历史可考) |
| 迭代 39 | 已完成(2026-10-27) | 已退役(git 历史可考) | 2026-10-26 | ≈10.15 个工作日〔用户特批 2026-10-26 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 40 | 已完成(2026-10-28) | 已退役(git 历史可考) | 2026-10-27 | ≈6.375 个工作日 | 已退役(git 历史可考) |
| 迭代 41 | 已完成(2026-10-29) | 已退役(git 历史可考) | 2026-10-27 | ≈13.15 个工作日〔用户特批 2026-10-27 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 42 | 已完成(2026-10-29) | 已退役(git 历史可考) | 2026-10-29 | ≈5.375 个工作日 | 已退役(git 历史可考) |
| 迭代 43 | 已完成(2026-10-30) | 已退役(git 历史可考) | 2026-10-29 | ≈6.5 个工作日 | 已退役(git 历史可考) |
| 迭代 44 | 已完成(2026-10-30) | 已退役(git 历史可考) | 2026-10-29 | ≈7.875 个工作日 | 已退役(git 历史可考) |
| 迭代 45 | 已完成(2026-10-31) | 已退役(git 历史可考) | 2026-10-29 | ≈7 个工作日 | 已退役(git 历史可考) |
| 迭代 46 | 已完成(2026-11-01) | 已退役(git 历史可考) | 2026-11-01 | ≈8.625 个工作日 | 已退役(git 历史可考) |
| 迭代 47 | 已完成(2026-11-01) | 已退役(git 历史可考) | 2026-11-01 | ≈15 个工作日〔用户特批 2026-11-01 超 10 个工作日〕 | 已退役(git 历史可考) |
| 迭代 48 | 已完成(2026-11-02) | 已退役(git 历史可考) | 2026-11-01 | ≈6.1 个工作日 | 已退役(git 历史可考) |
| 迭代 49 | 已完成(2026-11-02) | 已退役(git 历史可考) | 2026-11-02 | ≈7.25 个工作日 | 已退役(git 历史可考) |
| 迭代 50 | 待开工 | reports/需求卡片-敌方状态个体化批-2026-11-02.md
reports/需求卡片-断言补齐批-2026-11-02.md
reports/需求卡片-架构审查3.1+3.2整改批-2026-11-02.md | 2026-11-03 | ≈12.875 个工作日〔用户特批 2026-11-03 超 10 个工作日〕 | — |
- 迭代 38 收口为带红合并〔用户特批 2026-10-26〕:09 静态扫描 S13 gdstyle 恶化 2 条经批准记入基线存量红(git 提交 c4c69701),卡② 停卡退上游,处方已于 2026-10-26 修订定稿 v1.3(git 提交 b3ea7532),随「gdstyle 存量债全量清偿」条目波 7 待编排。
- 迭代 39 收口为带红合并〔用户特批 2026-10-27〕:02 EV 锚 goblin 0.9148∉[1.00,1.20](触发器批有意行为改动,fp f74b9a48ef4a)已随 EV 锚重锚批换带归绿(git 提交 ba5105aa);08d 生涯.md:55 行号漂移已随 2026-10-28 批后收尾反哺落文修复归绿。三卡拆分后终局 gdstyle 恶化 2 条(battle_orchestrator max-file-length、level_map_screen max-class-variables)归迭代 40 卡①还债与迭代 41 存量债序列。
- 迭代 40 收口为用户特许免闸直合〔2026-10-28〕:全量域验收回执未取得(回执环节断于用户特许,验收审计报告如实记档不作绿报;独立审计结论=通过,F1 一行修 iter40 8a319369 先行入库)。卡① 契约 2 宿主行数残余债(实测 1036 行,合并适配带入 36 行)经用户裁登记归后续批清偿(待办清单「战斗域结构深拆批」条目承载);09 存量红剩 level_map_screen 类变量一条归迭代 41 卡③。
- 迭代 41 收口为测试特许移交+用户裁直接合回〔2026-10-28/2026-10-29〕:全部套件与闸停跑(gdstyle 结构闸除外——开发期读数反馈在跑),验收断言、golden 对拍与独立验收审计一并移交用户执行,2026-10-29 用户裁直接合回(合并提交 eb9bb537);golden 改前锚未建让步与四项实机目检已迁体验验证清单 ㊵;gdstyle 基线 152 死键 refresh 已执行(2026-10-29 人工重锚 168→16 键,git 提交 fafb4fee)。
- 历史行的「—」= 该列事实不可考:迭代 1~8 早于需求卡片制;编排时点与预计周期不再回溯,细节查 git 提交史。
- 「已退役(git 历史可考)」= 需求卡片或实现报告曾存在,已按「证据只留最新」退役;已完成迭代的实现报告列只填 reports/ 现存路径或本保留字,不填「—」。
- 新迭代行的编排与各列判据见 doc-conventions §12.2 与 iter-plan 技能,由流水线闸(`tools/pipeline_gate.py`)机检。
## 执行纪律(2026-09-27 用户立规)
1. **一迭代一 loop**:所有更改任务(功能/文档/数值/素材接线)一律进本路线图的迭代,每迭代先立计划书再开工,一个迭代一次合并登记——**零散并行会话退场**(多会话并行 = 冲突源+介入成本;2026-09-27 起单迭代串行执行)。状态记录记「批」= 本文件记「迭代」,同物异名。
2. **例外 = 零碎 bug**:单独会话 mini-loop 修复(修→只测自己改的东西→状态记录登记),不立计划书、不占迭代位;同屏同类 bug 攒够一笔可并入下一个迭代当任务卡。
3. **用户输入闸显式化**:迭代门里所有需要用户表态的点(否决原因/裁决/试玩)登记在 [待办清单](待办清单.md) 的状态列(待裁决/待美术设计/待写卡),解一个开一个。
## 批次 loop 规范(loop engineering)
> 模板先例 = 循环 1 计划书(`.zcode/plans/battle-stage-node2d-loop-plan-2026-09-26.md`,已完整跑通收口)。每迭代照此八件成文,缺件不开工。
>
> **迭代粒度界定(对齐敏捷迭代/Sprint)**:一个迭代 = 一句迭代目标 + **3–8 个更改任务** + 一份计划书 loop + 一次合并登记,交付一个可验证增量(≈一次迭代交付)。单交付物不成迭代——并入相邻迭代当任务卡;用户输入闸未解的任务不进迭代(留待办清单当 backlog,解闸后编入下一个迭代);**迭代周期**:常规 5–10 个工作日(1–2 周)、直接编;超过 10 个工作日(超过 2 周)须经用户确认;低于 5 或超过 20 个工作日不得编(硬下限/硬上限,2026-10-21 用户裁定;列形态与闸判据见 doc-conventions §12.2 与流水线闸)。**里程碑 = 2–4 个迭代的发布级目标 + 出口验收闸(≈Release)**。
>
1. **计划书**(`.zcode/plans/<迭代名>-loop-plan-<日期>.md`):迭代目标与完成定义 / 现状事实(代码级,开工自行复核)/ 设计契约(违反即返工,标 🔴 触碰=L3 停机)/ 范围边界 / 任务卡 T0..Tn(逐卡估时)/ 验证闸 / 异常分级 / 代拍板白名单。
2. **T0 开工**:建 worktree + 拷素材与导入缓存(冷检出三件套照坑速查)+ `git status` 归属核对(并行遗留只登记不触碰)——**检出工作区零测试,直接开工**(2026-10-22 频率规则;master 经合回闸保证可用)。
3. **循环骨架**:一轮 = 一个任务卡——读卡 → 对事实源 → 实装(验收测试随对应 T 卡同轮落地;**本卡新增/改动的验收测试自己跑绿即收口,没改的不测**)→ 提交(代拍板随 commit 记录)→ 状态记录追加(查撞号)→ 下一轮。单 worktree 多点提交一次合并;轮内禁开第二个 worktree;轮内不跑闸;断点续跑 = `git log` 对任务卡定轮次。
4. **全量闸时机(2026-10-22 频率规则,无例外)**:全量只有批末+合回两个时机,轮内零跑闸(含 `--quick` 中段自检档)——卡内只测自己改的东西;既有「验收测试随卡落地」「调试期出红只重跑红件最小单元」两条保留(闸机轮次纪律见 process-conventions §6)。
5. **全量域闸**(批末 Tn):`tools/run_all_gates.sh` **按本批改动域跑**(代码面=`game/` 下非 `.md` 的行为载体 → `--code`,这是代码域唯一触发;只有文档件——`game/` 内 `.md` 及 `game/` 外一切路径 → `--docs`;两类同批都有 → 不带参数全量),所选域全绿——闸件清单、顺序与域划分只在该脚本里定义,本文件与 AGENTS.md/规约均不另列;改闸件自身(`tools/` 下机检脚本与闸壳)不占合回全量,质量义务=落批时人工确认闸可跑通且判据口径未变;涉核心的 MC 与基线逐位比对、素材批的机检断言另行。
6. **人闸**(停机交付):真人目检清单 + 代拍板追认清单 + 异步终审触点(样张类)——本循环内唯一必经人审。
7. **异常分级**:L1 自救(一次重试)→ L2 记录继续(连续 3 次同红灯升级)→ L3 停机写报告等用户。
8. **批次完成后的五步登记**:①待办清单条目状态按 doc-conventions §12.1 推进(做完整条删除)②本文件顶部「当前位」三行换代,涉及里程碑移动时同步里程碑表 ③**实现批禁写本文件与 `design/`**(代码实现批只准写 `reports/`),该改哪一行写进 `reports/iter-反哺点-<日期>.md`,由文档批执行 ④阶段变更改 stage.txt ⑤批末闸序列**按本批改动域**全绿留痕(回执 commit 对齐分支尖)。
## 维护纪律
同「批次 loop 规范」第 8 条五步登记;本文件由里程碑移动与「当前位」换代触发更新(批次开工不强制改本文件,待办明细改待办清单)。「当前位」限三行,装不下的细节进待办清单条目与 git 提交信息。