merge: 收口机制批(active.md 体量闸 08b + 退役清理 + 收口 skill)

- tools/audit_active_state.py:五条膨胀签名(条目超 30、快照超 10、编号重复、快照整行自我重复、design/qa|research 死指针)
- 并入 tools/run_all_gates.sh 为 08b,由既有合回闸回执强制,不另立第二份闸清单
- active.md 严格退役:118 行/34 条 → 45 行/4 条,快照换代为 10 行
- doc-conventions §10、process-conventions 记机械闸与豁免面(补 .qoder/)
This commit is contained in:
DKChan committed 2026-10-15 22:55:22 +08:00
commit 07a0ae6e31
6 files changed
+150 -97

No files matched your search

+21 -94
View File
@@ -10,109 +10,36 @@
- **概念文档**:`design/gdd/00-游戏概念.md`(新骨架顶层文档;旧版 game-concept/game-pillars 已随归档封存)
- **原型**:概念原型 demo 已删除(2026-09-12,垂直切片承接);验证结论 PROCEED 载于 git 历史,原报告路径已散佚;原型已演进为 `game/` 工程
- **引擎**:Godot 4.7.2 + GDScript(2026-09-07 锁定;`.claude/docs/technical-preferences.md` + `docs/engine-reference/godot/`;**MEDIUM RISK**——2026-09-12 `/setup-engine refresh` 逐条核实 4.5–4.7 官方迁移指南,无破坏架构契约项,current-best-practices.md 已建)
- **架构**:`design/dev/architecture/architecture.md`(同目录含 ADR 系列) v1.0(2026-09-12 /create-architecture 产出,TD 自评 APPROVED WITH CONDITIONS;review-mode.txt = solo)
- **架构**:`design/dev/architecture/architecture.md` v1.0(2026-09-12 /create-architecture 产出,TD 自评 APPROVED WITH CONDITIONS;review-mode.txt = solo)
- **待办清单**:`design/gdd/06-待办清单.md`(2026-09-16 收编批起为全项目待拍板唯一登记处;系统文档只留指路存根,新增条目直接登记清单,裁决后改状态列留痕)
- **批次出口报告**:随批落 `design/qa/`(证据只留最新一轮,doc-conventions §11)
- **工程路线图**:根目录 `roadmap.md`(2026-09-17 建——里程碑时间线 + 路线图;实时状态看下方快照节)
- **工程路线图**:根目录 `roadmap.md`(里程碑时间线的权威;实时状态看下方快照节)
## 当前状态快照(收口批先更新本节,再追加状态记录;≤10 行)
- **更新于**:2026-10-14(迭代 27 代码架构技术债修复批总收口——单会话 /goal+iter U0 全量交付,合并 dd418e5)。
- **批末闸全绿**:逐位一致对拍(V1 核心)三变体五跑全同(parity_anchor×40 局×RUNSUM+JSONL 双面,工具入库 tools/parity_anchor.py)+冒烟 1055→1081/0(+V2/V3/V4/V5/V6/V7 共 26 断言)+run_all 25→27 套+probe --click+render golden 0.00%+static_scan S1/S2/S4/S9 全绿(历史 cd 静默空转顺修)+doc 三闸/熵增对基线零新增。
- **迭代 27 交付(五波)**:T1 三屏壳场景(menu/camp/adventure)+RunScope 会话物化+SaveManager/MetaProgression 升格 autoload;T2 _settle 五段 Segment+英雄攻击拆步(编排器 1725→1325 行);T3 RunLedger 单类持四账+刷新双账删副本+gp_final 键删影子账;T4 ModalFlow 模态编排纯逻辑类+互斥域 tags 化+双 context;T5 类型闸(audit_type_hints.py 368 参数化+13 真类型+warning 配置+S9 规则);T6 死代码 13+FeatsEngine 退役+Callable 换装+状态机 enum 化+ConfigDB 归根+resolver 解耦。
- **迭代 27 待用户**:实机目检五件(07 ㉖,登记不阻塞)+代拍板追认单十五项(报告 §三)+GDD 反哺点两条(报告 §四/06 新条)。
- **迭代 26 交付**:按钮五态矩阵(悬停 modulate 1.06 提亮/禁用 α0.45 幽灵化/焦点 INK 2px 内缩 1px 环/危险钮本族按压态,逐实例 override 主题层零新增);全局纹理过滤 Nearest+平滑渐变件三处 LINEAR 白名单;三处 <4.5:1 换墨(GOLD_BRIGHT/HERO_BLUE_BRIGHT/STONE_DEEP,6.47/5.88/5.98:1);光柱连续 alpha;图标槽柔和档+商店居中+营地四栏等高;诊断转储钮迁调试浮窗;冒烟 +68 断言;06 四条销号/氛围层改记+反哺点新条;08 v1.4;07 ㉕;roadmap 行换代;实现报告=design/qa/iter26-实现报告-2026-10-14.md。
- **现行文档事实源**:秘宝.md v2.9+奇物.md v3.16+天赋树.md v0.10+锻造工坊.md v0.8+元进度.md v1.20+术语表 v1.10+08-Alpha版本标准 v1.4。
- **各批残留人闸不变**:迭代 20 实机目检五件+V20/V21/V22 人工核对半;21~26 六批(07 ⑳~㉕)——用户 2026-10-14 回报目检完成已核销(qa 收尾批 5a188f3);**27 五件〔07 ㉖〕新登记**。
- **已裁在册**:M4 数值批顺延迭代 28+ 未排期(各批 provisional 终值归其统一标定);迭代 27 位预留后续追加卡(同 24/26 先例)。
- **界面美化三层已登记**(85e2d2a/08 v1.1):第一层三条全部交付(全局主题=迭代 25;按钮状态矩阵+全局纹理过滤=迭代 26);第三层四件已交付;余第二层三件(贴图/字体/样张)+第三层其余(九宫格切片/棋盘观感)待立项。
- **更新于**:2026-10-14(迭代 26 UI 交互与观感批总收口——单会话 /goal+iter U0 全量交付,合并 c8c3db1)。
- **批末闸全绿**:冒烟 1055/0(基线 987+本批 68 断言)+run_all 25 套+probe --click/--full+render_gate golden 0.00%(登记即结未重制)+doc 三闸/熵增对基线零新增;MC 零跑(零数值零行为=纯呈现)。
- **迭代 26 交付**:按钮五态矩阵(悬停 modulate 1.06 提亮/禁用 α0.45 幽灵化/焦点 INK 2px 内缩 1px 环/危险钮本族按压态,逐实例 override 主题层零新增);全局纹理过滤 Nearest+平滑渐变件三处 LINEAR 白名单;三处 <4.5:1 换墨(GOLD_BRIGHT/HERO_BLUE_BRIGHT/STONE_DEEP,6.47/5.88/5.98:1);光柱连续 alpha;图标槽柔和档+商店居中+营地四栏等高;诊断转储钮迁调试浮窗;冒烟 +68 断言;06 四条销号/氛围层改记+反哺点新条;08 v1.4;07 ㉕;roadmap 行换代;实现报告=design/qa/iter26-实现报告-2026-10-14.md。
- **迭代 26 待用户**:实机目检五项(07 ㉕,登记不阻塞)+代拍板追认单十三项(报告 §四)+GDD 反哺点四条(报告 §五/06 新条)。
- **迭代 25 交付**:全局主题 `game/assets/theme/main_theme.tres` 挂 `gui/theme/custom`(15 类型全覆盖+预盖 CheckBox/CheckButton/OptionButton/PopupMenu 弹层+`default_font` 中文字形防御);`tooltip_theme()`/`styled_slider()` 两处局部做法同批退役(settings_overlay 几何内联+debug_overlay 双轨消隐);冒烟 V1-V6 断言 38 条;06「UI 全局主题资源缺失」条移除+「UI 元素细节修」①销号;08 v1.3;07 ㉔;roadmap 行换代;实现报告=design/qa/iter25-实现报告-2026-10-13.md。
- **迭代 25 待用户**:实机目检全屏巡检+专项观察点二(07 ㉔,登记不阻塞)+代拍板追认单八项(位图不入 git 政策口径/CheckButton 词条名订正/Slider 无 pressed 槽等=报告 §四)+GDD 反哺点五条(报告 §五)。
- **现行文档事实源**:秘宝.md v2.9+奇物.md v3.16+天赋树.md v0.10+锻造工坊.md v0.8+元进度.md v1.20+术语表 v1.10+**08-Alpha版本标准 v1.4**。
- **各批残留人闸不变**:迭代 20 实机目检五件+V20/V21/V22 人工核对半;21 营地四柜台〔07 ⑳〕+22 秘宝解锁装配〔07 ㉑〕+23 锻造工作间〔07 ㉒〕+24 敌人表三观测〔07 ㉓〕+25 全屏巡检〔07 ㉔〕+**26 逐屏巡检〔07 ㉕〕**。
- **已裁在册**:M4 数值批顺延迭代 27+ 未排期(各批 provisional 终值归其统一标定)。
- **界面美化三层已登记**(85e2d2a/08 v1.1):第一层三条全部交付(全局主题=迭代 25;按钮状态矩阵+全局纹理过滤=迭代 26);第三层四件已交付(<4.5:1 换墨/光柱半/元素细节余项=迭代 26,氛围层九宫格半存续待素材核对);余第二层三件(贴图/字体/样张)+第三层其余(九宫格切片/棋盘观感)待立项。
## 项目当前位置(2026-10-12 刷新;实时细节以根目录 `roadmap.md` 与 06-待办清单 为准)
- **里程碑**:M3=Alpha 版本的完整实现(2026-10-09 立规:用户未明令宣布 M3 完成前停留 M3,迭代只排 M3 需求,M4 一律不排期)
- **迭代**:迭代 19 五卡已入库(2026-10-08);迭代 20 专长实装批已入库(2026-10-11 总收口);迭代 21 天赋树实装批已入库(2026-10-12);迭代 22 秘宝体系实现重构落地批已入库(2026-10-12);迭代 23 锻造工坊实装批已入库(2026-10-12);迭代 24 敌人表内容修批已入库(2026-10-13,单会话交付;迭代位预留追加卡);**迭代 25 UI 全局主题批已入库(2026-10-13,单会话交付)**;**迭代 26 UI 交互与观感批已入库(2026-10-14,单会话 /goal+iter U0 总收口,合并 c8c3db1;迭代位预留追加卡)**;M4=迭代 27+ 未排期
- **近期主战场**:迭代 20/21/22/23/24/25/26 七批残留人闸(实机目检:专长五件 / 营地四柜台〔07 ⑳〕/ 秘宝解锁-装配〔07 ㉑〕/ 锻造工坊工作间〔07 ㉒〕/ 敌人表三观测〔07 ㉓〕/ UI 全屏巡检〔07 ㉔〕/ **UI 逐屏巡检〔07 ㉕〕**)——各批追认单与反哺点全部出清;**下一前沿=待用户发令(迭代 26 位仍预留追加卡;M4 数值批殿后顺延 27+)**
- **更新于**:2026-10-15(迭代 28 与规则文件审计批均已入库;本节由 active.md 退役清理批换代,收口机制批 499 随本合并入库)。
- **最新闸态**:迭代 28 批末冒烟 1125/0、run_all 27 套、probe --click 残留 0、render golden 棋盘×3+菜单 0.00%、doc 三闸与熵增对基线零新增、static_scan S9 归零(S10 存量 125 在文件头清偿批在册);MC 零跑。
- **probe --full 曾有一件红**:`t17_defer_probe`「关卡画面未出现」,用户已裁为存量红、不阻合并(合并 5b958ff6);根因是探针未隔离带断点的真实存档,该修复已随 `gatefix-20261015` 合入 master(合并 de8d28b6)。
- **迭代 28 交付**:修好启动时菜单被冒险层盖住的装配顺序,层序收敛为唯一装配合同(散落的两处 `move_child` 删除);boot 链路、九阶段生命周期、启动态菜单 golden 三组验收补全;本批新立硬规则「验收函数无变异红记录不算验收成立」,三处规约落文。
- **迭代 27 交付**:三屏壳场景与局态物化、结算五段拆分、RunLedger 单类持四账、模态编排类、类型闸、死代码退役,编排器由 1725 行降到 1325 行。
- **规约体系现状**:规则文件按领域拆为 7 份、单文件上限 150 行,CLAUDE.md 只留元信息、命令、目录、规范导航与一行一条红线;动手前按规范导航表查对应细则。
- **人闸在册两件**:迭代 27 全流程走查〔07 ㉖〕与迭代 28 启动态菜单〔07 ㉗〕,均登记不阻塞;迭代 19~26 的目检已于 2026-10-14 全部核销。
- **簿记出清**:迭代 19~26 的代拍板追认单与 GDD 反哺点已全部裁决落文,对应 14 份迭代实现报告按「证据只留最新」删除(git 历史可考)。
- **已裁在册**:M4 数值批顺延迭代 29+ 未排期,各批 provisional 终值归其统一标定;迭代 27/28 位预留追加卡。
- **界面美化三层**:第一层三件全部交付;余第二层三件(贴图/字体/样张)与第三层其余(九宫格切片/棋盘观感)待立项。
## 未决面(进行中/待人闸/待裁点指针;现行事实源登记处=`design/gdd/06-待办清单.md`)
- 待用户裁决:美术审计两项 P0(art-bible 死样张指涉+主角像素管线重产;06 在册);去毒残留词扫否(魔法道具约 30 处/罕见约 18 处,呈报在案);喂雷流 R5 甲重启条件回落文(一句话件);「通关 vs 通过第 N 关」全库口径统一 273 处(待裁是否补登记 06);迭代 20 实机目检五件+V20/V21/V22 人工核对半(07 在册)
- 待发令:M4 数值批(迭代 27+,未排期——锻造工坊 provisional 终值/钥石产出重标/削弱档终值/元进度定价余面归其统一执行);迭代 26 迭代位预留追加卡(同迭代 24 先例,待用户编入)
- 进行中:黑话清扫第二波(GDD 正文流程动词族约三千处,随时可派)
- 待用户裁决(06 在册):迭代 27 GDD 反哺两条;迭代 28 GDD 反哺三条;美术审计两项 P0(art-bible 死样张指涉、主角像素管线重产);去毒残留词是否清扫(「魔法道具」约 30 处、「罕见」约 18 处);喂雷流 R5 甲重启条件回落文;「通关」与「通过第 N 关」全库口径统一(约 273 处)。
- 待用户追认:迭代 27 代拍板十五项、迭代 28 代拍板十三项(含四条白名单外),清单在两份现行实现报告的追认单节(`design/qa/iter27-实现报告-2026-10-14.md`、`design/qa/iter28-实现报告-2026-10-15.md`);req-card 技能的 WorkBuddy 与 ZCode 两份副本是否取齐待裁。
- 待发令:M4 数值批(迭代 29+);迭代 27/28 预留追加卡;黑话清扫第二波(GDD 正文流程动词族约三千处);规则文件编写 skill(按 497 批工作流提炼)。
- 在途分支未合入 master(读现状时勿当已入库):`doc-adr-fixes-20261014`(registry 改号与契约描述同步,领先 5 笔)、`art-standee-20261006`(artwork 独立仓 dry-run 报告+立绘定档,领先 5 笔)、`stc-norm-20261015`(GDD 用语规范批,领先 4 笔);`gatefix-20261015` 与 `ci-removal-20261015` 已合入 master。
- 在册观察(06 登记,非阻塞):迭代 27 卡片义务补登两项——长函数余量 17 个中的装配/校验函数、lambda 连接防回归。
## 状态记录(滚动窗口:仅当前迭代;退役规则见 doc-conventions §10)
- **479(2026-10-12,迭代 23 锻造工坊实装批开工)**:/goal+iter 技能调用=U0 开工令(用户目标=总收口全绿:冒烟/单测/探针/读数对拍四闸全过+实现报告落档)。开工检查全过:卡片 v1.2 零阻塞待裁点(Q1=0 级起步+锻造第一级=首个 +1 已裁;Q2=provisional 沿锚表投值已裁);V1-V14 验收清单三要素齐(V9 静态 grep 人工核对+V13 用户目检=纪律类人工项,余自动闸)。自洽扫描两处 L2 记录继续(不触红线):①卡片 F8「meta 域 13 件」清单滞后——现行实态 15 键(迭代 22 T2 同批新增 vision_used 未及登卡),对 forge_routes 新域零影响;②06 条目①「forge_products 两行改造」系 v0.5 旧文——设计 v0.6/卡片 F1 已订正为「行族已退役、新建行族」,卡片优先,T7 机械面同步时订正 06 措辞。事实抽查全符(F1 三处退役登记在册/F3 FORGE_ROUTE_BONUS 与 hero_override 在役行号漂移至 :155/:157/F5 两轴在役/F8 v6+_default_data 15 键/F9 forge_workshop 钥匙节点+营地占位面板接缝在册/F7 敌方轴未开)。T0 实查结案:①基线复读=冒烟 898/0+run_all 22 套全绿+probe_gate --click 全绿残留 0(存量 fx_reveal 已随 iter21 修复,零存量红);②buy_forge/forge_products 断言已随 iter21 T5 全摘(余件皆注释/退役登记——smoke:4398「MetaTable 行族规模 3/3/2」断言需随 T1 新行族换代);③hero 两轴读取面全清单=运行时独一处 unit_container.gd:64(db.hero 两轴快照)+冒烟断言 smoke_all.gd:1901(_db.hero.attack_type)+battle_orchestrator.gd:1410(消费 hero_unit 快照非表直读)+README 文档面,测试层零直读;④meta.tres 现役三行族+boss_keystone/conversion/attune_refresh_upgrade,FORGE_ATTRS 常驻;⑤树钥匙+占位面板接缝在册(camp_overlay_view.gd:275-284 钥匙门);⑥设计 v0.6 两节(裁决结果清单+工作间内容清单)复核无冲突。注入链已探明:main.build_adventure_params(:501)→ adventure params → _runner.set_* 族(:934-945 模式)→ level_runner enc(:480-494)→ begin_battle(battle_orchestrator.gd:344/:396 spawn)。代拍板立项(白名单内):新表 meta_forge.tres(ForgeTable:默认两轴+六路线行族,落位选型=新表,访问器连续性沿 treasure_items 先例);路线 id=sword/spear/staff/light/heavy/ward(甲路线 id=甲型值本身);存档域 forge_routes={levels 六键+unlocked 直购清单+weapon/armor 选中}(初始持有+练满前一档=派生解锁、直购=入档)。定义面已入库(b9cca33,卡片单笔);主区残留脏件全属他批遗产零碰(.zcode/active.md/锻造工坊.md v0.6 续裁行/playnote 等)。worktree g-plan2-iter23-forge 开工,T1 起。
- **496(2026-10-15,迭代 28 启动装配与生命周期验收补全批总收口)**:单会话交付七提交并合并 5b958ff6,冒烟 1086→1125/0(新增 42 条断言,退役 3 条把错误顺序写成期望值的裸下标断言)。四条结论:①启动装配顺序错误(菜单被冒险层盖住)已修,层序判定收进单一合同 `LAYER_CONTRACT`,散落的两处手工 `move_child` 删除;②boot 链路十断言与九阶段×五引用面生命周期矩阵入库;③渲染面补两件探针自检、墨色判据与启动态菜单 golden;④六次变异注入全部见红并精确还原,拦截能力已证。变异 3 顺带证明墨色占比判据自身不可靠——菜单被藏时底层棋盘仍给高反差像素,该强弱分层写进 code-conventions §3.6。批内类型闸自纠一笔(`main.gd:453` 缺元素类型,改 `Array[Variant]` 后 S9 归零)。存档面风险已核实:全部 worktree 共享同一份 `user://save.json`,定位过程中临时移开的真实档已逐字节校验还原。
- **478(2026-10-12,迭代 22 秘宝体系实现重构落地批总收口)**:T1-T7 八提交全量交付(worktree g-plan2-iter22-treasure;T1 12 行换代+schema 扩签/T2 解锁服务+工坊面退役+档位格约束/T3 效果引擎接入+扩签+常时参数面+试炼镐积点口+充能周期+修 use_treasure Rules.width 潜伏缺陷+新单测 treasure_effects_test/T4 呈现换代+呈现桥+HUD 兑换钮+修 BoardZoneView 缺转发挂死/T5 替换子交互拆除+库存保留注记+修 apply_node_curio 主体误删/T6 验收闸四断言+重闸/T7 文档四件+实现报告)。自洽扫描四处事实换代(卡片 F1/F2/F4 被迭代 20/21 推进)施工按现行实态。批末重闸全绿=冒烟 898/0+run_all 22 套+probe 含 click/full+render_gate golden 0.00%+doc 三闸对基线零新增+熵增 PASS;MC 零跑(零随机无概率面)。master 并行两笔(锻造 docs 6f56164)已并入分支解 roadmap 冲突(融合=我方 22 ✅ 行+23 锻造行+24+ M4 顺延行)。代拍板追认单十五条+GDD 反哺点七条待用户(design/qa/iter22-实现报告-2026-10-12.md);残留人闸=实机目检秘宝解锁-装配正常流程(07 ㉑)。
- **497(2026-10-15,规则文件审计与目录划分批收口)**:对照 Anthropic 与 OpenAI 七个真实仓库 40~330 行的实测密度重整规约——规则文件由 3 份 560 行拆为 7 份 543 行,单文件 150 行硬上限,CLAUDE.md 压到 68 行只留元信息、命令、目录划分、规范导航和一行一条红线;细则按领域归位到 process/test/doc/code/concept 五份规约,反面案例另存案例库不常驻加载。迭代 28 并行落文的变异验证硬规则按新结构重归位(细则在 test-conventions §6)。合并 81c0ee2b,worktree 与分支已清理。
- **477(2026-10-12,迭代 22 秘宝体系实现重构落地批开工)**:/goal+iter 技能调用=U0 开工令。开工检查全过:卡片 v1.3(C1-C6 全裁)零阻塞待裁点——三条回补待裁点按卡片自declared不阻塞口径处理:回补点 1 按推荐案执行(12 件全量落地、刷新练习归钥石购买=C1 普通档裁决直接应用)、回补点 2 已消解(迭代 20 已删 venom_edge/flag_burst,现行表 12 行旧件本批实删 12 行)、回补点 3 按「旧实现一律删除」既定纪律选拆除路线(treasure_inventory 拆除,追认单列明);V1-V19 验收清单三要素齐。自洽扫描四处事实换代(均系迭代 20/21 前置批推进、方向对本批有利):①现行表 12 行非 14 行;②attunement_growth.tres 谓词表已被迭代 21 删除、槽位判定源已切树点亮数(attunement.gd 现役 slots()=att_socket1..3)——卡片「谓词表槽位求值职责移除」已被迭代 21 完成、树接口接缝现成;③forge_products 行族已删;④V13 引用 smoke/tests 行号全漂移按内容定位。基线复读=冒烟 886/0+run_all 22 套+probe_gate --click 全绿(残留 0)。T0 四项核实结案:①X/Y 对表=临时账 X(_attune_refresh_x 每停点重置、装配集 bonus_refresh 行源——新 12 件无此行源恒 0 机制保留)+存量账 Y(_attune_refresh_y 升级行)+_refresh_stock(刷新练习件新加仓目标);扣序 X→Y→stock=先临时后存量与秘宝.md 一致;②magic_vs_magic 行已被迭代 20 删除(grep 零命中)——锻造工坊批③作废结案维持;③效果引擎扩签清单=订阅行现役词可承载(晨操令/双管装填=round_start+grant_ap+round_index 条件;试炼镐=dig_reveal 计数+use_treasure 受理闸与掘进蓄能同构现役);扩签三处=巢穴预告装板事件、天眼安全格开格 kind、真视使用计数键(UNLOCK_COUNTER_KEYS 扩签+存档生涯域新键);常时参数面五点已定位(_adjacent_to_hero 挖/旗两分支=远程镐/信标网络、finish_round_stop 1:1 转存=储备罐、shop_refresh_free_left=刷新执照、set_fog_lantern 半径面=阔视野带、_refresh_stock=刷新练习)——注入模式沿 fog_lantern 呈现桥与 attune_has 契约化先例;④真视使用计数接入点=use_treasure 受理成功处(battle_orchestrator:865-883);旧件硬编码一处在册(battle_orchestrator:882 dig_charge 随行换代)。定义面已入库(roadmap/06/卡片 v1.3 均在库零脏件);主区残留脏件全属他批遗产零碰。worktree g-plan2-iter22-treasure 开工,T1 起。
- **498(2026-10-15,active.md 退役清理批)**:按 doc-conventions §10 执行一次状态退役——删除迭代 20~27 的 31 条已完结条目(判据三条齐备:批次已入库、结论已进快照、未决项不指向条目;内容可在 git 历史完整复原),状态记录由 34 条降到 3 条,回到 30 条硬上限内。快照节原为 21 条且整块自我重复(两条「更新于」、两条「批末闸全绿」、两条逐字相同的「迭代 26 交付」),去重换代为 10 条。删掉「项目当前位置」整节——该节滞后于快照与 roadmap,里程碑归 `roadmap.md`、实时进度归快照节。未决面按迭代 27/28 现行待裁与待追认重列,并把三条在途未合入分支登记在册以免被当已入库。本批零代码、零其他文档改动。
- **469(2026-10-12,迭代 21 天赋树实装批开工)**:/goal+iter 技能调用=U0 开工令。开工检查全过:卡片 v1.7(73acee0 已入库)零阻塞待裁点——R1 按卡片既定默认=裁撤案执行(schema 只保留点亮前置),出口报告追认单列明;验收清单 V1-V23 三要素齐;自洽扫描 8 处事实抽查全符(33 行表/schema 词表/tree_buy 族/slots 谓词求值/存档 v6/_roll_gp_drop 挂点/:1116-1131 标错分支/结算=每轮末时序)。T0 四查结案:②聚乘算位=_roll_gp_drop() 返回表达式内(battle_orchestrator.gd:1461);③锋=mine_hit 现成挂点零改、守=_flag_miss_seen 去重闸后(:1119-1121)grant_ap mode:queue 下轮 notify_round_start 兑现,末轮判出无下一轮=契约 12 作废态自动成立;④锻造工坊 v0.5 两节读取完成——本批预留 0 锻造加值位与「4a 前缓后陡/6 满级特效留扩展位」零冲突、钥匙 free 无前置一致;⑤基线复读=冒烟 864/0 但 run_smoke 判 FAIL(SCRIPT ERROR 51 行:_flush_pending_reveals 三处 _emit_row("fx_reveal","",...) 空 source_class 触发 :1592 行来源断言——a57489e9 迭代20 T1 落地件存量红,两轮确定性复现,本批内顺手修复+实现报告单列)+run_all 21 套全绿+probe_gate --click 全绿残留 0。定义面已入库(并行会话 73acee0 含 roadmap/06/卡片 v1.7)。主区残留脏件全属他批遗产零碰(.zcode hook 三件/锻造工坊.md v0.5 未提交/playnote/四 untracked)。worktree g-plan2-iter21-tree 开工,T1 起。
- **470(2026-10-12,filter-repo 计划书裁决——明示放弃销号批)**:用户裁「.git 60MB 可接受,没必要清理」→ 三选裁**明示放弃**。06 条目移除(去向=本条,git 史留痕);active.md 未决面摘除该裁决项。计划书 `.zcode/plans/filter-repo-history-cleanup-plan-2026-10-02.md` 系 .zcode 未跟踪件、随裁作废但磁盘留存不删(永久删除不可逆;真要重启历史清理须重立计划)。零代码零他件触碰(worktree frdrop-20261012)。
- **471(2026-10-12,8a 连带 C/D 改名裁决 + 独立改名小批登记)**:用户最终命名——**C =「属性 + 祝福」**(局内商店货架三行 攻击锻升/生命锻升/护甲锻升 → **攻击祝福/生命祝福/护甲祝福**;后缀由用户自 D&D 调研候选选定〔Blessing〕,并裁定"参考书目有该词不构成禁用";调研要点:D&D 超自然赠礼分 Blessing 祝福〔永久·神赐〕/ Charm 护咒〔有时限·用完消失〕,按语义后者更贴局内临时层,用户仍取祝福);**D = 棋盘格 defense 正向行 + `ac_up` 状态的同名「护甲强化」→「盾牌加护」**(用户提案,理由=它是临时叠层状态、不是护甲本体;附带约定「加护=AC 判定层,护盾=保险丝那种吸收层,两者不得混用」)。机制分类名「属性值提升」保留不动,只换玩家向显示名。**执行面已核到行号**:C=`shop.tres` 六行(pool_shelf 现役 70/74/78 + products 遗留 38/45/52)——全库"锻升"命中恰此六行、`display_name` 非查找键(货架以 kind_id 为键,`config_db.gd:328`)、`smoke_all.gd:4415` 为"标签文本==表值"自洽式断言 ⇒ **C 零代码零测试连带**;**D 必须连带改 `smoke_all.gd:1199` 一条硬编码 `== "护甲强化"` 断言,否则冒烟红**(修正上一轮"C/D 皆零连带"的判断)。**按本会话"禁动 game/ 代码与数据表"纪律未代执行**——06 新增「玩家向显示名改名小批」条目,内附逐行替换表 + 近义词占用登记(石肤已被奇物占用)。落文:锻造工坊.md(边界节 + v0.5 版本行⑥)、06 新条目;启动=用户发令或并入锻造工坊实装批。附:本会话早先写入的 468/469 两条已被并行会话的"状态记录清理批"清档(完结条目清理,符合 §10),本条为补登。
- **472(2026-10-12,奇物呈现条过期检查批——档位三路消解+僵尸呈现定性,条目换代不删除)**:用户令检查 2026-10-04「奇物呈现三处违规+档位三路」条是否过期。取证结论三条:①**档位三路裁点被事件超越**——丙(机制退役)经重设计路线实现(奇物.md v2.9+追认单术语澄清「流派标签作玩法机制作废」+迭代 20 `battle_orchestrator.gd:330` rider_tier 注入拆除),甲/乙不再待裁;②**三处违规未消解且恶化=僵尸呈现**——迭代 20 零触碰四个呈现文件(git 末次 10-05~07),新 29 行无 archetype 字段 ⇒ C 区/关卡页实显「流派 ×N · 档一」兜底行(`hud_presenter.gd:111`+`feats_engine.gd:13`)、卡面「件名 · 流派」(`battle_narrator.gd:146-149`),违反 10-12 重申对外永不显示铁律+展示已退役机制;③条目换代不删除(迭代 20 反哺点⑤明文指向本条,删则指针悬空),剩余裁决面=呈现改法与反哺点⑤同面。连带发现(本批只记录不处置):迭代 20 实现报告 §四.5/§五.5「逐件行降级态在役」与代码实态不符,失真处置待用户裁。**编号注记:471 已被并行锻造会话(主区脏件)占用,本条顺延 472。**06 条状态换代(worktree curiopres-20261012)。
- **472(2026-10-12,C/D 改名小批——C 已执行,D 阻塞)**:用户授权边界澄清=**可改配置(.tres)、禁改代码(.gd)**。据此执行 **C**:`shop.tres` 六行 display_name 全量替换——pool_shelf 现役 70/74/78 + products 遗留 38/45/52,攻击锻升/生命锻升/护甲锻升 → **攻击祝福/生命祝福/护甲祝福**;校验=全库"锻升"命中归零、行数与括号结构零变化、**零代码零测试连带**(display_name 非查找键,`smoke_all.gd:4415` 为自洽式断言)。**D 未执行**:`reward.tres:22` 与 `status_effects.tres:18` 属配置可改,但 `reward.tres` 改名会立刻使 `smoke_all.gd:1199` 硬编码断言(`== "护甲强化"`)**判红**,而该文件是代码、未经授权;只改 status 一侧会造成格子/状态两处不同名,不采纳 → D 整项挂起,待可改 .gd 的批次同批执行(06 在册,附逐行替换表)。落文:06 改名小批条更新(C 标已执行、D 标阻塞原因)、锻造工坊.md 边界节。→ **接续指针:用户追加授权("可以简单地修改……一并改完")后 D 已于同日解阻执行并合入 master,残留肃清同批完成,详见 474;本条「D 阻塞」状态已时过境迁。另:本条与上方奇物呈现批重号 472(并行会话撞号),474 为续篇。**
- **473(2026-10-12,迭代 20 报告失真勘误批——「逐件行降级态」失真五处换代)**:用户裁先修报告失真(与僵尸呈现分案——前者文档缺陷、后者代码缺陷,互不替代)。失真源=迭代 20 实现报告 §四.5「流派聚合行退役→逐件行降级态在役」与代码不符(逐件行未实装,472 已取证),扩散四处:报告 §五.5 目检项、07-体验验证清单 HUD 条、06 反哺点条⑤、game/README.md 换代面段。五处全部勘误换代(带日期勘误标记;目检项 5 改验僵尸呈现实况=修复批前对照取证,人闸「五件」计数不变);零代码零他件触碰,僵尸呈现修复仍待呈现改法裁决(06 奇物呈现条)。(worktree repfix-20261012)
- **474(2026-10-12,C/D 改名小批执行+合入+残留肃清——worktree 两连批)**:用户追加授权("可以简单地修改(smoke_all.gd 那一行断言),一并改完吧。但是注意我们的合入规则")后,C/D 同批走 worktree 执行。**主批**(分支 rename-blessing-20261012,基于 master 18b6cbd):`shop.tres` 六行 display_name 锻升→祝福(pool_shelf 现役 70/74/78 + products 遗留 38/45/52);`reward.tres:22` / `status_effects.tres:18` 护甲强化→盾牌加护;`smoke_all.gd:1199` 硬编码断言同步(不改则冒烟红)。冒烟 864 项检查 0 项失败(FAIL 仅存量 fx_reveal SCRIPT ERROR——a57489e9 遗留、iter21 在册,与本批无关;已核 `_smoke_ac_swap_guard()` 调用先于 `_smoke_save()`,存量错误不吞本批断言)。`--no-ff` 合入 master `0c93a71`(ort 零冲突;主区脏件全为文档侧,与分支 game/ 四文件零重叠)。**残留肃清批**(分支 blessing-residue-sweep-20261012,基于合入后 master):合入后全库复扫发现主改名未覆盖注记段 4 处——`reward.tres:219` / `status_effects.tres:99` 历史注记、`defense_scan.gd:24/:35` 打印标题与注释,更新为现名「盾牌加护」并括注"2026-10-12 由'护甲强化'改名"(历史动作部分保留);冒烟 864/0 → 合入 `0144f60`。**game/ 全库现役旧名归零**(仅存两处为有意留痕括注)。worktree 与三分支已清理(`git worktree remove --force` + `branch -d/-D`)。**文档跟随**:地图战斗资源.md v0.23 版本行(九型字典表+设计意图句)、art-bible.md §4.6.1/§4.6.2 键名列(契约句"随其修订自动跟随")、07 体验验证清单⑫目检行。**06 条目收口**:改名小批状态「已完成」,registry entities.yaml 登记「祝福」条目/旧名退役**未执行**——归锻造工坊实装批术语登记面(迁移面八项⑦同域)。**编号注记:473 已被并行会话(迭代 20 报告失真勘误批)占用,本条顺延 474;472 撞号(并行会话同写)已在彼条加接续指针。**
- **475(2026-10-12,奇物呈现修复批——僵尸呈现整改落地,呈现改法=甲逐件行)**:用户令「解决呈现问题」,按呈报推荐案甲落地(改乙/丙一句话另调)。代码两文件:`hud_presenter.gd` feat_holdings_lines 聚合行(新 29 行无 archetype 下空键兜底「流派 ×N · 档一」僵尸文案)→ 逐件行「件名 ×N」;`battle_narrator.gd` feat_card_text 摘「件名 · 流派」族名行(卡片=件名+效果摘要两行,兑付反馈行随之「件名 · 摘要」)+payload 死键 archetype 摘除;注释面五处换代(hud_presenter/hero_info_panel_view/level_map_screen)。断言面预查:smoke:982 只钉 desc 零族名断言,免改。文档同步:battle.md C 区两行(归 06 指针摘除改已整改事实)/07 HUD 条(验修复后逐件行)/报告 §五.5(同)/README 段(473 勘误句再换代为已修复)/06 奇物呈现条**收口移除**(三处违规+档位三路+呈现改法三面全清,去向=本条+git)/反哺点⑤✅销账(①-⑤全出清;反哺点条与追认单条随下次收口清理批一并移除)。FeatsEngine.tiers_for 呈现侧调用摘除后全仓零调用方(引擎库保留不动)。(worktree presentfix-20261012;**编号注记:474 已被并行改名批占用,本条顺延 475**)
- **481(2026-10-12,迭代 23 锻造工坊实装批总收口〔编号顺延——480 已被并行 06 清理批占用,主区未提交遗产撞号注记〕)**:T0-T7 八提交全量交付(worktree g-plan2-iter23-forge;T1 行族 df666dd/T2 两轴移交 00d98b6/T5 存档 v7 6def354〔序调先行——写口硬依赖〕/T3 写口族 a6270ba/T4 注入链 ed06292/T6 工作间 UI 2915f19/T7 收口笔)。T1 新表 forge.tres(ForgeTable 默认两轴+六路线行族,ConfigDB forge_* 六访问器)+单测 41 断言;T2 hero.tres 两字段删除+spawn 注入缝(空串=锻造配置默认值回退,行为逐位连续);T5 SAVE_FORMAT_VERSION 6→7+forge_routes 域{levels/unlocked/weapon/armor}(无特效域)+v6→v7 空迁移缺键补齐=初始持有态;T3 写口族(forge_buy_level 几何价 20/30/45/67/101/forge_buy_unlock 一次性 200/forge_select_* 免费/forge_route_unlocked 派生单点);T4 hero_override 公式换代(FORGE_ROUTE_BONUS 退役)+build_adventure_params 两键+参数面快照锁死+effective_ac 三层(甲型基础 AC+路线加值+局内)+enc→spawn 末端;T6 占位面板→两区六路线行板+三意图信号+presenter 处理器+新单测 12 断言。验证:冒烟 938/0(基线 898+40 锻造断言)+run_all 24 套+probe --click/--full 全绿残留 0+render_gate golden 0.00%+doc 三闸/熵增对基线零新增(3 个 gdd_lint 存量红同款;master 第 10 个扫描文件=并行会话未跟踪件 08-Alpha版本标准.md,禁碰);**MC 同种子配对 80 局逐位零漂移**(na=40 seed0=9000 双画像:normal 0/40↔0/40、perfect 28/40↔28/40)+方向性补充(锻造满配档 atk+5/ac+5 同种子 30/80 局结局差:perfect 28→33/40)——默认态行为连续铁证+注入面生效证据。机械面文档七件同步(roadmap/entities.yaml 回填实态/06 状态+①② v0.6 措辞订正/存档序列化 v1.7/07 ㉒+game/README 批次段);实现报告=design/qa/iter23-实现报告-2026-10-12.md(代拍板追认单九条+GDD 反哺点三条待用户);残留人闸=实机目检工作间形态与购买交互(07 ㉒)。环境注记:render_gate 需 gamedev venv(PIL)。
- **476(2026-10-12,迭代 21 天赋树实装批总收口〔编号顺延——470-475 系并行批次占用,471/472 并行撞号已在彼条注记〕)**:T1-T7 全量交付(worktree g-plan2-iter21-tree 基于开工批 43f7230;master 并行十八笔已并入分支解 active 冲突后回合)。T1 schema 换代(FORK_GROUPS 4→3/RULE_KEYS 2→6/fork 单行双态 effects_a·b/row 退役门槛换轴/R1 裁撤案执行)+33→12 行重排(easter 摘攻防=契约 9);T2 购买面(easter 拒购/Fork 解锁默认 A/零币切态/彩蛋特化判定);T3 六键接线(EVENTS+flag_missed/FACTS+battle_index=L2 扩签两处/posture 每关首轮窗/sense 限次 counter 闸 domain:adventure 按关重置/守侧去重闸后发射=契约12/聚入账前×1.5/散双计价点×80%——数值全 provisional 归 M4);T4 注入换代(树淬炼 flat+锻造加值位预留 0/槽位判定源切树点亮数/ks_refresh 同账路由);T5 删除批(migrate_tree/buy_forge 家族/forge_products 行族/forge_levels 域/attunement_growth 谓词表/生涯三投影全删;tree_struct=2 标记废弃重置禁迁移);T6 四柜台并排(树=主界面/两钥匙门+零交互占位面板/图鉴常开/暂停层锻造段连带删)。存量红修复=fx_reveal 三处空 source_class(a57489e9 落地件,基线 51 行脚本错误清零——474 条 FAIL 注记随之销账)。验证:冒烟 886/0(V1-V10/V16 断言随批)+run_all 22 套(新增 V11 六键闭集单测)+probe --click --full 八探针全绿+render_gate golden 0.00%+doc 三闸/熵增闸对基线零新增(worktree 缺 ignored 素材两坑照 463 先例拷 artwork+game/assets/art 后绿)+V19 MC 三组同种子配对×60 局 perfect+max 档全部 61.7%、配对差 0.0pp 在带(normal 档基率地板读数换档记验证记录);守侧五场景=编排 rig 直注+引擎直构双承载。追认单十二条+反哺点六条+欠账三条落实现报告 design/qa/iter21-实现报告-2026-10-12.md 待用户;残留人闸=实机目检四柜台(V22)。
- **477(2026-10-12,迭代 22 秘宝批裁决与落文会话——A 单十五条收口+B 单七条反哺落文+⑤改自动兑付)**:裁决会话逐点呈报、用户逐条裁。**A 单**(实现报告 §二):①②③⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮ 追认;④ 追认+积点账生命周期裁**战斗级**(设计留白补记秘宝.md 代价轴);⑤ **推翻·改自动兑付**(用户裁:满 8 安全格自动当轮 AP+1 无玩家入口;进度显示落位=C 区秘宝槽悬停浮窗〔用户点名〕);⑮ 附报告提交号勘正(master 实际 T5=73db171,原记 7095505 系 amend 前被弃旧提交——merge-base 取证)。卡片 §11 三条回补待裁点随①②③收口。**⑤代码批**(worktree iter22-ruling 基点 79aac07,合入 8455b4a):兑付迁移 `_on_cell_revealed` 揭示缓冲点(cell_revealed 批先于本格扣费→AP 归零恰逢满点先兑再扣、轮不结束——用户时序规格);兑换钮整链退役(ap_bar/board_zone/main);use_attune_convert 消解+attune_convert_state 改进度读数口;use_treasure 积点死分支与 _usable_now 死条件删;tres desc 换代+受理闸删;单测④段重写;07㉑ 观测点换代。**B 单七条全落文**(用户逐点裁「落文」):秘宝.md v3.0(目录三表实态列/试炼镐自动兑付/代价轴战斗级重置+兑付时序/解锁条件实录/落地前句全换代)/元进度.md v1.17/camp.md v1.3(柜台呈现细则+暂停层 12 行)/存档序列化.md v1.6(vision_used 域+断点随件+bonus_aux_carry 退役)/行动经济.md v0.12(转存率参数化)/术语表 v1.2(自动兑付+真视使用计数两词条)。报告修正(提交号+十五条裁决标注+反哺已落文标注)+06 迭代 22 条收口(裁决小节落 06)。验证:冒烟 898/0+单测 22 套+probe_gate --click/--full 全绿(worktree 拷 .godot/字体与图标边车/assets/art 三坑照 463/476 先例)+合并后 master 冒烟 898/0 兜底;worktree 与分支已清理。残留人闸=07㉑ 实机目检(观测点已换代)。裁决依据文件=.zcode/plans/裁决记录-迭代22秘宝批追认与修改清单-2026-10-12.md。
- **478(2026-10-12,迭代 22 反哺⑤呈现集成补丁——用户令「忽略真人目检,查还有无需要修复」的主动排查产出)**:排查抓出追认批一个真缺陷+漏闸三件。**缺陷**:charges=0 件被 `_reseed_attune_charges` 注入循环跳过〔不入骑库存〕而 C 区槽投影遍历骑库存→试炼镐 C 区不可见、悬停浮窗进度无处承载(单测只测读数口未覆盖投影链、探针无此断言=两闸双盲区)。修复=C 区投影末段追加自动兑付件展示行(合成 handle=-1 非库存句柄+note 积点 N/8+槽点击走说明 toast 不进两步交互;四槽容量实证够用=装配≤3+展示行 1);孤儿函数头注释清一;单测新增④b 两条(装配即入投影/开格后进度刷新)+StubAutoInvRunner 桩。**漏闸补跑**:render_gate(golden 3 屏 0.00% 全绿——golden 锚棋盘区域与 HUD 无涉)+doc 三闸(死链 3/拔旗 1/gdd_lint 三文件表格占比 FAIL 全部实证存量——79aac07 版本逐文件表格行对比零变化)+熵增闸 PASS。(worktree iter22-fix 基点 8455b4a;过程事故一笔=cff741e 首提交误入 .lintbase 临时对比目录,amend 剔除后干净;合入 0ef73d0,worktree 与分支已清理)。闸读数:冒烟 898/0+单测 22 套+probe --full+render_gate+doc 三闸+熵增闸全绿。
- **480(2026-10-13,06 待办清单清理批——A类六条+B类四条销号+天赋树欠账三条拆专条)**:用户令「A类已完成即清除+B类逐条核实是否还需开发」。A类六条移除(全部实证已了结):迭代22追认单十五条+反哺七条(8455b4a/0ef73d0 已入库)/迭代20反哺五条(①-⑤全出清)/迭代20追认十条(落文奇物v3.16)/生命比例扩签(hp_ratio 已销号原条未删,本次物理移除)/active.md定性大裁(已入库)/秘宝体系实现重构落地批(迭代22入库,人闸目检07㉑按「登记不阻塞」规归07)。B类四条核实完成移除:X/Y语义倒置(消耗序X临时→Y→stock存量=先临时后存量,adventure_runner.gd:680-689 注释在案+iter22 T0「X/Y对表」结案)/魔法提灯(拆线随iter22 T1入库;board_view._fog_lantern 残留名已换代为阔视野带通用视野加成非提灯遗留)/冒险BD渠道分工(Boss直接给专长随iter20落地+heal/feat_ticket 行在 shop.tres 货架六行+档位阈值复裁与charge标签缺陷随流派标签集件档位 v2.9 框架级作废失效〔奇物.md v3.8①⑥〕)/资源两新种类(刷新练习/刷新券在秘宝12件表+凭证在货架,边界经三账实现落定)。B5天赋树批条销号(iter21 入库)但欠账三条代码复核全部仍在→拆专条「天赋树实装批登记欠账三条」:①AP上限clamp缺位(action_economy.gd:254 仅 maxi(0,..) 下限实证);②三选一刷新软上限(原「另立待办」从未成条,本批首次落位成条);③Y不入断点存档=可利用漏洞仍在(断点存 refresh_stock :236 不存 Y 余量、续玩 :225 自参数面整额重注入=用完退菜单再续玩满血复活)。①③待缺陷修批、②待调参批,均未排批。执行=worktree todocleanup-20261013(主区直改被守卫拦截;主区脏件 cp 随批保史=并行 playnote 五条 +70 行)→ 6406d16 → --no-ff 合回 master;doc 三闸对基线零新增(死链3/拔旗1/gdd_lint 3件FAIL均存量);零游戏文件零数值。
- **481(2026-10-13,天赋树欠账三条裁决落文+③Y断点存档缺陷修批——C类14条用户令暂不做任何动作)**:两连批。**落裁批**(770fa56→663c0bf):用户逐件裁——①AP clamp 暂不设上限(provisional 天花板亦不投)随 M4 数值批;②刷新软上限维持现状归 M4;③Y 断点存档须修(06 专条状态行换代记账条)。**修批**(用户令「C类先不做,把还没修的 bug 修了,按正常流程走」提前单独开修;worktree ybpfix-20261013 基于含并行 iter23 的最新 master,缓存三件套照 463/476 先例拷 .godot+import边车+assets/art):adventure_runner 两处=断点字典扩列 "attune_refresh_y"+resume_adventure 优先读断点(缺键回退参数面=旧档零变化,堵「用完 Y 退菜单再续玩满血复活」可利用漏洞);curio_refresh_paid_test 新增⑥段两断言(余量随断点还原/旧档回退);文档三件随批=存档序列化.md v1.8(断点随件扩列 v7 域后不升版,v1.6 先例同款)/冒险结构.md v0.21(附随件清单扩 Y 随件——注:清单内 iter20/22 的 refresh_stock/battery_pending/feat_ticket_pity/adventure_counters/vision_counter_used 五键历史缺登,本批不做加法只登本件,缺口在案)/06 专条③销号转记账条。闸=基线冒烟 938/0+单测 24 套全绿→改后同绿(含新⑥段)+doc 三闸对基线零新增(worktree 扫描集曾缺未跟踪五文档致读数漂移,cp 补齐后对齐=死链3/lint 3件FAIL均存量);8e04807→--no-ff 合回 master e0d931d,合并后主区冒烟复跑 938/0。worktree 与分支已清理。
- **482(2026-10-13,迭代 23 收尾批——追认单九项全追认+GDD 反哺三条落文+祝福 registry 漏项补登)**:用户令「追认清单目前看都没有问题;文档反哺点需要你在这里进行更新」。**追认**:报告 §四九项全数追认通过(报告头部标注收口)。**反哺三条落文**(报告 §五标注去向):锻造工坊.md **v0.7**=①Q1「0 级=未练合法态」正文两处衔接(三件武器节+工作间内容清单·4)②效果类型闭集 24→**31** 两处订正(满级特效扩展位节+现役代码事实表,原记系 2026-10-07 旧快照=迭代20 T1 +7、迭代22 T3 +1,冒烟断言钉 31)③实装边界 1 实态回填(forge.tres/路线 id 六个/字段闭集 12/ConfigDB.forge_* 访问器);元进度.md **v1.18**=①「跨局注入」节补 effective_ac 第一层终态句(甲型基础 AC=选中甲路线行 base_ac:轻10/重12/魔法护甲9 provisional)②属性锻造段落代(「待用户发令」过期态→已随迭代 23 入库)+登记钥石入口族三写口(forge_buy_level/forge_buy_unlock/forge_select_*,buy_forge 退役后新族);术语表.md **v1.9**=锻造工坊节新增「路线 id/存档域键名」词条(sword/spear/staff/light/heavy/ward+forge_routes 四键,实现层词汇非玩家可见——报告 §五③「若需登记补登待裁」经本令解为登记)。**漏项补登(核对时抓出,06 改名小批条配套文档面②③「归锻造实装批一并做」但迭代 23 T7 未做)**:entities.yaml terminology 补「攻击祝福/生命祝福/护甲祝福」词条(旧名「X锻升」退役留检索别名)+「石肤(近义词占用)」备忘词条。**06 两处换代**:锻造实装批条状态行补收尾段(追认+反哺落文,本条义务全清);改名小批条配套文档面②③标已执行。**active.md 同批**:删除并行合并产生的重复 479 开工条(同号双版本 union 遗留,保留 forge.tres 命名版)+快照/当前位置换代。主区脏件保史随批=锻造工坊.md v0.6 续裁行⑤⑥(Q1/Q2 落文,4b 批遗产)。零代码零数值零游戏文件。(worktree rulingfeed-20261013)
- **483(2026-10-13,术语表「道具」统称登记微批)**:用户立内部用语习惯落文=**道具=秘宝/奇物/地图战斗资源三类的内部开发统称**(单独说「道具」即指三类全体或其中任一,靠上下文分辨;组合用法=秘宝道具/奇物道具/专长道具/战斗资源道具),仅限开发内部交流、玩家可见面用各类正式名称;同批补登「地图战斗资源」词条(原「奖励道具经济」2026-09-16 更名后一直未入表)。术语表升 **v1.10**,快照事实源行随换代;UI 美化批快照残留行(85e2d2a 批留盘)随本批 sweep 入库。零代码零数值零游戏文件。(worktree term-item-20261013)
- **484(2026-10-13,状态面板改名批+迭代 21 GDD 反哺六条落文两连批)**:用户令「①状态 ②全套;反哺六条按呈报落文;两任务一起做完汇报」。**批一改名**(c5a09fd,用户令「暂停层/暂停角标→状态面板/状态角标」——用户 prompt 全量任务书):文案 4 处(浮层标题/两屏角标/关闭钮 tooltip 按用户句式;副提示原文无暂停字眼零动)+标识符全套(PauseOverlay→StatusPanel/pause_overlay.gd→status_panel.gd/成员方法族 _open_status_panel 等+探针快照键 status_title/_snap("status"))+game/ 内注释与探针消息 86 处清零(参照语括注来历放文档面,代码 rg 归零);行为契约四件零动(只读 R4/模态遮罩 P2 甲/输入锁 R3/零动效 P4 甲)。**连带抓漏**:tools/render_gate.sh 截图键 shot_pause→shot_status(首跑 render_gate 红一根因=此,同步后绿);.godot 类缓存含旧类名(worktree cp 缓存 Parse Error——sed 缓存修,主区合并后同法刷新)。**文档六面**:元进度 v1.19(解锁界面节+改名括注)/07/生涯/06 条(状态面板条目换代+改名批机检注)/architecture json+html(暂停浮层→状态面板);camp.md 零命中;**08-Alpha版本标准.md untracked 禁碰留置**(内含暂停字样归该批)。html 残留「暂停」皆 archify 查看器自身播放控制文案非游戏面,保留。**批二反哺六条**(c767174,用户裁「按你的来回写」):天赋树.md **v0.9**(①实装落地态七处换代〔状态行/范围表/总表前言与三行/schema 连带/依赖表/P0 段/验收实态注——「实装未落、现役 33 节点」过渡态终结〕③设计避让句按卡片 v1.7 ⑪②裁决改写为折扣定义边界(散=只覆盖商品购买价,键 gp_cost_mult)⑥机检读数+命中线契约 6 括注+已建未接面节换代〔两接一维持:槽位判定源已切树点亮数/刷新同账路由/命中线纪律维持〕);元进度.md **v1.20**(②营地统一段落地终态);锻造工坊.md **v0.8**(④树侧钥匙句 forge_workshop 在役、死指针终结);HUD框架.md **v0.17**(⑤新增营地四柜台并排小节=登记缺口补齐)。**闸**:批一四件=冒烟 938/0+run_all 24 套+probe --click/--full+render_gate 全绿(golden 0.00%);批二 doc 三闸对基线零新增(死链 3 逐条存量/term 5 组一致/lint 3 存量同款;worktree 缺 untracked 五文档致首跑漂移 9 链,主区绝对路径 cp 后对齐)+熵增 PASS;合并后主区冒烟兜底 938/0。合并=7d1e9cb(基点含并行术语表 v1.10 微批 187632f,ort 零冲突)。worktree 与分支已清理。**悬置**:A 组 #1(R1:a 维持裁撤/b 推翻补 requires_level 机制位——用户追问中)与 #10(状态面板改名已落地;暂停层锻造段删除异议本身待用户思考结论)。(worktree statuspanel-20261013;登记顺延 484——483 系并行术语表微批占用)
- **485(2026-10-13,R1 机制位批——requires_level 等级阈值前置随批重立)**:用户对迭代 21 追认单 #1 裁「b) 推翻,补机制位小批」并令当场做(不占迭代号——用户令小批模式)。落地=卡片 v1.7 留任案形态:meta_tree_table.gd KEY_WHITELIST+requires_level 字段(Dictionary{node_id: n})+validate 三拒(键悬空/阈值<1/类型错);meta_progression.gd tree_can_buy 等级阈值判定分支+tree_gate_text 门槛文案+tree_camp_rows 投影行 gate_text;camp_overlay_view.gd 行板未达标 🔒 标+悬停文案;新单测 tree_requires_level_test 八断言(schema 四拒一过+判定三态+投影两态——首跑抓出测试自身时序 bug〔零配置行断言跑在 cap 满状态后〕重排修正)入 run_all(24→25 套);现役 12 行零配置=机制位空转零行为影响(配置归表行随需填)。闸=冒烟 938/0+run_all 25 套+probe --click/--full+render_gate 全绿(零漂移;MC 豁免=零数值零行为)+doc 三闸对基线零新增+熵增 PASS。文档=天赋树.md v0.10(六处 R1 表述换代:状态行/范围表/schema 连带/购买校验③/调参表/验收前置行)+iter21 报告 §四 #1 推翻标注+§八兑现注。合并 29b08d4(基点含并行 UI 主题卡片批 89b0008);主区 run_all 25 套兜底绿;worktree 与分支已清理。**迭代 21 追认单终态:十二条全收口**(十条追认+#1 推翻重立+#4 追认带意向);悬置仅剩 #10 锻造段异议结论(状态面板改名已落地)。(worktree r1mech-20261013;编号顺延 485——483 系并行术语表微批、484 系本会话改名批登记)
- **486(2026-10-13,迭代 21 追认单终清——#10 裁维持现状)**:用户裁「维持现状就行了,到时候效果有问题,我再让你做对应的优化更改。现在不用动」——状态面板不补锻造概览(原属性锻造三行的信息缺口:锻造工坊武器/护甲路线等级面板不可见,用户知悉并接受,将来实际游玩效果有问题时按需提优化)。iter21 报告 §四 #10 标注追认结果收口。**至此迭代 21 待用户事项全部出清**(追认单十二条+反哺六条+欠账三条全链闭环);各批(20/21/22/23)追认与反哺全部出清,项目待用户面仅剩四批实机目检人闸+存量未决面(美术 P0 两项/去毒残留词/喂雷流 R5/通关口径 273 处)。快照/主战场换代。零代码零游戏文件。(worktree log486-20261013;编号顺延 486)
- **487(2026-10-13,迭代 24 敌人表内容修批(三关)开工——U0 单会话交付)**:定义入库 0c083bb(主区守卫拦 commit 坑再证——b89c3fe worktree 提交 --no-ff 合回舞步);开工门=需求卡片 v1.1 零待裁点(Q1-Q9 全裁用户令「按推荐方式」)。基线复读:冒烟 938/0 + run_all **25 套**(卡片/roadmap 记 24 系 485 R1 批加套前旧基线,随批换代呈报)+ probe --click 全绿;改前 MC 锚落盘 sim-data/runsum_iter24_pre_n40both_20261013.jsonl(二档 N=20×both·seed0=9000 沿用迭代 23 配对种子:normal L1 通关 3/20·taken 中位 29.5;perfect L1 19/20·L2 8/20·全通 6/20·taken 中位 76.5)。T1 N1 落地=enemy.tres (1,2) hp 50→22·ac 3→2+表尾批注(阶名化解方案实机未达预期重裁沿革)+V1 两断言(降档锚定+相邻总量比≤2.5 护栏);T2 N2 落地=skills.tres 12→14 行(venom_spit 毒吐 ×1.6/CD2·shield_bash 盾击 ×1.7/CD3 均无 rider)+六池投放(蜘蛛 (2,5)-(2,7)+毒吐 2、灰矮人 (3,0)/(3,5)/(3,7)+盾击 2、首遇位 (2,4) 不动)+expect_pools 六键同步+旧「技能表十二行」断言换代十四行+V3/V4 五断言(两行字段域/两投放面/逐池增益妨害纪律)。冒烟 945/0+probe 全绿。T3 N3 进行中。(worktree g-plan2-iter24-enemy)
- **488(2026-10-13,迭代 24 敌人表内容修批(三关)总收口——单会话 /goal+iter U0 全量交付)**:三提交全量入库(worktree g-plan2-iter24-enemy;26d669f N1+N2 / ab3ba4f N3 / 5f2ef77 文档同步面+收口笔)。**N1**:enemy.tres (1,2) hp 50→22·ac 3→2(敌种 bugbear/池/数量/atk 零动;表尾批注载 2026-09-24 阶名化解方案实机未达预期重裁沿革)+V1 两断言(锚定+相邻总量比≤2.5 护栏)。**N2**:skills.tres 12→14 行(venom_spit 毒吐 ×1.6/CD2、shield_bash 盾击 ×1.7/CD3 均无 rider——damage_floor 兜底与 0.75 档等效)+六池投放(蜘蛛 (2,5)-(2,7)/灰矮人 (3,0)(3,5)(3,7);首遇位 (2,4) 不动)+expect_pools 六键同步+旧「十二行」断言换代+V3/V4 五断言。**N3**:20 行 attack_type 全填 normal+enemy_table ATTACK_TYPES 枚举校验(缺省 normal 向后兼容)+unit_container 敌方快照+battle_orchestrator 开单第 9 参传值+**damage_controller._resolve_enemy_skill 克制消费点补一行**(卡片 §2 事实漏项——敌方兑付路径原硬编码 delta 0,2026-09-24 批注释在案;不改则 V5 矩阵命中证词物理不可达,属验收闸强制最小补点待用户追认=报告 §四#6)+单据载荷 attack_type 键+V5 四断言(矩阵证词同种子三甲型实测 heavy 2==light 3−1·ward 4==light 3+1)。**读数**:MC 同种子配对 seed0=9000 N=20×both 改前/改后各 40 局(锚落 sim-data/runsum_iter24_{pre,post}_n40both_20261013.jsonl);三组读数=N1 perfect L1 19→20/20、N2 perfect L2 8→13/20 全通 6→10/20(方向符合预期低于二档判读带,L2 记录不回调,倍率归 M4)、N3 单发恒 ±1(V5 钉死)全局中位位移系构成效应;二档会话累计 ~8 分钟。**文档同步面**:06 三条销号(第一关遭遇表数值异常/第二关技能池与投放/锻造迁移面⑥)+卡片条收口+反哺点五条专条;08 敌种池行注摘除升 v1.2(untracked 件随批转正入库);07 ㉓ 三目检登记;registry 三处(enemy.attack_type 字段/skill 十四行/hero 甲轴休眠注退役);Alpha未完成事项梳理三注订正(A2 已修+附.3 缺行疑云解销=L2/L3 缺 2/3/8 系奖励/休整/商店节正常缺省)。**闸**:冒烟 949/0+run_all 25 套+probe click/full+render_gate golden 0.00%(首跑 SKIP 抓出 worktree 漏拷 art 实体——初拷链因 .godot 路径错误短路,补拷后全绿)+doc 三闸/熵增对基线零新增(死链3/拔旗1/雾格1/lint 3件FAIL 均存量)。**待用户**:实机目检三观测(07 ㉓,登记不阻塞)+追认单三项(消费点补行/旧断言换代/两 untracked 件转正)+GDD 反哺五条。基线漂移记档=run_all 24→25(485 批)。合并=321e6c9(roadmap 与并行迭代 25 编入批 7e0f519d union 解——迭代 24 行已入库门列+迭代 25 UI 批行+26+ M4 行并存);合并后主区 --import 重刷+冒烟 949/0+run_all 25 套+probe --click 兜底绿。(worktree g-plan2-iter24-enemy;编号顺延 488——487 系本会话开工条)
- **489(2026-10-13,迭代 25 UI 全局主题批开工——/goal+iter U0)**:开工检查全过:需求卡片 v1.2 零待裁点(三范围裁点+三 grilling 裁点+同日审核六点全落文);验收清单 V1-V6 三要素齐(V1-V6 自动闸机+V6 中文字体防御 v1.2 新增)。自洽扫描事实抽查全符(project.godot 仅 custom_font 无 gui/theme/custom/ui_kit:735 styled_slider 与 :753 tooltip_theme 在役/ui_assembler:105 挂载行/consumers=settings_overlay:59+debug_overlay:277 裸 HSlider 双轨/HSeparator 15 处/tooltip_text 11 文件/theme 目录不存在/art/ui 无滚动条滑轨勾选贴图);一处事实 drift 记录继续(有利方向)=卡片 §5 称 08-Alpha版本标准 系 git 未跟踪文件,实际已于 5f2ef77(迭代 24 文档批)转正入库——手工搬运条款 moot,worktree 直接可见。定义面四件(roadmap 迭代 25 行/需求卡片/06/08)均已跟踪且干净(迭代 24 收口批 7e0f519d union 解带入),T0 无需新定义入库提交;主区脏件全属他批遗产零碰(.gitignore/.zcode/02/playnote/四 untracked/三 .uid)。基线复读全绿=冒烟 949/0(V5 基线按卡片「开工日实测为准」口径订正为 949/0,卡片记 938/0 系迭代 23 时代数)+run_all 25 套+probe --click 全绿残留 0(ui_input 17 断言/ui_struct/ui_contrast 38 对/click 行为走查问题 0)。worktree g-plan2-iter25-theme(分支 iter25-theme-20261013,基点 5f8acd0)已建,冷检出三件套(art 主区绝对路径拷贝+字体 .import 拷贝+--import 刷导入件)完毕,T0 主题资源起。
- **490(2026-10-13,迭代 25 UI 全局主题批总收口——单会话 /goal+iter U0 全量交付)**:T0-T2 三卡全落(worktree g-plan2-iter25-theme,两提交)。**T0 主题资源**:`game/assets/theme/main_theme.tres`(15 类型=V/HScrollBar·ScrollContainer·H/VSlider·TooltipPanel/Label·LineEdit·SpinBox·H/VSeparator+预盖 CheckBox/CheckButton/OptionButton/PopupMenu)挂 project.godot `gui/theme/custom`;位图生成脚本 `tools/gen_theme_icons.py`(PIL,幂等)产 9 张纯色/几何小位图落 `game/assets/art/ui/gen/`;色值溯源表 `game/assets/theme/README.md`;`default_font` 显式指现役同字体文件(V6 中文字形防御)。**T1 换代退役**:ui_kit.gd 删 `tooltip_theme()`/`_tip_theme` 与 `styled_slider()` 整函数、ui_assembler.gd 删挂载行(旧实现同批删除);settings_overlay 音量滑轨几何内联(裸 HSlider+200×24)、debug_overlay `_slider_row` 补注释(双轨消隐=两处均走全局主题)。**T2 断言与文档闸**:冒烟新增 `_smoke_global_theme()` 38 断言(V1 类型覆盖+Button/focus 双红线+V2 冻结值锚定+5.49:1+V3 预盖证词+V4 退役零残留+V6 字体防御双断言);06「UI 全局主题资源缺失」条移除+「UI 元素细节修」①销号;08 v1.3(三·界面主题行→在役+五·表现细节修行注;余五行本批零触碰已逐行核对);07 ㉔ 全屏巡检登记;roadmap 迭代 25 行换代。**引擎事实三证**(4.7.2 源码+默认主题链双查,探针实证):①CheckButton 与 CheckBox 同套 checked/unchecked 图标名(卡片 v1.2 注③「on/off」不成立——按引擎事实落位否则预盖静默空转,订正随报告呈报);②Slider 无 grabber_pressed 图标槽(冻结表「柄·按」GOLD_DEEP 留档未落位);③ScrollBar 柄=StyleBox 非 Icon(滚动条无位图,increment/decrement 箭头默认主题未定义=无箭头按钮);另证 4.7 导入参数无逐贴图 filter 标志(位图原生尺寸消费无滤波伪影,全局设置红线未触)。**位图不入 git**:.gitignore:52 `game/assets/art/**`(注释明文「运行时资源本地生成不入库」)——卡片 T0「.import 侧车随批入库」与政策冲突,按政策执行(脚本入库可再生+README 溯源+主区随批拷贝 gen/),例外强制入库与否呈报追认。**闸**:冒烟 987/0(基线 949+38)+run_all 25 套+probe click/full+render_gate golden 0.00%(3 屏)+doc 三闸/熵增对基线零新增(死链 3/词命中 2/lint 3 FAIL 均存量);MC 零跑(零数值零行为=纯呈现)。**待用户**:实机目检全屏巡检+专项观察点二(07 ㉔)+代拍板追认单八项+GDD 反哺点五条(design/qa/iter25-实现报告-2026-10-13.md §四/§五)。合并=见 git(主区 merge --no-ff;合并后 --import 重刷+gen/ 位图拷贝+全量复跑留痕)。
- **491(2026-10-14,迭代 26 UI 交互与观感批开工——/goal+iter U0)**:开工检查全过+两发现按用户裁诀执行。门=U0(本次会话 /iter 26 发令);卡片 v1.2 零待裁点(grilling 两轮八裁全落);V1-V7 验收清单三要素齐(V1-V6 自动闸机+V7 对拍面)。自洽扫描事实抽查 20+ 处全符(_apply_button_skin hover=常态图/disabled=pressed 错配 ui_kit:541-555;primary/danger 无 focus 盒与 disabled 错配 :575/:591;BCard 图标槽 76×76 :659-663;顺位徽标 GOLD_DEEP standee:441;护甲徽标 ward=HERO_BLUE/heavy=GOLD_DEEP :492/:494;GOLD_DEEP 语义岗 standee:199 意图动画判据;RAP 行 STONE_FAINT ap_bar:77;beams 硬边 :263-277;vignette/gradient 无显式 filter;project.godot 无 default_texture_filter;诊断钮无条件挂载 main:333-334+_on_diagnose_pressed :1290;冒烟双红线 smoke_all:5377/5385+对比度 helper :29-37;商店纯文字行/三选一已居中/营地四栏不等高;裸 Button.new() 全库仅 uikit:446)。**发现①**(用户裁按建议改法):卡片 §2.2 texture_filter 枚举漏登 board_world.gd:50(hero NEAREST),计 12 实测 13——已勘误落卡(NEAREST 10→11),该点与全局 Nearest 同向、零翻转风险、不进白名单。**发现②**(用户知会择机自理):主区 game/project.godot 编辑器对调脏件(theme 两行换序语义等价)——合并点复检,受阻停机呈报不擅动;另主区 active.md 脏件系编入会话快照遗产,本批 active.md 台账一律走主区侧写、不入分支(避免合并互撞),收口后随批在主区单独落 docs 提交。定义面入库 04ec217(roadmap/06/需求卡片指名三件)。基线复读全绿=冒烟 987/0(与在册一致)+run_all 25 套+probe --click 全绿残留 0(ui_input 17 断言/ui_struct/ui_contrast 38 对/click 行为走查问题 0)。**枚举两份**(T0 交付):①纹理过滤翻转面——显式 filter 13 处(NEAREST 11=ui_assembler:188/battle_end:60,76/board_fx:150/board_view:310/board_world:50/hero_info:202/level_map:169/standee:222/uikit:234,508,671;LINEAR 2=board_world:43 脚影/status_slot_row:127 状态图标);无显式 filter 仅 3 处(ui_kit:253 vignette/:272 beams/:291 gradient_base)=T2 白名单对象;StyleBoxTexture 九宫格(_tex_sb 产线 button_stone×2/panel_stone/border_stone)+主题 OptionButton 石纹样式盒(SBTex_btn/SBTex_btnp,非 Button 类型、红线不破)/滑轨抓子/勾选/箭头图标翻 Nearest=意图面;.tscn 零纹理节点(TextureRect/Sprite2D/TextureProgressBar/NinePatchRect/TextureButton/AnimatedSprite2D/TileMap 全零)。②按钮消费点 49 处(button 43+verb 1+primary 4+danger 1)全经四工厂,T1 覆盖面闭合;禁用态实跑点=shop_overlay_view.gd:117 余额不足禁用。另核:ui_contrast_probe 测点表为静态常量对、不覆盖禁用态(disabled 幽灵化不踩该闸);主题层 SBTex 两子资源归 OptionButton 名下。worktree g-plan2-iter26-ui(分支 iter26-ui-20261014,基点 04ec217)冷检出三件套(game/.godot 5.8M+art 931K+字体 .import)+--import 刷新 EXIT=0,T1 起。
- **492(2026-10-14,迭代 26 UI 交互与观感批总收口——单会话 /goal+iter U0 全量交付)**:T0-T6 八提交全量入库(worktree g-plan2-iter26-ui,分支 iter26-ui-20261014:b6f0c66 T1 五态/9ddb571 T2 Nearest+白名单/7cac0dc T3 换墨/86e9aea T4 光柱/02c87fc T5 细节/260c9bb T5b 诊断钮/900dfe9 T6 文档闸)。**T1**:ui_kit 三厂五态统一管线(hover=常态图+modulate 1.06 提亮〔乙案〕/disabled=本族底+α0.45 幽灵化〔甲案,旧「=按压图」错配修正〕/focus=INK 2px 内缩 1px 环〔甲案,负 expand margin 实现,引擎 focus 叠加绘制不遮钮底〕/危险钮补本族 pressed 深档),逐实例 override 主题层零新增;冒烟 +35 断言。**T2**:project.godot default_texture_filter=0+vignette/beams/gradient_base 显式 LINEAR 白名单;+6 断言。**T3**:立 GOLD_BRIGHT #E0B860/HERO_BLUE_BRIGHT #7EBAF0 两 token(语义岗冲撞走反哺点③),顺位/重甲/魔法护甲三徽标+RAP 行换墨(6.47/5.88/5.98:1);+9 断言。**T4**:beams 带内 0→0.05→0 三角过渡+纵向衰减(连续 alpha,Q7 裁);+3 断言。**T5**:SLOT_BACKDROP_SOFT #806A4E(白图标 5.14:1 ≥3:1)+商店 ALIGNMENT_CENTER+营地四栏等高(三 holder min 336+四面板 FILL+锁文居中);+8 断言。**T5b**:诊断钮卸载点+build_diag_button 工厂同批删除,转储入口迁调试浮窗(diagnose_requested 信号+区块⑤钮,Q8 裁甲);ui_tune_probe 只读巡检同批入册(白名单+_emit_diagnose_requested、连接数 10→11);+7 断言。**闸**:冒烟 987→**1055/0**(+68)+run_all 25 套+probe click/full 全绿+render_gate 全绿(shot_checker A-D 过;golden 三屏 **0.00%**——T6 第4 步登记即结未重制基线;战斗屏 draw_calls 191=基线 270 的附带收益)+doc 三闸/熵增对基线零新增(lint FAIL 集=06/07/术语表基线三件;08 一度因新增表格单元格撞 R3「日期+裁决同括号」正则,改措辞回绿——教训=08 表格单元格注记禁载「日期+关键词」同括号);MC 零跑。**文档同步面**:06 四条销号/氛围层改记「九宫格半存续」+反哺点四条新条+需求卡片条标已收口;08 v1.4;07 ㉕+v0.9;roadmap 迭代 26 行→已全批入库;实现报告=design/qa/iter26-实现报告-2026-10-14.md(代拍板追认单十三项+GDD 反哺点四条+目检五项)。**合并**:主区 game/project.godot 编辑器对调遗产脏件挡合(发现②预案场景)——用户裁「授权提交该对调」,落 no-op 提交 081ae3b 后 merge --no-ff **c8c3db1**(17 文件 +442/-48);合并后主区 --import 重刷+冒烟 1055/0+run_all 25 套+probe --click 全绿残留 0。active.md 台账本批全程走主区侧写(不入分支,避合并互撞——编入会话的 active.md 遗产脏件同因)。**待用户**:实机目检五项(07 ㉕)+代拍板追认单十三项+GDD 反哺点四条。
- **493(2026-10-14,迭代 27 代码架构技术债修复批开工——/goal+iter U0)**:开工门全解:三点待裁经 AskUserQuestion 用户三裁全按推荐案(①SaveManager/MetaProgression=第三个 autoload/②Ledger=单类持四账/③_settle=审计五段)→ 卡片 v1.2 零待裁;自洽扫描 8 处 file:line 抽查全符(1385/1725/31 行、:647-657 手工清单、10 探针挂 main.tscn、四共享账、_refresh_used_round 双账)。定义面入库=009a63c(worktree 提交)→ merge 2375923(主区舞步:未跟踪卡副本 rm+roadmap/06 checkout 丢弃+--no-ff;迭代 26 进度行滞后系上会话遗留原样随行,未代改)。基线冻结全绿=冒烟 1055/0+run_all 25 套+probe --click 全绿残留 0+render_gate golden 全绿。T0 交付:①对拍工具 tools/parity_anchor.py+锚 anchor.json(三变体 base/attune/shop×40 局×RUNSUM+JSONL 剔 ts 行双面,种子面 71000/72000/73000 错开覆盖三类重构面;坑两枚= BATCH 行时间戳含 T 致 \d+_\d+ 正则失配、冷检出需拷 .godot/art/.import 三件套否则挂死);②探针迁移对照表 11 挂载面(design/qa/iter27-探针迁移对照-2026-10-14.md)。T1 设计定案(代拍板白名单内):三屏场景 menu_screen/camp_screen/adventure_screen(battle_root+level_map 同入 adventure 场景置于 main 首子位=全模态之下,视觉共存对全数保序验算过;模态登记序不变)+run_scope 节点物化局态(adventure/debug 两类会话共用,终局 queue_free 替代两张手工清单)+SaveManager/MetaProgression 升格 autoload(类名加 Core 后缀沿 RngService 先例、autoload 占净名;探针隔离改原地重置 attach_path 沿 set_master_seed 先例)。并行会话警示:user://logs 见 playtest_777 同窗写入(共享目录并发,对拍 BATCH 行按名取文件不受染)。worktree g-plan2-iter27-techdebt(分支 iter27-techdebt-20261014,基点 2375923),T1 起。
- **494(2026-10-14,qa/ 实现报告未处理项清零·收尾批)**:用户四裁——反哺点14条「全部按呈报落文」/追认单29项「全部追认通过」/孤儿遗留7项「全部补登06」/实机目检「已全部完成」。**簿记标注**(据既有裁决记录, iter20/21 追认与反哺前序已裁):iter20 §三十条+§四五条+§二V20-V23、iter21 §三#2-12+§五六条、iter19 七份遗留移交逐条结案/孤儿标注、iter25 反哺补登 06 专条(前序漏登)。**反哺落文 14 条**:iter24 五条→敌人系统.md **v0.18**(attack_type 字段行+矩阵消费面双向在役/技能错峰两轨/敌种表两行池构成/hobgoblin 缺口登记)+难度曲线与Boss.md **v0.29**(只测不判,数值归M4);iter25 三条→art-bible.md **v3.14 §7.6(二)**(原生控件组件规格)+06「UI元素细节修」条①措辞订正(「同一个深棕色」不符代码面)+§7.6 末注(主题色值双源);iter26 四条→art-bible.md **v3.14**(§7.6(一) 按钮五态/§4.1 三 token+色板 42→45/§7.6(三) 氛围层两派/§8.2 Nearest+LINEAR 豁免清单)。**追认单 29 项**全追认(iter24 §四八项含#6 克制消费补行、iter25 §四八项、iter26 §四十三项)——三报告追认单节已标注。**孤儿七项补登 06** 专条(design/diagrams 越界/开场行后缀/STONE 外溢/迷雾三关扩对/字面量墨/TG_* 判据/数据配置223+商店房截图)。**人闸核销**:07 ⑮真人半+⑳㉑㉒㉓㉔㉕ 七节加核销注记(v1.0 版本行)+iter20 五件与 V20+iter19 存活八项+迭代18 清单 18 项同批核销(用户回报完成未呈报问题)。**闸**:doc 三闸对基线零新增(gdd_lint FAIL=06/07/术语表基线三件;doc_link 死链 2+已知 1 存量;term 命中 3 存量)。**待用户**:qa/ 13 份报告删除清单确认(清理口径三条件已全满足)+ 主区未提交遗产处置(iter22/23 报告已删未 staged/02 +2 行/active.md 等前会话脏件)。
- **494 续(2026-10-14,qa 收尾批·删除执行)**:用户裁「全部删除」——qa/ 下 14 份迭代实现报告全数删除(iter19 七份+iter20/21/22/23/24/25/26;iter22/23 系前会话已删未提交件,本次一并清出工作区)。保留=ui-audit 目录、ui-audit-vs-demo-2026-10-06.md、迭代18-实机目检总清单(非实现报告,用户明令不删)。连带修正:06 反哺点专条与锻造条中指向已删报告的链接改「已退役,git 历史可考」措辞(iter24/25/26/21/23 五处),doc_link 复跑死链回落至存量 2 处(元进度/天赋树 武器锻造.md 更名遗留,非本批引入);iter23 条「残留人闸」括注补 07㉒ 已核销。git 历史可恢复全部已删报告。
- **494(2026-10-14,迭代 27 代码架构技术债修复批总收口——单会话 /goal+iter U0 全量交付)**:五波七提交全量入库(worktree g-plan2-iter27-techdebt 分支 iter27-techdebt-20261014:fc7fee0 T0 对拍锚+探针表/7a0d57d T1/26301ba T2/6fd7d78 T3/8b9e556 T4/b605022 T5/eea3458 T6+T7;定义面 009a63c 先行入库 merge 2375923)。**T1**:三屏壳场景+RunScope 会话物化+双 autoload(裁点①甲);屏壳根 STOP 吃输入病灶实证修(mouse_filter=IGNORE+V2 闸)。**T2**:_settle 五段 Segment+旗判随段迁入+counter/grant 八处分单点+英雄攻击拆四步(编排器 1725→1325 行)。**T3**:RunLedger 单类四账(裁点②甲)+刷新双账删副本(presentation_snapshot 升键 refresh_used 单源)+gp_final 键删影子账。**T4**:ModalFlow 纯逻辑类(场景拆分后重估=抽取面收敛模态域)+互斥域 tags 化(non_locking/screen_state 封闭词表)+双 context;V6 测试抓出挂起兜底 divergent-return 分歧一处(按原语义修)。**T5**:audit_type_hints.py 机器闸(R1 容器注解/R2 有值返回/R3 参数;368 机械参数化 Array[Variant]/Dictionary[Variant,Variant]+13 真类型+四处 stub 白名单)+project.godot untyped_declaration=1。**T6**:死代码 13 函数(审计 16 复核 ui_kit:486 现役不删)+FeatsEngine 退役+Callable×10 换方法引用(语法实证)+状态机双 enum 化+ConfigDB _fatal 归根+resolver 诊断/数据 Callable 解耦(类型环断根)。**闸**:逐位一致对拍三变体五跑全同(V1 核心;卡此工具=tools/parity_anchor.py,种子面 71000/72000/73000 错开覆盖三类重构面)+冒烟 1055→1081/0+run_all 25→27 套(+settle_segments/modal_flow 两新套)+probe click+render golden 0.00%+static_scan 修复 cd 静默空转后 S1/S2/S4/S9 首次实跑全绿(S1 暴露 main randi=ADR-0007 豁免面→标记通道)+doc 三闸/熵增对基线零新增(lint 三失败=06/07/术语表基线同三件)。**坑册三枚**:①屏壳根全屏 Control 默认 STOP 吃下层模态鼠标输入(ui_input 悬停实证→IGNORE+V2 闸);②--script 模式编译器不解析裸 autoload 标识符(run_all 头注+pacing Parse Error 实证→P2-2 降格路径常量单点);③adventure_runner 既有成员 ledger(关卡账)撞名(T3 改 run_ledger)。**合并**:master 被并行 qa 收尾批推进(5a188f3:14 反哺落文+29 追认+14 旧报告退役+人闸核销——用户已回报 20~26 目检完成)——07 双 v1.0 冲突并集解(并行行保 v1.0/我方顺延 v1.1+㉖ 节);主区审计报告脏件=卡片已承载的计数修正(即死免保史)checkout 丢弃+三 .uid 未跟踪副本 rm 后 merge --no-ff **dd418e5**;合并后主区 --import 重刷+run_all 27 套全绿复跑。**待用户**:实机目检五件(07 ㉖)+代拍板追认单十五项(报告 §三)+GDD 反哺点两条(报告 §四/06)。worktree 与分支收尾清理见下条。**卡片核对补遗(2026-10-15)**:用户令核对卡片兑现面——查得 V8 断言未落/两条登记漏/漏网 Callable×2/resolver 幽灵通道(reset_warn_dedup 门面参从未存在=字符串 Callable 零校验藏死引用,换装编译期暴露)四项,补遗批 iter27-closeup-20261015 九提交 merge **d5eea25**(冒烟 1086/0=+V8×5;实现报告 §六 补核对结案段);顺录:编辑器 --import 会重写 project.godot 丢手加 [debug] 段(V7 源码断言即护栏,丢失即冒烟红)。worktree/分支已清理。
- **495(2026-10-15,迭代 28 启动装配与生命周期验收补全批开工——/goal+iter U0 连做全批)**:用户两裁(①迭代 28 插队、M4 数值批顺延 29+;②交卡后连做全批=卡片预批,grilling 门由预批豁免、实施期自检三问)。定义面入库 **39c6544**(主区 docs 笔:roadmap 迭代 28 行+M4 行改 29++06 登记条;需求卡片=design/research/需求卡片-启动装配与生命周期验收补全批-2026-10-15.md v1.0 零待裁点、按「永不提交」惯例不入 git;计划书存档 .zcode/plans/启动装配与生命周期验收补全批-loop-plan-2026-10-15.md)。worktree **g-plan2-iter28-bootlife**(分支 iter28-bootlife-20261015,基点 39c6544;三件套 .godot/art/.import 已拷)。**基线冻结**:冒烟 **1086/0**(roadmap/卡片记 1081 系 iter27 补遗批 d5eea25 +V8×5 未回写,以实跑为准、收口时回写)+run_all **27 套**全绿+probe_gate --click 全绿残留 0。**T0 树序实采**(临时探针两枚采完即删):main 子节点 16=MenuScreen@0/AdventureScreen@1/row_pacer@2/legend@3/node@4/curio@5/end@6/shop@7/CampScreen@8/settings@9/status@10/career@11/inter_overlay(ColorRect 无脚本)@12/confirm@13/debug@14/run_scope@15(_begin_session 在 _build_ui 之后调用=恒追加最末);12 模态登记序=legend/node/level_screen(宿主 AdventureScreen idx1)/curio/end/shop/camp_overlay(宿主 CampScreen idx0)/settings/status/career/confirm/debug;boot 可见性=start_overlay vis=true/battle_root vis=true/level_screen+camp_overlay+inter+debug 全 vis=false/run_scope 闲时会话 in_tree=true valid=true;三屏壳均 mf=IGNORE 纯容器、camp 壳 boot 态透明( vis=true 但成员恒隐)——「顶层可见层」断言必须遍历内容层禁选屏壳(卡片诊断订正①运行期实证)。T1 起。
- **496(2026-10-15,迭代 28 启动装配与生命周期验收补全批总收口——单会话 /goal+iter U0 连做全批)**:七提交全量入库(worktree g-plan2-iter28-bootlife 分支 iter28-bootlife-20261015:`6f71509` T1/`a35581e` T2/`77075e6` T3/`67342c69` T4/`db1bf423` T6/`140e4408` T1 补类型闸/`674f88a0` 实现报告;T5 变异验证横切零提交)。**T1**:装配语义合同 `LAYER_CONTRACT` 单点化(16 层=屏壳/模态/全屏态/非视觉节点,带 tags/host/shell 三类特例字段;卡片基于「十二模态登记数组」实采后扩为 16——代拍板 #9)+全仓唯一落位口 `_apply_layer_contract`(删散落 `move_child` 两处)+**装配顺序修复**(冒险屏先挂、菜单屏后挂=坏事实①「F5 见战斗界面」本体)+V2 断言重写四条(V1a 顶层可见层经内容层遍历/V1b 菜单壳树序>冒险壳/V1c 合同树序链逐对保序/V1d 落位单口源码断言)——退役裸下标断言三条(旧断言把错误顺序写成期望值=坏事实②「测试在保护 bug」);探针侧 `_modal_registry_contract` 入役、`_career_registry_contract` 退役。**T2**:`_smoke_boot_chain` boot 链路十断言(卡片写六——代拍板 #10;含续玩钮隔离三子态双向验)。**T3**:`_smoke_lifecycle_matrix` 九阶段×五引用面(卡片写十,地图选路停点态并入开局停点——代拍板 #11);活战斗驱动复用 `_auto_play_round` 模式。**T4**:渲染面三件=shot_probe 两自检(boot 顶层+菜单标题/副标题 `is_visible_in_tree` 且落视口内)+shot_checker 墨色判据 F(差>60 占比带 [2%,55%] 极性无关)+**启动态菜单 golden 入库**(`game/tests/golden/menu_boot.png`,`golden_baseline_refresh.sh --menu` 新模+render_gate 补段;帧差前置验 0.0000% 故全屏比对不收窄)。**T5 变异验证六次注入全见红并精确还原**(记录表进报告 §五):①翻装配序→V1a/V1b 红;②插散落 `move_child`→V1d/V1c 红;③注释 `add_child(run_scope)`→V2e+V3 全 21 面红(22 项);④注释 `queue_free`→V3f 单点红;⑤藏菜单层 `visible=false`→冒烟 V1a/V2c/V3a+探针自检 3 项+golden 34.23%+checker exit=1 四面全红;⑥续玩钮状态源倒置→V2d 四条+V3a/V3i 红(6 项)。**变异 3 的关键发现**:F 判据(墨色占比)自身**不红**——菜单被藏后底层棋盘透出仍给 33.48% 高反差像素落带内;真正拦截靠 `is_visible_in_tree` 自检与 golden 逐像素。F 判据只证伪「整框空白/整框糊」,不证明「框里是菜单标题」——已写进 code-conventions §3.6 判据强弱分层。**T6**:新硬规则「验收函数无变异红记录不算验收成立」落 CLAUDE.md 第 9 条(原 9-14 顺延)+code-conventions §3.6+req-card 技能 §7(WorkBuddy/ZCode 两份副本已补,两副本各有自有条目未擅自取齐);机械面同步=roadmap 迭代 28 行换代+前沿改 29+ M4、06 登记条销号+反哺点三条专条、07 新增 ㉗ 目检节五观测。**闸**:冒烟 **1086→1125/0**(+39=新增 42−退役裸下标 3)+run_all 27 套+probe_gate --click 全绿残留 0+render_gate 全绿(棋盘 golden 0.00%×3+**菜单 golden 0.00%**)+doc 三闸对基线零新增+static_scan S1/S2/S4 ok、**S9 归零**、S10 存量 125(文件头清偿批在册);MC 零跑。**类型闸自纠一笔**:批末 static_scan 报 S9 存量 1 处=本批新增 `main.gd:453 var tags: Array` 无元素类型,随批修 `Array[Variant]` 归零(冒烟复跑 1125/0 不变)——本批新增闸抓别人的错,既有闸同样抓本批的错。**⚠ 收口待裁(已呈报,未擅自处理)**:probe_gate **--full 红**=`t17_defer_probe`「关卡画面未出现」(exit=2;首次表现为 exit=124 超时同根因)。三条证据指向**非本批引入**:①主区 master 39c6544 同探针 FAIL 4/4 全同;②真实档 `user://save.json` 临时移开后同探针 PASS(15s);③首次跑绿、跑完即把真实档写成带断点态、其后必红=**探针自污染**。机理=`_start_adventure_from_menu`(main.gd:498)在有断点时改弹「已有未完冒险」确认框不开冒险,探针隔离(`main.save_manager=iso_c`)未覆盖该路径,60 帧等不到 `level_screen.visible`。**user:// 全 worktree 共享**(同 project name)=主区与各 worktree 读写同一份存档;定位过程中曾临时改名移开真实档,**已按原样还原并 cmp 逐字节校验一致**(备份 /d/tmp_save_backup_20261015.json)。历史:iter26 台账记「click/full 全绿」,**iter27 只记 `probe click` 未记 `--full`**——该红大概率自 iter27(row_pacer 排播泵迁出+ModalFlow 抽取)起存在而未跑到;probe_gate 头注亦有预言「超时多半=探针未适配新停点层,归 probe 适配批」。修它=改探针隔离=卡片外新需求,故**止步呈报**待裁(甲:Line truncated
- **499(2026-10-15,active.md 收口机制批)**:用户裁定收口检查的触发时机不能挂在"一轮答话结束"上——旧的 Stop 钩子判的是「active.md 内容有没有变」,追加新条目就算变,结构上永远抓不到"没删旧条目";且它比对的还是已废弃路径 `production/session-state/active.md`。实测三份 harness 副本现已全部失效:Qoder 侧快照零份、ZCode 侧没接 Stop 事件、Claude 侧配置为空。改法分两层:机械层 = `tools/audit_active_state.py` 判五条膨胀签名(状态记录条目数超 30、快照行数超 10、条目编号重复、快照整行自我重复、指向 `design/qa`|`design/research` 的死指针),并入 `tools/run_all_gates.sh` 为 08b,由既有合回闸回执强制,不另立第二份闸清单;语义层 = `active-closing` 技能,规定用户问「任务是否结束」时先跑闸、按 §10 三判据逐条核对并删除、报删除清单,然后才回答。变异验证:对换代前的 34 条版本报 5 项红(连 472/477/481/494 撞号与 6 处报告死指针一并抓出),对退役后的 3 条版本报绿。钩子副本收敛为单一事实源:`.qoder/settings.json` 改指 `.zcode/hooks/worktree-guard.sh`,该脚本加 `QODER_PROJECT_DIR` 兼容并把 `.qoder/` 纳入豁免面(gitignored 配置走 worktree 带不进去),`.qoder/hooks/` 三份副本删除。脚本层守卫五例实测(stdin 直喂):主区改 tracked 文档拦、改 active.md 放行、改 .qoder 放行、主区 commit 拦、无全量回执的 merge 拦。**待核**:hooks 属各 harness 私有配置、不随仓库传播——ZCode 侧确认在跑,Qoder 侧本会话活体探针未被执行(`.claude/settings.json` 仍为空),故拦截力目前只在 ZCode 生效,成因待诊断。全量闸由用户自跑,本批按令合回 master(分支 `active-gate-20261015`,合并见提交史)。
+1 -1
View File
@@ -96,7 +96,7 @@
## 10. 会话记录纪律
**active.md 定性:状态文件——状态记录,不是工作日志。** 根目录 `active.md` 是会话状态的唯一状态源,**每一行当下为真**;历史归 git 提交史。只许写三类:①当前状态快照(≤10 条滚动窗口);②未决面(进行中批次/待人闸/待裁点指针);③当前迭代滚动工作条目。禁止写入:已完结批次的历史叙述、待办裁决事项(归 06)、跨会话教训(归记忆库);并行会话禁止整体复原/回退本文件。退役规则:**用户确认任务完成时清除当前会话写过的状态条目——状态清除即任务完成的证明**;条目完结判据=批次已入库+结论已进快照+未决面无条目指向;迭代收口兜底删除已完结条目,超过 30 条必须清。
**active.md 定性:状态文件——状态记录,不是工作日志。** 根目录 `active.md` 是会话状态的唯一状态源,**每一行当下为真**;历史归 git 提交史。只许写三类:①当前状态快照(≤10 条滚动窗口);②未决面(进行中批次/待人闸/待裁点指针);③当前迭代滚动工作条目。禁止写入:已完结批次的历史叙述、待办裁决事项(归 06)、跨会话教训(归记忆库);并行会话禁止整体复原/回退本文件。退役规则:**用户确认任务完成时清除当前会话写过的状态条目——状态清除即任务完成的证明**;条目完结判据=批次已入库+结论已进快照+未决面无条目指向;迭代收口兜底删除已完结条目,超过 30 条必须清。**机械闸**=`tools/audit_active_state.py`,判四条可机械测的膨胀签名(条目数上限、快照行数上限、条目编号重复、指向中间文档的死指针),随 `tools/run_all_gates.sh` 全量档跑并由合回闸强制——收口漏删旧条目,合回时会被拦下。
条目用完整白话句子写清结论本身,长度服从可读性(能看懂比字数少重要);禁把定稿摘要、义务清单整段搬进条目(详情归权威文档);第 4 节用语纪律对状态记录同等生效;条目记裁决结论本身,不记中间文档文件指针(见第 11 节)。
+2 -2
View File
@@ -11,7 +11,7 @@
1. **开工**:每批次先建独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`;所有改动与验证都在 worktree 内进行(未跟踪文件不会出现在新 worktree,需手工搬运)
2. **收尾**:迭代 loop 批次验证全绿(冒烟+场景探针)后在主工作区 `git merge --no-ff <任务分支>`,再 `git worktree remove`+删分支;合并前先看 active.md 尾部状态记录,防并行会话撞号/漏捎带;收口按 doc-conventions 第 10 节退役规则删除已完结条目。非 loop 批次默认收口不跑闸(两入口铁规),用户点名或当场问
3. **豁免面**:仅根目录 `active.md`(会话收口)与 `.zcode/`(钩子配置)允许主工作区直改;其余一律走 worktree,主工作区 git commit 被钩子拦截
3. **豁免面**:仅根目录 `active.md`(会话收口)、`.zcode/`(钩子与配置,入库)与 `.qoder/`(本机 harness 配置,gitignored 不入 git,走 worktree 反而带不进去)允许主工作区直改;其余一律走 worktree,主工作区 git commit 被钩子拦截
4. 本铁律由 PreToolUse 钩子 `.zcode/hooks/worktree-guard.sh` 强制兜底;钩子只约束 agent,用户手工改动不受限
## 2. 三段开发流程
@@ -46,7 +46,7 @@
**收口**
10. **批末全量验收才合并**——在任务 worktree 内跑 `tools/run_all_gates.sh`(不带 `--quick`),全绿才合回 master。该脚本是全部验证闸的**唯一入口与唯一清单**,闸件增减只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。跑完写回执 `game/tests/.gates/receipt.json`,合回时由 worktree-guard 强制校验
11. **合并后主区全量复跑**——合并可能引入冲突或环境差异,落回 master 后再跑全套
12. **会话收口落记**——active.md 快照与状态记录更新(含删除已完结旧条目,doc-conventions 第 10 节);跨会话教训写入记忆库
12. **会话收口落记**——active.md 快照与状态记录更新(含删除已完结旧条目,doc-conventions 第 10 节);跨会话教训写入记忆库;漏删旧条目由 `tools/audit_active_state.py` 在全量档抓(合回闸强制,脚本即清单)
13. **文档同步闸**——机械面文档(roadmap 行/registry/active.md 记账/README 工具注)合并前随批更新完毕方算收口;设计权威文档批内不更新:实现批收口出迭代实现报告(`design/qa/iter<N>-实现报告-<日期>.md`:各卡状态+代拍板追认单+GDD 反哺点节),反哺点同步登记 `06-待办清单`,用户逐点裁决后另批落文;反哺点未落文期间相关 GDD 节视为待反哺,读前先查 06;需求卡片必列「关联文档同步面」按两层标注
14. **实机目检归用户,只登记不阻塞**——真人检测项登记进实现报告目检总清单与 07-体验验证清单即完成批内义务;禁把等目检当停工理由或收口前置
15. **中间产物吸收即死**——细则见 CLAUDE.md 硬性红线与 doc-conventions 第 11 节
+4
View File
@@ -33,6 +33,10 @@
"exit": "0",
"fp": "green"
},
"08b active.md 体量": {
"exit": "0",
"fp": "green"
},
"09 静态扫描": {
"exit": "1",
"fp": "3220614b09c4"
+120
View File
@@ -0,0 +1,120 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""audit_active_state.py — 根目录 active.md 体量闸(doc-conventions §10 的机械面)
状态文件只记当下:条目只增不减就是腐烂。本脚本查五条机械可判的膨胀签名——
状态记录条目数超上限、快照节行数超上限、条目编号重复、快照整行自我重复、
指向中间文档(design/qa、design/research)的死指针。
退出码:0=全绿;1=有红(逐条打印差额,供收口批据此删条目)。
用法:python tools/audit_active_state.py [--file PATH] [--quiet]
"""
import argparse
import os
import re
import sys
ENTRY_LIMIT = 30 # §10:状态记录超过 30 条必须清
SNAPSHOT_LIMIT = 10 # §10:当前状态快照 ≤10 行
INTERMEDIATE_PREFIX = ("design/qa/", "design/research/")
ENTRY_RE = re.compile(r"^- \*\*(\d+)( 续)?")
BULLET_RE = re.compile(r"^- .{20,}")
PATH_RE = re.compile(r"design/(?:qa|research)/[^\s)`,,。)]+?\.md")
def split_sections(text):
"""按二级标题切段;标题前的内容归入 '' 键(文件头元信息,本闸不判)。"""
out, key = {}, ""
for line in text.splitlines():
if line.startswith("## "):
key = line[3:].strip()
out[key] = []
continue
out.setdefault(key, []).append(line)
return out
def find_key(sections, prefix):
for name in sections:
if name.startswith(prefix):
return name
return None
def audit(path, repo):
with open(path, encoding="utf-8") as f:
sections = split_sections(f.read())
reds = []
snap_key = find_key(sections, "当前状态快照")
rec_key = find_key(sections, "状态记录")
if snap_key is None:
reds.append("A0 快照节缺失:状态文件必须含「当前状态快照」节")
if rec_key is None:
reds.append("A0 状态记录节缺失:状态文件必须含「状态记录」节")
snap = [ln for ln in sections.get(snap_key, []) if BULLET_RE.match(ln)]
if len(snap) > SNAPSHOT_LIMIT:
reds.append("A1 快照节 %d 条,超上限 %d——先删被新一轮取代的旧行,别只往顶部加"
% (len(snap), SNAPSHOT_LIMIT))
seen = {}
for ln in snap:
seen[ln] = seen.get(ln, 0) + 1
dups = [ln for ln, n in seen.items() if n > 1]
if dups:
reds.append("A2 快照节有 %d 行整行自我重复(换代不彻底的签名):%s"
% (len(dups), dups[0][:60] + " …"))
nums, conts = [], []
for ln in sections.get(rec_key, []):
m = ENTRY_RE.match(ln)
if m:
(conts if m.group(2) else nums).append(int(m.group(1)))
if len(nums) > ENTRY_LIMIT:
reds.append("A3 状态记录 %d 条,超硬上限 %d——按 §10 判据删除已完结批次条目"
% (len(nums), ENTRY_LIMIT))
repeated = sorted({n for n in nums if nums.count(n) > 1})
if repeated:
reds.append("A4 条目编号重复(并行侧写撞号):%s"
% "、".join(str(n) for n in repeated))
body = "\n".join(sections.get(snap_key, []) + sections.get(rec_key, [])
+ sections.get(find_key(sections, "未决面"), []))
dead = sorted({p for p in PATH_RE.findall(body)
if not os.path.exists(os.path.join(repo, p.replace("`", "")))})
if dead:
reds.append("A5 指向中间文档的死指针 %d 处(文件已按 §11 退役,条目却还在引):%s"
% (len(dead), "、".join(dead)))
return reds, len(nums), len(snap)
def main():
ap = argparse.ArgumentParser(description="active.md 体量闸")
ap.add_argument("--file", default=None, help="待审文件(默认为本仓库根目录 active.md)")
ap.add_argument("--quiet", action="store_true", help="只输出结论行")
args = ap.parse_args()
repo = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
path = args.file or os.path.join(repo, "active.md")
if not os.path.exists(path):
print("[active.md 体量闸] 找不到文件:%s" % path)
return 1
reds, entries, snap = audit(path, repo)
if reds:
print("[active.md 体量闸] FAIL:%d 项——状态记录 %d 条 / 快照 %d 行" % (len(reds), entries, snap))
for r in reds:
print(" " + r)
return 1
if not args.quiet:
print("[active.md 体量闸] PASS:状态记录 %d 条 / 快照 %d 行,编号唯一、指针全活" % (entries, snap))
return 0
if __name__ == "__main__":
try:
sys.stderr.reconfigure(encoding="utf-8", errors="replace")
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
except Exception:
pass
sys.exit(main())
+2
View File
@@ -111,6 +111,8 @@ fi
gate "06 gdd_lint" "gdd_lint.log" "$PY" "$REPO/tools/gdd_lint.py"
gate "07 doc_link" "doc_link.log" "$PY" "$REPO/tools/doc_link_audit.py" --strict
gate "08 doc_term" "doc_term.log" "$PY" "$REPO/tools/doc_term_audit.py"
# ── 6b. 状态文件体量闸(active.md 只记现在:条目数/快照行数/编号/死指针四条硬上限)──
gate "08b active.md 体量" "active_state.log" "$PY" "$REPO/tools/audit_active_state.py"
# ── 7. 静态扫描域 + 熵增闸 ──
if [ $QUICK -eq 0 ]; then
gate "09 静态扫描" "static_scan.log" bash "$GAME/tests/static_scan.sh"