docs(迭代周期规则批): 迭代周期三条线定型——中值精确值不取整/5–10 日常规/超 10 须带日期特批/硬下限 5、硬上限 20(特批不放行)
2026-10-21 用户裁定落地四件: - process-conventions 四查③改「总估时三条线」(<5 不得编/5–10 直接编/超 10 呈报整批/拆批两案等裁、确认后带日期标记/>20 不得编、确认也不放行) - doc-conventions §12.2 预计周期列改「≈N 个工作日」中值精确值形态(退役 0.5 步进周形态,1 周=5 工作日) - roadmap 粒度句换代;迭代 31–35 五行按中值精确值改写(31≈7.5/32≈8.75/33≈13.25/34≈11 归特批/35≈15.25 个工作日) - pipeline_gate:WEEKS_RE→PERIOD_RE;周期判据改三条线(<5 与 >20 判红、10<x≤20 须带日期特批标记、「—」历史行豁免) 变异验证 8 例(worktree 备份→sed 变异→恢复):25 带标记红(硬上限拦)/4 红(硬下限拦)/15 无标记红/15 带标记绿/20 带标记绿(边界放行)/10 无标记绿(边界不触批)/旧周形态红/标记缺日期红;恢复后全绿
This commit is contained in:
1 parent
7280070f3d
commit
c61d00b41a
4 files changed
+29
-21
No files matched your search
@@ -187,7 +187,7 @@ roadmap 由顶部里程碑表+迭代总表组成,迭代总表一行一个迭
|
||||
| 状态 | 待开工 / 进行中 / 已完成(YYYY-MM-DD)/ 已终止(YYYY-MM-DD) |
|
||||
| 需求卡片 | 只写文件路径;一格内一行一卡,格内排列顺序=执行顺序;已退役填保留字「已退役(git 历史可考)」;历史迭代不可考填「—」(早期无卡片制的迭代) |
|
||||
| 编入时间 | YYYY-MM-DD(该迭代最近一次编入卡片的日期);历史迭代不可考填「—」 |
|
||||
| 预计周期 | ≈N 周(0.5 步进,N ≤ 2);超过 2 周须随带日期的用户特批标记(格式见 12.4),流水线闸见标记放行、无标记判红;历史迭代不可考填「—」(不做 ≤2 周判) |
|
||||
| 预计周期 | 所选卡估时区间**中值**求和,单位工作日,写精确值不取整,形态「≈N 个工作日」(1 周=5 个工作日);5–10 为常规区间;超过 10 须随带日期的用户特批标记(格式见 12.4),流水线闸见标记放行、无标记判红;低于 5 或超过 20 均判红(硬下限/硬上限,2026-10-21 用户裁定:特批标记也不放行);历史迭代不可考填「—」 |
|
||||
| 实现报告 | `reports/iterN-实现报告-YYYY-MM-DD.md`;未完成=「—」;退役=「已退役(git 历史可考)」;已完成迭代只许存在路径或退役保留字、禁「—」 |
|
||||
|
||||
迭代行禁入内容:事项说明、卡序叙述、T 段明细、读数、闸数字、裁点记录、门依赖。卡间依赖写在卡片自身,行内只放上表六列的事实。特批标记同样可用于 roadmap 格(须带日期,见 12.4)。
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
| 一·登记 | 无(闸管格式) | 待办清单条目 | 条目=标题登记元数据+正文四属性(现状/缺口/归属/状态);标题登记后不再变,正文随进程演进。格式与状态机权威=doc-conventions 第 12 节 |
|
||||
| 二·文档设计/美术设计 | doc-design(文档轨,兼任反哺点写入)/asset-ingest(美术录入;样张素材由用户主导产出) | GDD 文档或 art-bible/过审样张素材 | 用户提起或从待办清单取出;会话内进行、用户主导、禁无监管自跑;经用户点头确认心智一致才许写入文档;完成判据=待裁点清零,带未裁点的是讨论稿;轨闭合凭据记入待办清单现状清单(文档轨=文档路径+版本号,美术轨=art-bible 条款版本) |
|
||||
| 三·写需求卡片 | req-card | 需求卡片 | 轨闭合后用户发令;新玩法/新系统/新内容必须有设计定稿前置,例外=工程直入四类(缺陷修复/工程债/测试基建/重构)凭证据跳过设计轨;卡片必经 grilling 多轮复核、零待裁点才成立;写完在待办清单状态记「已写卡」,卡片路径记入现状清单(防遗忘) |
|
||||
| 四·迭代编排 | iter-plan | roadmap 迭代行 | 编排四查:①每卡卡片文件存在 ②每卡设计闭合凭据齐(或工程直入证据)③总估时区间——下界=所选卡估时按区间**中值**求和不得低于 5 天(2026-10-21 用户立:不希望单迭代编太少),上界=≤2 周 ④写完 roadmap 行后跑流水线闸确认绿;编入未完成迭代,新开迭代行经用户确认 |
|
||||
| 四·迭代编排 | iter-plan | roadmap 迭代行 | 编排四查:①每卡卡片文件存在 ②每卡设计闭合凭据齐(或工程直入证据)③总估时三条线——所选卡估时按区间**中值**求和(单位工作日、写精确值不取整):低于 5 个工作日不得编(硬下限,2026-10-21 用户立:不希望单迭代编太少);5–10 个工作日为常规区间、直接编;超过 10 个工作日须经用户确认(确认前呈报整批/拆批两案等裁,禁自行拆分或塞入),确认后迭代行随带日期特批标记;超过 20 个工作日不得编(硬上限,2026-10-21 用户立:用户确认也不放行,必须拆批)④写完 roadmap 行后跑流水线闸确认绿;编入未完成迭代,新开迭代行经用户确认 |
|
||||
| 五·实现 | iter | 代码与配置,可运行的游戏 | 需求卡片永不单独施工,统一由用户指定迭代号触发(=U0 开工令),按 iter 技能与本文 §3 执行;**本段是代码实现批:禁写 `design/` 与根规则文件,产出物只落 `reports/`(见 §3 第 13 条)**;设计权威文档(GDD/art-bible)批内一律不更新;完成人闸=实机目检清单+代拍板追认单登记交用户即完成批内义务 |
|
||||
|
||||
**实现段零裁断**:实现段的输入在编排段出口已锁死(卡片零待裁点+设计闭合凭据齐+编排四查过)。实现中冒出卡片没写清的分歧=上游缺陷——停该卡、待办清单状态回退+缺口补记,退回上游;禁自答、禁内联提问求裁断;该卡停摆不阻塞同迭代其他卡。环境故障与测试红走异常分级(自救重试/记录继续/停机呈报)。代拍板白名单保留:授权发生在卡片审问阶段,实现只执行预授权;批后追认单=备案确认。
|
||||
|
||||
+6
-6
@@ -64,11 +64,11 @@
|
||||
| 迭代 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 | ≈1.5 周 | 已退役(git 历史可考) |
|
||||
| 迭代 32 | 已完成(2026-10-21) | 已退役(git 历史可考) | 2026-10-20 | ≈1.75 周 | 已退役(git 历史可考) |
|
||||
| 迭代 33 | 待开工 | reports/需求卡片-存档制数据层改造批-2026-10-18.md<br>reports/需求卡片-选档界面新建批-2026-10-18.md<br>reports/需求卡片-主菜单三入口化批-2026-10-18.md | 2026-10-21 | ≈2.5 周〔用户特批 2026-10-21 超 2 周上限〕 | — |
|
||||
| 迭代 34 | 待开工 | reports/需求卡片-敌人表深度带换代批-2026-10-21.md<br>reports/需求卡片-信息迷雾可见性批-2026-10-21.md | 2026-10-21 | ≈2 周 | — |
|
||||
| 迭代 35 | 待开工 | reports/需求卡片-节点图生成器核心批-2026-10-21.md<br>reports/需求卡片-节点图消费侧换代批-2026-10-21.md | 2026-10-21 | ≈3 周〔用户特批 2026-10-21 超 2 周上限〕 | — |
|
||||
| 迭代 31 | 已完成(2026-10-19) | 已退役(git 历史可考) | 2026-10-18 | ≈7.5 个工作日 | 已退役(git 历史可考) |
|
||||
| 迭代 32 | 已完成(2026-10-21) | 已退役(git 历史可考) | 2026-10-20 | ≈8.75 个工作日 | 已退役(git 历史可考) |
|
||||
| 迭代 33 | 待开工 | reports/需求卡片-存档制数据层改造批-2026-10-18.md<br>reports/需求卡片-选档界面新建批-2026-10-18.md<br>reports/需求卡片-主菜单三入口化批-2026-10-18.md | 2026-10-21 | ≈13.25 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | — |
|
||||
| 迭代 34 | 待开工 | reports/需求卡片-敌人表深度带换代批-2026-10-21.md<br>reports/需求卡片-信息迷雾可见性批-2026-10-21.md | 2026-10-21 | ≈11 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | — |
|
||||
| 迭代 35 | 待开工 | reports/需求卡片-节点图生成器核心批-2026-10-21.md<br>reports/需求卡片-节点图消费侧换代批-2026-10-21.md | 2026-10-21 | ≈15.25 个工作日〔用户特批 2026-10-21 超 10 个工作日〕 | — |
|
||||
|
||||
- 历史行的「—」= 该列事实不可考:迭代 1~8 早于需求卡片制;编排时点与预计周期不再回溯,细节查 git 提交史。
|
||||
- 「已退役(git 历史可考)」= 需求卡片或实现报告曾存在,已按「证据只留最新」退役;已完成迭代的实现报告列只填 reports/ 现存路径或本保留字,不填「—」。
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
> 模板先例 = 循环 1 计划书(`.zcode/plans/battle-stage-node2d-loop-plan-2026-09-26.md`,已完整跑通收口)。每迭代照此八件成文,缺件不开工。
|
||||
>
|
||||
> **迭代粒度界定(对齐敏捷迭代/Sprint)**:一个迭代 = 一句迭代目标 + **3–8 个更改任务** + 一份计划书 loop + 一次合并登记,交付一个可验证增量(≈一次迭代交付)。单交付物不成迭代——并入相邻迭代当任务卡;用户输入闸未解的任务不进迭代(留待办清单当 backlog,解闸后编入下一个迭代);**迭代周期 ≈ 一周左右**(2026-10-11 用户裁定——原「软时间盒 ≤3 个工作日,超限即切迭代」系 3abb3bd2 成文时自造、用户从未立过此规,就此废弃)。**里程碑 = 2–4 个迭代的发布级目标 + 出口验收闸(≈Release)**。
|
||||
> **迭代粒度界定(对齐敏捷迭代/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 + 基线复读记档(冒烟/探针/三闸/MC 与基线数据逐项比对基准)+ `git status` 归属核对(并行遗留只登记不触碰)。
|
||||
|
||||
+21
-13
@@ -4,7 +4,7 @@ r"""pipeline_gate.py — 工作流程流水线闸(待办清单条目状态机
|
||||
|
||||
职责:机检待办清单条目(标题元数据/属性齐备/状态词白名单/条件凭据/状态段累积制在场约束/特批/
|
||||
零命中)与 roadmap 迭代总表(六列/状态四形态/卡片与报告存在性/编入时间与预计周期的
|
||||
历史行「—」豁免/周期≤2 周可特批豁免/单元格白名单/零命中);「已编迭代↔已写卡段↔迭代行
|
||||
历史行「—」豁免/周期三条线(<5 与 >20 判红、超 10 须带日期特批标记)/单元格白名单/零命中);「已编迭代↔已写卡段↔迭代行
|
||||
卡片列」交叉核只此一处。2026-10-18 卡片冲突修订批补两条卡片机检:C1 关联文档同步面的
|
||||
文档义务口径(生效 2026-10-17)、C2 设计事实源声明(生效 2026-10-18)——两条都按文件名
|
||||
日期只追新规生效日之后的卡,旧卡属 git 历史留档不回头改。2026-10-21 验收闭合批补 C3:
|
||||
@@ -68,7 +68,7 @@ HEADING_RE = re.compile(r"^(#{1,4})\s+")
|
||||
SEP_ROW_RE = re.compile(r"^\|[\s\-|:]+$")
|
||||
STATUS_COL_RE = re.compile(
|
||||
r"^(待开工|进行中|已完成\(\d{4}-\d{2}-\d{2}\)|已终止\(\d{4}-\d{2}-\d{2}\))$")
|
||||
WEEKS_RE = re.compile(r"^≈(\d+(?:\.\d+)?)\s*周$")
|
||||
PERIOD_RE = re.compile(r"^≈(\d+(?:\.\d+)?)\s*个工作日$")
|
||||
ITER_CODE_COL_RE = re.compile(r"^迭代\s*(\d+)")
|
||||
|
||||
|
||||
@@ -304,7 +304,7 @@ def cell_shape(cell, card_col=False):
|
||||
return "成段叙述(卡片列一格一行一卡,禁叙述文字)"
|
||||
return None
|
||||
if "。" in cell or "," in cell or len(cell) > 60:
|
||||
return "成段叙述(只许路径/日期/状态词/保留字/—/≈N 周/特批标记)"
|
||||
return "成段叙述(只许路径/日期/状态词/保留字/—/≈N 个工作日/特批标记)"
|
||||
return None
|
||||
|
||||
|
||||
@@ -325,7 +325,7 @@ def check_iter_table(block, issues, where, root):
|
||||
if len(cells) != 6:
|
||||
issues.append((where, ln, "六列数", "本行 %d 列(须恰六列)" % len(cells)))
|
||||
continue
|
||||
code, status, cards, date, weeks, report = cells
|
||||
code, status, cards, date, period, report = cells
|
||||
for ci, cell in enumerate(cells):
|
||||
bad = cell_shape(cell, card_col=(ci == 2))
|
||||
if bad:
|
||||
@@ -347,16 +347,24 @@ def check_iter_table(block, issues, where, root):
|
||||
"需求卡片列 %s 相对仓库根不存在" % part))
|
||||
if date != "—" and not re.fullmatch(r"\d{4}-\d{2}-\d{2}", date):
|
||||
issues.append((where, ln, "编入时间", "「%s」须为 YYYY-MM-DD(历史迭代不可考填「—」)" % date))
|
||||
# 预计周期:≈N 周(N≤2);超 2 周须格内带日期特批标记(§12.2/§12.4);历史行「—」跳过
|
||||
week_marks = APPROVAL_RE.findall(weeks)
|
||||
week_core = APPROVAL_RE.sub("", weeks).strip()
|
||||
wm = None if week_core == "—" else WEEKS_RE.match(week_core)
|
||||
if week_core != "—" and wm is None:
|
||||
# 预计周期:≈N 个工作日(估时中值精确值);<5/>20 硬判红(特批标记不放行);10<x≤20 须格内带日期特批标记(§12.2/§12.4);历史行「—」跳过
|
||||
per_marks = APPROVAL_RE.findall(period)
|
||||
per_core = APPROVAL_RE.sub("", period).strip()
|
||||
pm = None if per_core == "—" else PERIOD_RE.match(per_core)
|
||||
if per_core != "—" and pm is None:
|
||||
issues.append((where, ln, "预计周期",
|
||||
"「%s」须为「≈N 周」形态(N≤2,允许 0.5 步进;历史迭代不可考填「—」)" % weeks))
|
||||
elif wm is not None and float(wm.group(1)) > 2 and not any(DATE_RE.search(mk) for mk in week_marks):
|
||||
issues.append((where, ln, "预计周期",
|
||||
"「%s」超 2 周且无带日期特批标记〔用户特批 YYYY-MM-DD …〕" % weeks))
|
||||
"「%s」须为「≈N 个工作日」形态(精确值不取整;历史迭代不可考填「—」)" % period))
|
||||
elif pm is not None:
|
||||
wd = float(pm.group(1))
|
||||
if wd < 5:
|
||||
issues.append((where, ln, "预计周期",
|
||||
"「%s」低于 5 个工作日硬下限,不得编入" % period))
|
||||
elif wd > 20:
|
||||
issues.append((where, ln, "预计周期",
|
||||
"「%s」超过 20 个工作日硬上限,特批标记不放行,须拆批" % period))
|
||||
elif wd > 10 and not any(DATE_RE.search(mk) for mk in per_marks):
|
||||
issues.append((where, ln, "预计周期",
|
||||
"「%s」超 10 个工作日且无带日期特批标记〔用户特批 YYYY-MM-DD …〕" % period))
|
||||
# 实现报告:已完成=存在路径或退役保留字(历史报告已按「证据只留最新」退役),禁「—」
|
||||
done = status_n.startswith("已完成(")
|
||||
report_n = norm_parens(report)
|
||||
|
||||
Reference in new issue
Block a user