工程小件(iter技能派发制改版+AGENTS豁免面句校正·用户令): iter技能施工形态反转——「单工作区串行+实现不外派」改「派发制」: 零依赖卡即刻派发/硬等卡等前置收并落干/文件交集自然错峰, 在飞实现子代理≤2(一卡一代理一卡区, 干区承载收并, 后收口者rebase保第一-parent线性与重塑判据兼容), 派发指令必载六项(事实源/验收/施工红线/停机/禁写面与提交/返回形态限长), 主会话收敛为排程→派发→核验三样→收并, 全局在飞子代理≤2; 坑速查补「两代理禁共用一区跑闸」与「清杀Godot进程前查他卡区」; AGENTS车道铁律豁免面句校正——.zcode/ skills与hooks(13件)与.qoder/(33件)实已入git(git ls-files在册, .gitignore仅排.zcodeignore/.zcode/plans/.zcode/tmp), 豁免面改述为未入库目录。改因: 用户裁(2026-11-10)——施工尽可能外派子代理、并发上限2, 保护主会话上下文。自检: grep旧形态词(串行/并行例外/单工作区/实现不外派/≤3)活体零残留, 仅余「取代原X」式历史指称4处
This commit is contained in:
1 parent
0f6869000a
commit
0b7c3bc92d
2 files changed
+31
-25
No files matched your search
+30
-24
@@ -5,7 +5,7 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
|
||||
# /iter——迭代开工总指挥(g-plan2 批次执行制)
|
||||
|
||||
你(执行会话)现在就是本迭代的编排者+施工者。用户输入 `/iter <N>` 即 **U0 开工令**——门全解且零待裁点时不要再问"可以开工吗",直接按本流程执行。唯一的合法前置停顿是第 2 步检查不通过。
|
||||
你(执行会话)现在就是本迭代的编排者——施工默认外派实现子代理(派发制,见第 4 步与「子代理使用口径」)。用户输入 `/iter <N>` 即 **U0 开工令**——门全解且零待裁点时不要再问"可以开工吗",直接按本流程执行。唯一的合法前置停顿是第 2 步检查不通过。
|
||||
|
||||
> **发射形态(与内置 /goal 的组合)**:/goal 是 harness 内置命令(会话级目标+续跑提醒+完成校验),由用户侧设置。推荐发射形态=`/goal 按 iter 技能执行迭代 <N>,直至总收口全绿`——/goal 提供"不到目标不收工"的机制级驱策与完成校验,本技能提供批次流程。本技能单独调用亦自足(停机/闸纪律已内建),但目标完成校验只有 /goal 能提供。
|
||||
|
||||
@@ -32,7 +32,7 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
- **复核记录缺失(2026-11-05 用户立规)**:需求卡片内没有「复核记录」节、或该节申报的复核报告文件在 `reports/` 盘上不存在 → 不过,停工呈报退回写卡段。本步不代跑复核、不代补记录、不把缺记录的卡当旧卡放行;生效=卡片文件名日期 ≥2026-11-06(与 `tools/pipeline_gate.py` 该条卡片判据同口径),更早的卡不回头改。
|
||||
- **真人检测遗留项不算门(2026-10-12 用户立规)**:往期迭代/批次登记未验的实机目检项(体验验证清单/实现报告总清单在册)不构成开工阻塞——开工呈报带一句提醒即可,禁为此停工等验。
|
||||
- **设计闭合核验(2026-10-18 五段流水线立规)**:逐卡核需求卡片的设计事实源声明——独立小节「## 设计事实源」或头部「来源:…(唯一事实源:…)」句,二者得一即合格(**禁按小节名字面判死:库内合规卡多数用后者写法**;全文两词皆无=不过,机检见 `tools/pipeline_gate.py` 判据 C2)——①卡片声明的事实源文件真实存在(相对仓库根);②文档源版本与待办清单对应条目状态里的闭合凭据一致(工程类卡=证据指认与待办清单条目实况一致);③roadmap 迭代行卡片列路径与卡片实际路径一致;④行内预计周期形态合规(「≈N 个工作日」)且量值合规——5–10 个工作日为常规;10–20 个工作日须随带日期特批标记;超过 20 个工作日=缺陷(硬上限,特批不放行);低于 5 个工作日=该行状态必须为「冻结待凑批」,处待开工/进行中即编排缺陷(2026-10-25 两层模型:卡片无门槛、迭代层冻结线)。任一不过 → 停工呈报——这是编排段(iter-plan)缺陷,不是本技能能修的,禁代改卡片或迭代行凑绿。
|
||||
- **执行形态判定(2026-10-22 用户立规)**:读各卡「前置依赖与并行性」节(各卡 §0)定本迭代执行形态——默认=整迭代单工作区、各卡按 roadmap 行卡片列格内顺序串行推进;仅当卡片声明可并行(且互核无同文件交集)时,该卡组走逐卡工作区例外路径(第 4 步)。判定结果在开工呈报里带一句。
|
||||
- **执行形态判定(2026-10-22 立规;2026-11-10 用户裁改派发制)**:读各卡「前置依赖与并行性」节(各卡 §0)排出派发表——零「硬等/前置门」依赖且与在飞卡零同文件交集的卡即刻派发实现子代理(在飞实现子代理 ≤2);有依赖的卡等前置卡收并落干后派发;有同文件交集的卡自然错峰,不另设串行声明。排程表(每卡:派发波次/依赖前置/状态)在开工呈报里带一句。派发制与收口机制无冲突:卡区收并保迭代分支第一-parent 线性(后收口者 rebase 后落干),重塑判据=各卡边界在链上递增(`tools/reshape_cards.py` 规则 2)。
|
||||
|
||||
呈报格式:一行一项(哪条不满足/证据在哪/需要用户做什么)。全部通过则宣布「迭代 <N> 开工(U0=本次调用)」进入第 3 步。
|
||||
|
||||
@@ -40,31 +40,37 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
|
||||
1. `git status` 归属核对:主区脏文件分两类——**本迭代定义面**(下条列名文件)与**其他在飞遗产**(其余一切)。除定义面外一律禁碰、禁代提交、禁还原。
|
||||
2. **定义面已入库**(目的:worktree 从旧 HEAD 检出必须看得到定义;后续合并不被脏 roadmap 阻塞):`git add` 仅限 roadmap.md、待办清单.md、本迭代引用的全部需求卡片文件——**指名道姓,禁扫全仓**——单独一笔提交,message=`docs: 迭代<N>定义已入库`。注意:这一步是**搬运别的会话已写好的定义文件**,不是本批撰写文档(批性质禁令照旧生效);该笔单独成提交,别和代码提交混在一起,否则合回后 CI 会把本批 diff 推定跨两域、两域都验。
|
||||
3. **建迭代工作区(整迭代只此一个)**:`git worktree add ../g-plan2-iter<N> -b iter<N>`;冷检出四件套照坑速查执行(拷主区 `game/assets/art/` 与 `*.import` 边车 → `--headless --editor --quit` 刷导入 → `tools/setup_worktree_userdir.sh` 建本区独立 user 目录;闸机 code 域起手自检会自动兜底同步素材与熵增预检——`tools/sync_worktree_assets.sh`,2026-10-30 工程批——四件套照做,脚本兜防漏)。第 4 步各卡都在此工作区内推进;整迭代禁开第二个 worktree(并行例外见第 4 步)。**检出工作区零测试,直接开工**(2026-10-22 频率规则;全量验证归合回后远端 CI——合并落地 post-merge 钩子推送自动跑,T0 不做基线复读,红绿归因由「卡内只测自己改的东西」与闸机基线比对机制承担)。
|
||||
3. **建迭代干区(整迭代只此一个,承载收并与收口)**:`git worktree add ../g-plan2-iter<N> -b iter<N>`;冷检出四件套照坑速查执行(拷主区 `game/assets/art/` 与 `*.import` 边车 → `--headless --editor --quit` 刷导入 → `tools/setup_worktree_userdir.sh` 建本区独立 user 目录;闸机 code 域起手自检会自动兜底同步素材与熵增预检——`tools/sync_worktree_assets.sh`,2026-10-30 工程批——四件套照做,脚本兜防漏)。第 4 步各卡派发至独立卡区(分支 `iter<N>-卡<序号>`、worktree `../g-plan2-iter<N>-卡<序号>`,每卡区冷检出四件套各一次;属 AGENTS「会话单区」之迭代例外——在飞卡区 ≤2,2026-11-10 用户裁);卡区收并回干区后即删。**检出工作区零测试,直接开工**(2026-10-22 频率规则;全量验证归合回后远端 CI——合并落地 post-merge 钩子推送自动跑,T0 不做基线复读,红绿归因由「卡内只测自己改的东西」与闸机基线比对机制承担)。
|
||||
|
||||
|
||||
## 第 4 步:迭代内逐卡推进(单工作区)
|
||||
## 第 4 步:迭代内逐卡推进(派发制)
|
||||
|
||||
整迭代一个工作区(第 3 步已建),各卡都在其中推进。执行顺序=roadmap 迭代行卡片列格内顺序;卡片「前置依赖与并行性」节声明可并行的卡组走下方例外路径,其余串行。何时该把活分出去见下面「子代理使用口径」。
|
||||
施工默认外派实现子代理(2026-11-10 用户裁),主会话只做编排面:排程 → 派发 → 核验 → 收并 → 下一波。在飞实现子代理 ≤2(用户既定上限,取代原并行例外 ≤3)。执行顺序按第 2 步排程表:零依赖即刻派发,有「硬等/前置门」的卡等前置落干后派发。口径细则见下面「子代理使用口径」。
|
||||
|
||||
1. **读卡施工**:需求卡片 T 卡逐轮推进——读卡→对事实源(file:line 复核)→实装(**验收测试随对应 T 卡同轮落地,禁批末补写**;同轮把实际对照表写进实现报告,测试写文件:行)→本卡验收测试跑绿、读数写进该笔提交(AGENTS 红线·改完即测铁规)→提交(代拍板随 commit 记录)→进度记录→下一轮。**卡内只测自己改的东西**(2026-10-22 频率规则):本卡新增/改动的验收测试自己跑绿、读数写进该笔提交才算这一步完成,没改的不测,轮内不跑闸壳全套。整迭代禁开第二个 worktree。**diff 里没有对照表行的行为改动必须标「非行为改动」或指向覆盖行;禁删断言、放宽阈值、缩小扫描面、把真实入口换成下层直调;判据绑不上可观测提交面=停卡呈报。**
|
||||
2. **卡间依赖**:卡片声明「硬等/前置门」的后续卡,须等前置卡收口 commit 落本迭代分支且该卡验收测试跑绿后才准开 T1——迭代内不再以「合并进 master」为门(整迭代只合并一次,见第 5 步);跨迭代依赖仍由第 2 步开工检查核。
|
||||
3. **并行例外(逐卡工作区,2026-10-22 用户立规)**:仅当卡片「前置依赖与并行性」节声明可并行、且开工检查核过无同文件交集时,该并行卡组按卡各开 worktree(`git worktree add ../g-plan2-<卡名worktree>`,冷检出四件套照坑速查),subagent 并发 ≤3(用户既定上限);并行卡各自收口合并进 master(现行逐卡机制原样保留在此例外路径),不受第 5 步「一次合并」约束。
|
||||
4. **画面类需求的黄金图基线冻结(2026-11-05 立;2026-11-08 补审核落档)**:卡触碰画面呈现面的(判据=设计段出了预览图),实现轮把该画面纳入渲染闸机器面——截图采集清单扩项+实跑截图冻结进 `game/tests/golden/`;冻结(新建与换代同口径)前呈用户对照该卡预览图**逐张审核确认**,确认后触发原因写进当批提交说明(`tools/golden_baseline_refresh.sh`);此后渲染闸逐像素自动盯、零人工。义务细则=test-conventions §8.2「golden 测试项扩项」与「基线冻结审核关卡」;预览图(HTML/SVG 效果图)禁直接充当比对基线。**确认记录落 `game/tests/golden/README.md` 审核记录节(审核人+时间+基线清单);未审核的基线禁合回**——关卡同适用于非卡片批的基线操作(目录迁移/重构/容差修订等工程批,同样逐张呈报审核)。**基线跨平台单套(2026-11-08 用户裁:跨平台渲染必须一致,全平台对拍同一份基线,跨平台锯齿噪声由容差带吸收,禁加平台基线消化差异)**。
|
||||
1. **派发(每卡一次,按排程表)**:给实现子代理开卡区(`git worktree add ../g-plan2-iter<N>-卡<序号> -b iter<N>-卡<序号>`,冷检出四件套照坑速查)并写派发指令。**派发指令带路径不转录全文**(省主会话上下文;子代理自读卡片原文与设计事实源,不靠转述),必载六项:
|
||||
- **事实源**——卡片路径+本卡「前置依赖与并行性」节要点+卡内引用的关键 file:line 锚;
|
||||
- **验收**——对照表位置(卡内节名)与验收档申报;改完即测义务:**验收测试随对应 T 卡同轮落地,禁批末补写**,本卡验收测试跑绿、读数写进该笔提交(AGENTS 红线);**卡内只测自己改的东西**(2026-10-22 频率规则),没改的不测,轮内不跑闸壳全套;
|
||||
- **施工红线**——**diff 里没有对照表行的行为改动必须标「非行为改动」或指向覆盖行;禁删断言、放宽阈值、缩小扫描面、把真实入口换成下层直调;判据绑不上可观测提交面=停手回报**;
|
||||
- **停机**——卡内分歧=停手回报,禁自答禁自裁(实现段零裁断对子代理同效);MC/verifier 跑批禁自发起(用户批准硬规对子代理同效);
|
||||
- **禁写面与提交**——`design/` 整目录、根规则文件、`game/tests/README.md` 照批性质禁令只读;代拍板随 commit 留痕,一卡多笔自由提交;
|
||||
- **返回形态限长**——commit 号+测试读数+实际对照表行+偏差清单,不贴全文;实际对照表行由主会话汇编进实现报告。
|
||||
2. **核验(收回口回报后主会话亲自动手)**:核三样——①子代理报的 commit 真在卡区分支上;②断言尾缀能 grep 到;③测试读数在该笔提交信息里。任一缺 → 打回重派或停机呈报。
|
||||
3. **收并(核验过即做,主会话执行)**:卡区分支并入迭代干区——先收口者 fast-forward,后收口者先 rebase 到干区尖再 fast-forward(保第一-parent 线性,重塑判据=各卡边界链上递增);收并后删卡区 worktree、排程表记状态,腾出在飞席位派下一卡。
|
||||
4. **卡间依赖**:卡片声明「硬等/前置门」的后续卡,须等前置卡收并落干区且验收测试跑绿(读数在案)后才派发——迭代内不以「合并进 master」为门(整迭代只合并一次,见第 5 步);跨迭代依赖仍由第 2 步开工检查核。
|
||||
5. **画面类需求的黄金图基线冻结(2026-11-05 立;2026-11-08 补审核落档)**:卡触碰画面呈现面的(判据=设计段出了预览图),实现轮把该画面纳入渲染闸机器面(采集与扩项由实现子代理执行,用户审核经主会话转呈)——截图采集清单扩项+实跑截图冻结进 `game/tests/golden/`;冻结(新建与换代同口径)前呈用户对照该卡预览图**逐张审核确认**,确认后触发原因写进当批提交说明(`tools/golden_baseline_refresh.sh`);此后渲染闸逐像素自动盯、零人工。义务细则=test-conventions §8.2「golden 测试项扩项」与「基线冻结审核关卡」;预览图(HTML/SVG 效果图)禁直接充当比对基线。**确认记录落 `game/tests/golden/README.md` 审核记录节(审核人+时间+基线清单);未审核的基线禁合回**——关卡同适用于非卡片批的基线操作(目录迁移/重构/容差修订等工程批,同样逐张呈报审核)。**基线跨平台单套(2026-11-08 用户裁:跨平台渲染必须一致,全平台对拍同一份基线,跨平台锯齿噪声由容差带吸收,禁加平台基线消化差异)**。
|
||||
|
||||
### 子代理使用口径(2026-10-21 用户立)
|
||||
### 子代理使用口径(2026-10-21 立;2026-11-10 用户裁反转:实现默认外派)
|
||||
|
||||
默认口径:**实现不外派**——写代码、写测试与对照表、合并、停机呈报一律由本会话做;可以外派的是查证与「跑命令取读数」两类主动分出的活,加上合并前那项强制分出的独立验收审计,共三类(见下)。外派出去的活都不改源码、不写实现产出物、不做裁断。并发上限只管数量,这条管范围。
|
||||
默认口径:**实现外派**——单卡实现轮(实装+验收测试与改动—验收对照表的同轮编写)整体派给实现子代理,一卡一代理一卡区(第 4 步);主会话保留:开工检查与排程、派发指令撰写、核验三样、收并动作、合并、停机呈报与用户转呈、收口五步与实现报告——这些是门与裁断面,依赖对全部卡片与迭代全局的掌握。**全局在飞子代理 ≤2**(用户既定上限,取代原 ≤3):实现代理与考证/红定位类共用额度,实现占满两席时考证类排队或并入实现代理顺手做;独立验收审计在收口期跑、实现代理已撤,天然不占额。外派出去的活一律不做裁断、不改他卡文件。
|
||||
|
||||
**可以分出去的三类**(派出前先想清楚要它返回什么,指令里写死返回形态):
|
||||
**外派四类**(派出前先想清楚要它返回什么,指令里写死返回形态):
|
||||
|
||||
1. **只读考证**——第 2 步自洽扫描的第③项(从需求卡片「现状考证」抽 3-5 处关键 file:line 到现行代码核对)、跨模块找某符号的消费方与改动面。只要它汇报「文件:行 + 一句事实」,禁它改文件、禁它下「因此该怎么改」的结论;冲突判定与裁断仍在本会话。
|
||||
2. **闸跑出红定位**——跑批输出量大,把「跑这条命令 + 报红的用例名与第一条失败断言 + 原样贴出那段读数」分出去,修复与复跑收回本会话。判「是不是本批新增红」以第 3 步基线读数为凭据,不拿子代理的「全绿」转述当凭据。
|
||||
3. **合并前的独立验收审计**——见「独立验收审计」一节,属强制分出,实现者不能自审。
|
||||
1. **卡实现轮(2026-11-10 新增,默认形态)**——按第 4 步派发指令模板执行。原「实现不外派」的顾虑(依赖卡片全文理解、转述写码无法对齐卡片)由派发指令解决:指令带卡片路径与事实源锚,子代理读卡原文,不靠转述;卡区隔离保证互不踩闸。
|
||||
2. **只读考证**——第 2 步自洽扫描的第③项(从需求卡片「现状考证」抽 3-5 处关键 file:line 到现行代码核对)、跨模块找某符号的消费方与改动面。只要它汇报「文件:行 + 一句事实」,禁它改文件、禁它下「因此该怎么改」的结论;冲突判定与裁断仍在本会话。
|
||||
3. **闸跑出红定位**——跑批输出量大,把「跑这条命令 + 报红的用例名与第一条失败断言 + 原样贴出那段读数」分出去,修复与复跑归主会话(实现期卡内红先打回实现代理自修,修后重新核验)。判「是不是本批新增红」以第 3 步基线读数为凭据,不拿子代理的「全绿」转述当凭据。
|
||||
4. **合并前的独立验收审计**——见「独立验收审计」一节,属强制分出,实现者不能自审。
|
||||
|
||||
**不分出去的**:单卡实现轮本身、验收测试与改动—验收对照表的同轮编写、合并动作、停机呈报。原因:这几项依赖对卡片全文与设计事实源的完整理解,且施工铁律写了整迭代单工作区;子代理拿到的是转述,写出来的码无法保证对齐卡片。第 4 条的并发上限与执行形态判定管的是**多张卡怎么排先后、各用哪个工作区**,不是把实现交给子代理——判定为并行时,本会话逐卡开卡、逐卡施工,分出去的仍然只有上面那三类。
|
||||
|
||||
**取回纪律**:子代理的汇报当线索不当证据。凡涉及「跑绿了」「这条断言存在」「文件在这一行」的说法,本会话自己 grep 或自己跑一次才算数——「独立验收审计」一节不采信被审对象自述「已全绿」,正是同一条口径。
|
||||
**取回纪律**:子代理的汇报当线索不当证据。凡涉及「跑绿了」「这条断言存在」「文件在这一行」的说法,主会话按第 4 步核验三样自己 grep 确认才算数——「独立验收审计」一节不采信被审对象自述「已全绿」,正是同一条口径。
|
||||
|
||||
### 闸序列(既定,禁手拼同款命令)
|
||||
|
||||
@@ -76,7 +82,7 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
|
||||
### 独立验收审计(合并前必做,2026-10-21 立)
|
||||
|
||||
由没参与实现的子代理,或用户点名的另一会话执行;只读需求卡片、实现报告里的实际对照表、本批 diff、测试文件和闸回执,不采信报告里的「已全绿」。单工作区口径(2026-10-22 起)下在迭代总收口、合并前执行一次,审计范围覆盖本迭代全部卡的 diff、对照表与验收断言。至少做三件事:
|
||||
由没参与实现的子代理,或用户点名的另一会话执行;只读需求卡片、实现报告里的实际对照表、本批 diff、测试文件和闸回执,不采信报告里的「已全绿」。派发制口径(2026-11-10 起)下在迭代总收口、合并前执行一次,审计范围覆盖本迭代全部卡的 diff、对照表与验收断言(卡区史已按卡并入迭代分支,diff 以 iter<N> 对 master 计)。至少做三件事:
|
||||
|
||||
1. 逐行核对对照表:测试存在、尾缀能 grep 到、真实入口没有绕过改动点;
|
||||
2. 抽查验收断言:每张 T 卡至少一条,核对断言在当轮真实跑批中执行且通过(闸回执与测试输出为凭);
|
||||
@@ -88,7 +94,7 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
|
||||
### 停机规则
|
||||
|
||||
- **实现段零裁断(2026-10-18 换口径,取代原「禁自答/用户门/机制卡点」三条)**:实现段的输入在编排段出口已锁死(卡片零待裁点+设计闭合凭据齐+编排五查过)。施工中冒出需求卡片没写清的分歧、冲突、模糊点(含机制卡点)=**上游缺陷**——停该卡,呈报退回上游(写卡段或设计段),随呈报附「待办清单对应条目状态回退+缺口补记」拟稿(写清差什么才能重写卡);呈报=缺陷移交不是提问,须把分歧点、两种以上读法与建议案写全,不裸呈问题。**禁自答、禁内联提问求裁断、禁 idle 等待轮**;待办清单状态回退与缺口补记的落笔归上游段或用户——本批对 `design/` 只读,批性质禁令不因停机豁免。该卡停摆不阻塞同迭代其他卡,其余卡继续(单工作区口径:停摆卡不提交,其余卡继续施工;迭代收口合并须等停摆卡闭合、或用户裁拆批后整体进行)。
|
||||
- **实现段零裁断(2026-10-18 换口径,取代原「禁自答/用户门/机制卡点」三条)**:实现段的输入在编排段出口已锁死(卡片零待裁点+设计闭合凭据齐+编排五查过)。施工中冒出需求卡片没写清的分歧、冲突、模糊点(含机制卡点)=**上游缺陷**——停该卡,呈报退回上游(写卡段或设计段),随呈报附「待办清单对应条目状态回退+缺口补记」拟稿(写清差什么才能重写卡);呈报=缺陷移交不是提问,须把分歧点、两种以上读法与建议案写全,不裸呈问题。**禁自答、禁内联提问求裁断、禁 idle 等待轮**;待办清单状态回退与缺口补记的落笔归上游段或用户——本批对 `design/` 只读,批性质禁令不因停机豁免。该卡停摆不阻塞同迭代其他卡,其余卡继续(派发制口径:停摆卡不收并、卡区留存待闭合,排程表记停摆,其余卡照常派发收并;迭代收口合并须等停摆卡闭合、或用户裁拆批后整体进行)。
|
||||
- 需求卡片内预设停机点(S1/S2…)→ 合法停机呈报等裁(裁断点在卡片审问阶段已由用户预设,属预授权面)。
|
||||
- 异常分级:L1 自救重试一次 → L2 记录继续(连续 3 次同红灯升级)→ L3 停机写报告等用户。环境故障与测试红是工程问题,走分级处置,不属裁断。
|
||||
- 代拍板白名单保留:授权发生在卡片审问阶段,实现只执行预授权(随 commit 留痕);超白名单事项记入实现报告「实现决定记录」节备案,不另立追认单。
|
||||
@@ -96,8 +102,8 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
|
||||
## 第 5 步:合并与收口
|
||||
|
||||
1. **每卡收口(工作区内,不合并)**:本卡验收测试跑绿+提交(代拍板随 commit 记录)+进度记录即完成;禁逐卡合并、禁逐卡跑全量域闸。
|
||||
2. **迭代总收口(一次合并)**:全部卡收口后 → **冻结**(代码与断言不再动)→ 全仓件核 grep → master 已被推进则在迭代工作区 `git merge master` 解冲突 → **重塑**:`python tools/reshape_cards.py --branch iter<N> --card 卡<k>=<该卡最后一笔> …`(把分支线性史压成一卡一笔+可选一笔纯文档收尾;原史自动留 backup 分支,见 process-conventions §1.3)→ **独立验收审计通过**(见上节)→ 主区 `git merge --no-ff iter<N>`(合回守卫数卡校验:卡提交数=roadmap 行卡片数,未归卡提交拦下)→ 合并落地 post-merge 钩子自动推送 origin master 触发远端 CI 全量(后台,不阻塞)→ 即向用户呈报本批总结(呈报即本回合止),结果按需现查 `tools/ci_check.sh <合并提交>`(合回零等待,process-conventions §1 第 3 条)——绿即收口;红则按闸机轮次纪律孤跑复现、新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复提交并再次主区 `git merge --no-ff`,追绿后删修复区(迭代区已随合回即删)。允许的重跑只剩「验证修复」与用户自发全量回归两类,禁「跑都跑了再跑一遍保险」(process-conventions §1 第 2 条、§3 第 9 条)。
|
||||
1. **每卡收口(卡区内,不并 master)**:本卡验收测试跑绿+提交(代拍板随 commit 记录)+实际对照表行随回报交主会话即完成;禁逐卡合并进 master、禁逐卡跑全量域闸(收并进迭代干区属第 4 步常规动作,不算合并)。
|
||||
2. **迭代总收口(一次合并)**:全部卡收口且收并落干区后 → **冻结**(代码与断言不再动)→ 全仓件核 grep → master 已被推进则在迭代工作区 `git merge master` 解冲突 → **重塑**:`python tools/reshape_cards.py --branch iter<N> --card 卡<k>=<该卡最后一笔> …`(把分支线性史压成一卡一笔+可选一笔纯文档收尾;原史自动留 backup 分支,见 process-conventions §1.3)→ **独立验收审计通过**(见上节)→ 主区 `git merge --no-ff iter<N>`(合回守卫数卡校验:卡提交数=roadmap 行卡片数,未归卡提交拦下)→ 合并落地 post-merge 钩子自动推送 origin master 触发远端 CI 全量(后台,不阻塞)→ 即向用户呈报本批总结(呈报即本回合止),结果按需现查 `tools/ci_check.sh <合并提交>`(合回零等待,process-conventions §1 第 3 条)——绿即收口;红则按闸机轮次纪律孤跑复现、新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复提交并再次主区 `git merge --no-ff`,追绿后删修复区(迭代区已随合回即删)。允许的重跑只剩「验证修复」与用户自发全量回归两类,禁「跑都跑了再跑一遍保险」(process-conventions §1 第 2 条、§3 第 9 条)。
|
||||
3. 账面随批:**能力清单核对(2026-10-29 起,核对义务归收尾提交)**——核对 `game/tests/README.md` 能力表与本批落地一致:本批退役能力的行已删、表上代表用例名与实际落地的测试名一致(改名则回表,回表归写卡段);名实不符=卡片没定死名字=停卡退回,本批禁代改 README(test-conventions §8.3)。体验验证清单登记目检项(真人检测只登记不阻塞——登记完批内义务即了结,禁以等目检为由延后合并/收口/下一迭代,2026-10-12 用户立规)、roadmap 行内该卡换代、术语表如涉(以上机械面文档,合并前随批更新完毕);**GDD/art-bible 等设计权威文档一律不动**——实现与设计的差异/缺口逐条记入反哺点清单(2026-10-10 用户立规:文档更新必须经用户同意)。
|
||||
4. 迭代产出物**全部落 `reports/`,禁落 `design/`**——`reports/iter<N>-实现报告-<日期>.md`(各卡状态+实际对照表+独立验收审计结论+实机目检总清单+遗留读数义务+实现决定记录)、`reports/iter<N>-反哺点-<日期>.md`(要写进 GDD/art-bible 的点逐条写清:哪个文件哪一节、改成什么、依据是什么;**不再登记待办清单**,用户在会话里裁决后由文档批写入 `design/` 并把该条清掉);stage.txt 视情移动、批末闸序列全绿留痕。待办清单条目状态推进与 roadmap 顶部「当前位」三行换代都归文档批做(本批禁写 `design/` 与根规则文件,见批性质禁令)。**roadmap 里程碑或行换代已移出本批**(属文档动作,归文档批做);若按第 3 步搬运过定义面(roadmap/待办清单/需求卡片),那笔提交单独成笔,呈报时注明是搬运既有文件、不是本批撰写文档。
|
||||
5. 红灯纪律:存量红零新增口径可继续;**新红必修或停机呈报,禁带红合并**。
|
||||
@@ -105,9 +111,9 @@ description: g-plan2 迭代开工总指挥。当用户输入 /iter <迭代号>
|
||||
## 坑速查(历史实证,开工前扫一眼)
|
||||
|
||||
- 报告写「V1 绿」不等于有 V1 的断言:先 grep 断言尾缀和真实入口,再看报告;绕过真实入口的测试(如裸 `EffectEngine` 替代 `BattleOrchestrator`)不算该接线的验收。
|
||||
- worktree 冷检出(整迭代一次;并行例外路径每卡一次):`game/assets/art/**` 与一切 `*.import` 边车都不入 git,检出后必先把主区素材拷过来(`cp -r <主区>/game/assets/art/. <本区>/game/assets/art/`),再用 **`--editor --quit`** 刷导入——`--import` 不生成新素材的 .import 边车,刷完仍报 `main_theme.tres` 解析失败、按钮样式盒全空、冒烟 V1 成片假红(2026-10-17 实测)。跑批前的素材齐盘预检会把这件事拦下来并按名列出缺件。同轮跑 `tools/setup_worktree_userdir.sh`:不建区隔离时所有 worktree 共用引擎 user 目录,测试夹具、试玩日志与截图产物互踩(并行跑闸必假红);闸壳跑批前会自检/自愈,建不起来即拒跑。
|
||||
- worktree 冷检出(干区一次;派发制下每张卡区各一次):`game/assets/art/**` 与一切 `*.import` 边车都不入 git,检出后必先把主区素材拷过来(`cp -r <主区>/game/assets/art/. <本区>/game/assets/art/`),再用 **`--editor --quit`** 刷导入——`--import` 不生成新素材的 .import 边车,刷完仍报 `main_theme.tres` 解析失败、按钮样式盒全空、冒烟 V1 成片假红(2026-10-17 实测)。跑批前的素材齐盘预检会把这件事拦下来并按名列出缺件。同轮跑 `tools/setup_worktree_userdir.sh`:不建区隔离时所有 worktree 共用引擎 user 目录,测试夹具、试玩日志与截图产物互踩(并行跑闸必假红);闸壳跑批前会自检/自愈,建不起来即拒跑。两个子代理禁共用一个工作区跑闸——user 目录与导入缓存互踩必假红(本条前科同源),每代理各持一区。
|
||||
- 合并后主区:无手工动作——类名缓存刷新由 CI 跑批起手接管(`--editor --quit`);CI 首跑即合并后验证,红项与绿证用 `tools/ci_check.sh <合并提交>` 现查(读数须是绿;「未验」=零触发批跑闸步全跳过,不算验过),修复走 `fix-<任务名>` worktree 合回自动追绿。
|
||||
- 长测试前:清残留 Godot 进程(probe_gate 自带清杀,run_all 需手动)。
|
||||
- 长测试前:清残留 Godot 进程(probe_gate 自带清杀,run_all 需手动);派发制下清杀前确认他卡区代理没在跑批,禁一把全杀。
|
||||
- 改名件:.gd/.uid/.tscn 三件同步,禁只改 .gd。
|
||||
- heredoc 内变量会被吞:复杂脚本落文件再执行。
|
||||
- CRLF:禁往核心层 .gd 带入 CRLF(battle_orchestrator 前科)。
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
## 硬性红线(勿违反;操作细则在 process-conventions.md 与各规约)
|
||||
|
||||
- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→删区(合回即删,2026-09-19 原裁),CI 红不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复合回追绿;会话单区(2026-11-04 用户裁)——同一时刻每会话至多一个 worktree 在役,同会话追加事项并入在役区、只做一次合入(一次 CI),合回后用户再发令=新回合另开区,迭代实现批独占回合(细则见 process-conventions §1 第 5 条);主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与一切 git commit;豁免面仅 `.zcode/`、`.qoder/`(不入 git,主区直改);commit 点零钩子检查(pre-commit 直改闸已退役);合回 merge 点另有前置检查钩子(pre-merge-commit,2026-11-06 用户裁,见「运行与验证」首条);全量验证归合回后远端 CI(post-merge 钩子推送触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1)
|
||||
- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→删区(合回即删,2026-09-19 原裁),CI 红不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复合回追绿;会话单区(2026-11-04 用户裁)——同一时刻每会话至多一个 worktree 在役,同会话追加事项并入在役区、只做一次合入(一次 CI),合回后用户再发令=新回合另开区,迭代实现批独占回合(细则见 process-conventions §1 第 5 条);主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与一切 git commit;豁免面仅未入库目录(`.zcode/plans/`、`.zcode/tmp/` 与 `.zcodeignore`——被 .gitignore 在排、检出区里不存在,只能主区直改);`.zcode/` 其余件(skills、hooks)与 `.qoder/` 均已入 git(`git ls-files` 在册可核),改动同走本车道;commit 点零钩子检查(pre-commit 直改闸已退役);合回 merge 点另有前置检查钩子(pre-merge-commit,2026-11-06 用户裁,见「运行与验证」首条);全量验证归合回后远端 CI(post-merge 钩子推送触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1)
|
||||
- **仓库根禁止设会话状态文件**(`active.md` 已废除)——现状看 roadmap「当前位」,待办看待办清单,过程看 git 提交信息,产出物看 `reports/`;任何文档禁止另设「当前状态快照」节,两处记同一件事必然漂移(细则见 doc-conventions 第 10 节)
|
||||
- **改完即测铁规(2026-11-05 用户裁,取代原「测试执行两入口铁规」)**——任何会话里的任何改动,落笔之后立刻跑一遍覆盖该改动面的验证并跑绿、读数写进这一步的提交信息,这一步才算完成;验证载体一律按 `tools/run_all_gates.sh` 的域划分与该件自身的直跑方式,不扩出改动面、不请示、不等点名,未改动的面不测,合回后远端 CI 的全量跑批不替代本条。读数类采集(MC/verifier)不在该域划分内,不属本条义务
|
||||
- **红账不清不开新批**——上一批远端跑批有真红未闭合不开新批;假红(导入缓存、user 目录未隔离那类在册环境坑)走异常分级处置,不算未闭合
|
||||
|
||||
Reference in new issue
Block a user