Commit Graph
110 Commits
Author SHA1 Message Date
DKChan 76868d7228 feat(闸): pipeline_gate 补两条卡片机检 C1/C2——卡片冲突修订批的防回归兜网
- C1 文档义务口径(生效=文件名日期 ≥2026-10-17):关联文档同步面表内目标格指向 design/(含 ../gdd/ 等相对写法)或根规则文件、义务格仍写「随批」者红——req-card §6 改口径后旧措辞「机械面随批」不得再入卡
- C2 设计事实源声明(生效 ≥2026-10-18):全文既无「设计事实源」也无「唯一事实源」者红;两种合格写法都认(独立小节/头部「来源:…(唯一事实源:…)」),避免按小节名字面判死全库卡
- 只追新规生效日之后的卡,更早的卡属已实现批次历史留档,不回头改(同「换代清零+定期跑批」先例,不设豁免清单、不加编辑期钩子)
- 负向验证已做:临时卡注入两处违例→两红(design 目标红、game/README 行不误红)→删除复跑绿;文档域闸全绿无新增红(回执 commit=ad48d2a2)
- 同批另修两份技能文件的「设计事实源」字面对齐(.zcode/skills 与 .qoder/skills 双写逐字一致)——两目录均被 gitignore,该改动只在本机盘上、不入 git
2026-10-18 19:56:11 +08:00
DKChan 27812167ef refactor(状态规矩): 废除根目录会话状态文件 active.md 与全套执法件(2026-10-18 用户裁)
判据(对 869 个 ZCode 会话与 16 个 Qoder 会话的读写统计):active.md 被整文件读 448 次、
单次中位数 14 KB、累计 6.09 MB 进上下文,311/320 个碰它的会话把它当第一个工具调用读;
但 7311 个提及它的思考片段的语境分布是——写入与编号簿记 327 个会话、并行冲突与避让 234 个、
退役与失真核对 162 个,而明确写「从它所载内容得知某事实」的只有 20 个会话。
逐条核 41 个条目:独特且现行 2 条(另 3 个子句)、别处已有权威源 14 条、陈旧或自相矛盾 7 条、
已完结批次的历史叙述 18 条;按字节约 95% 属后三类。失实样本:architecture 版本记 v1.6 实为 v1.8、
规则文件数记 7 份实为 6 份、迭代 27/28 记「位预留追加卡」而 roadmap 记已完成、三个已删 worktree
仍记「在盘待删」、同一条既宣称「文档禁列闸清单」又自行列出 01–11 全套闸。
执法件已建一轮仍拦不住:08b 体量闸只测条目数/行数/编号/死链,测不出语义失真;钩子不随仓库传播,
只有 ZCode 在跑;10-15 清到 8.6 KB、10-17 回到 40 KB,用户为「只写不删」连续三次发火。

改动面:
- 删 active.md 与 tools/audit_active_state.py;run_all_gates.sh 摘除 08b 闸件与头注、
  baseline.json 删 08b 记录(现存 12 闸)、repo_structure_audit.py 根文件白名单去 active.md
- doc-conventions §10 改写为「仓库根不设状态文件」并留裁决与判据(保持 §11/§12 编号不漂);
  §11 表两行去状态文件口径;§4 适用范围去 active.md
- process-conventions §1 第 2/3 条(合回前查尾号防撞号、豁免面)、§3 第 12 条(批次完成后的
  登记义务)、§6 分级周期口径(闸件清单不再在文档重列)四处换代
- code-conventions「实现批收尾双登记」改为单登记;CLAUDE.md 目录节、规范导航行、worktree 豁免
  行三处换代,红线新增「仓库根禁止设会话状态文件」一条
- roadmap.md 顶部新增「当前位」三行(阶段/迭代位/下一步)接替原快照职责,头注、执行纪律第 3 条、
  loop 规范第 8 条、维护纪律四处改指 06 与本文;reports/README.md 与 sim-data/README.md 两处
  现行指路改口;architecture.md 文档域闸表行去 active.md 体量闸与触发路径
- 06-待办清单迁入七条真残值(原仅载于该文件):卡片入库纪律悬空待办、req-card 两副本取齐、
  魔法道具与罕见残留(实数 23/17 处,旧记约 30/18)、通关口径统一(gdd 内 188 处,旧记 273)、
  黑话第二波待发令、数据整改批九条存疑待抽查(该批未提交面所载)、发布前删除 main.gd:196 调试
  入口写死行(工程直入·待写卡)

harness 侧另批处理(.zcode/ 与用户级技能不入 git):session-snapshot.sh 与 config.json 注册、
worktree-guard.sh 的 active.md 豁免白名单、active-closing 技能、doc-consistency-check 第 8/9 项、
iter 与 req-card 技能里的「唯一例外=active.md」与查尾号条款。
2026-10-18 07:28:48 +08:00
DKChan bbd49abfb0 docs(术语): 设计文档术语刷新批全量入库——2026-10-18 用户裁定(金币/插旗/旗/雷格/惩罚格 五词)design/+tools/ 域落文
- 术语表 v1.13:GP 唯一正式命名(删「局内金币」别名)+旗/控制词条更名封印/控制+封印定性由「插旗的对外表达」更正为正式动作名(全库统一、非比喻)+禁用字面从对外命名扩为全库+删「机制文档内部用语不受限」条款+退役词对照表补三行(金币→GP/插旗→封印/旗→封印印记)+危险格词条「被旗控制」→「被封印控制」+B3 豁免例举去旗
- 机检扩容 tools/doc_term_audit.py:RETIRED_TERMS 新增 金币→GP、插旗|标旗→封印 两行(DEFAULT_DIRS 不变,game/ 扫描归代码批);拔旗|撤旗行继任措辞随批换代(插旗不可逆→封印不可逆)
- GDD 全域正文换代约 200 行/31 文件:金币→GP(金币袋→GP 袋)、插旗/标旗→封印、雷格/惩罚格→危险格(2026-10-11 退役批存量补扫)、旗概念→封印印记(旗判定→封印判定/标中旗→封印标中/标错旗→标错封印/旗格→封印格/旗位→封印位等复合词系);00-游戏概念「封印降级为类型风味词」定性翻转;修订记录/版本历史/禁令引举/更名记载等留档行零动
- registry/entities.yaml(信标网络可达性/事件序/回执驱动三处)+art 五件(art-bible 封印印记六处/comfyui 背旗→背负封印印记/两清单)+dev 七件(architecture 旗集→封印集/code-conventions-cases/test-conventions/架构图 html json 四件)随批换代
- tools 四脚本注释与图内标注换代(clear_dominance_audit/render_sample_sheet×2/analyze_playtest;代码标识符零动归代码批)
- design/qa/代码术语审计报告-2026-10-18.md 随批入库(本批参考素材,06:578 引用闭合 doc_link 死链)
- 06-待办清单/术语表两在途脏件(代码术语批 06 登记+A 表头「不用→禁用」)随批一并入库

自检:doc_term_audit --strict 零疑似现行(45 文件 434 命中全留档类);文档域六闸验收通过无新增红(gdd_lint R3 对 00 正文修订注记一次打回已去注记化改写;doc_link 死链经报告入库闭合);正文残留仅 06:73「拔旗」一处(件派生动词白名单豁免语境、机检同款豁免,设计意图记录不动)
2026-10-18 06:15:38 +08:00
DKChan 8f66ae1559 docs(roadmap): roadmap 压成「里程碑时间线+迭代总表」+流水线闸注册上电 08c——删除「当前位置」节与主路线表全部巨型行(各迭代过程叙述/T 段明细/读数/闸数字/裁决记录退役归 git 史,116→89 行),新建六列迭代总表 30 行一行一迭代(状态=已完成+落地日期自「✅ 完成/已入库」句提取,迭代 17 任务书日期与文本冲突从文本=2026-10-07;需求卡片列 design/research 实存十卡写实路径、卡片已退役十一迭代写保留字、迭代 1~8/10 无卡片制填「—」;编入时间 9~12/14~30 从文本与编入提交可考取真、其余「—」;预计周期历史行全「—」不做 ≤2 周判;实现报告 iter27/28/29/30 写 reports/ 实存路径、其余二十六迭代写退役保留字),M3/M4 里程碑语义立规注(2026-10-09 用户立规)压缩三行后置于里程碑时间线表后语义全保留,执行纪律/批次 loop 规范/维护纪律三节原样保留(含未迁 process-conventions 的迭代粒度界定等立规),执行纪律第 3 条「当前位置挂起清单」指针随节删除改指 active.md 未决面;pipeline_gate.py 机检扩容对齐新表(需求卡片/编入时间/预计周期三列「—」合法=历史行豁免+实现报告列已完成=存在路径或退役保留字、对「—」维持判红,头注旧格式声明换代),doc-conventions §12.2 四列规则同步补「历史迭代不可考填—」与已完成报告列严格句;run_all_gates.sh 文档域 08b 之后注册「08c 流水线闸」(照抄相邻行形态,闸序其余零改动)+头注 --docs 闸清单补 08c+域横幅 6–8c;baseline.json 手工加入 08c 绿记录(新闸件无基线记录必判闸况变化拦合回收执,其余条目原样保留);06 修存量退役词四笔「随批呈报→顺带呈报」(b4671802 回填批带入、doc_term --strict 首次全量跑暴露,非本批引入)。自检:python tools/pipeline_gate.py=PASS(06 条目 51·总表数据行 30·交叉核 0 链全过)exit 0;bash tools/run_all_gates.sh --docs=六闸全绿无新增红 exit 0 2026-10-18 05:15:32 +08:00
DKChan 25a7c85bf1 gate(domain): 合回闸推域改 game/ 唯一触发——tools/artwork 出代码域,跨领域执法禁绝(2026-10-18 用户裁「只有改了 game 的才需要代码域全量测试验收,其他修改只跑自己领域相关的验证,不要跨领域执法」)——worktree-guard.sh 推域逻辑逐路径重写(触 game/→要求 code;不触 game/ 的一切路径——design/、根规则文件、tools/ 工具脚本、.zcode/ 配置、其余一切→要求 docs;同批混触两域→两域都要=全量档;删 CODE_PATHS/DOC_PATHS 三前缀判码与分支,artwork/ 死条目随之消失,「未登记按最严」被新逻辑自然吸收)+报错指引文案同步(--code=触及 game//--docs=不触 game/ 一切改动/不带参数=同批混触 game/ 与文档面;「跨两域或改闸件本身跑全量」口径全数退役)+process-conventions §3 第10条域划分细则重写+闸件自身改动不占合回全量(质量义务=落批时变异验证 test-conventions §6+闸崩溃 fail-closed 无回执即拦,不以合回全量为兜底)+第11条合并后复跑按域缩水(触 game/ 批全量复跑维持;纯文档批文档域档秒级)+§4 分级周期口径同步+run_all_gates.sh 头注三档触发条件换代(闸序本体零改动)+CLAUDE.md 运行与验证首条同步。钩子为 gitignored 本地件不入库(.gitignore .zcode/;499 批先例「hooks 属各 harness 私有配置不随仓库传播」),改动落主区唯一生效副本(.zcode/config.json 绝对路径指向)。变异验证五例 stdin 直喂全过:①仅 tools/ 夹具分支=本批核心修正面:错域回执拦且指明要求域=docs、正域 docs 回执放行(旧逻辑此例误拉 code 全量)②仅 game/:要求域=code、code 回执放行③game/+design/ 混合:docs 回执拦显缺 code+code 回执拦显缺 docs(合证两域都要)、full 放行④无回执拦⑤回执 commit≠分支尖拦(full 域也拦)+附检 quick 模式拦(五况其余未波及)。夹具走 git 底层命令(hash-object/read-tree/commit-tree)零工作区触碰,分支 zz-domain-test 验完即删零留痕。本批为旧推域规则下最后一次全量自付(diff 触 tools/ 按旧判跨两域,全量闸自付见收尾回执) 2026-10-18 03:44:52 +08:00
DKChan 31bdecd6d5 tools(pipeline): 流水线闸对齐 doc-conventions §12 状态段累积制——+切段数不限逐段合法(废双轨恰两段上限),新增在场约束(下游段在场须上游闭合段,带日期特批豁免)与双轨设计阶段恰两段且一文档一美术;roadmap 卡片列 <br>/换行多卡逐卡校验存在性且免整格长度叙述红(§12.2 一格一行一卡),预计周期超 2 周带日期特批放行;交叉核依据收窄为同状态行已写卡段括号路径;变异验证 34 变体(6 绿 28 红)全过+还原回绿 2026-10-18 01:42:52 +08:00
DKChan 1651bc8d7d tools(pipeline): 新增流水线闸——06 条目状态机(标题元数据/属性齐备/状态词白名单/条件凭据/双轨/特批/零命中)+roadmap 迭代总表六列+已编迭代↔卡片列交叉核一处,变异验证 25 变体全红+基准绿;暂不注册 run_all_gates(第二批数据整改后上闸,对现行旧格式 06/roadmap 红属预期) 2026-10-18 00:59:02 +08:00
DKChan 4a65f9eb6d Merge branch 'master' into art-standee-20261006
# Conflicts:
#	design/art/art-bible.md
2026-10-17 17:31:22 +08:00
DKChan b27e4710b6 feat(闸): 验证闸按改动域分跑 + 迭代批禁写 design/ + 新建 reports/ 收实现批产出物
用户裁定(2026-10-17)五条:①代码批只跑代码闸、文档批只跑文档闸;②迭代批是代码实现批,
禁写 design/,文档只读、是实现批写测试与代码的输入依据;③迭代实现报告不写在 design/ 内;
④不设文档编写 skill——文档由用户在会话中讨论后落地;⑤本批属工具/规则面,不占迭代号。

一、tools/run_all_gates.sh(域划分唯一出处)
- 新增 `--code`(01 冒烟/02 单元/03 探针 --click/04 探针 --full/05 渲染闸/09 静态扫描/11 回放对拍)
  与 `--docs`(06 gdd_lint/07 doc_link/08 doc_term/08b active.md 体量);10 熵增闸两域都含
  (文档批新增或挪动 .md 同样会绊它,且纯文本秒级);不带参数=全量,改闸件本身或跨两域时用。
- 域外闸不入 NAMES,不产生假变化;同时修「基线绿 → 现 SKIP」被误判为闸况变化(--quick 回执
  此前永远自带三条假红)。
- 回执增 domain 与 not_run 字段。
- 导出 PYTHONIOENCODING=utf-8:GBK 控制台下 06/10 两闸打印 ✅/✗ 直接崩(假红)、09 的 FAIL 行
  写成乱码字节致指纹漂移(假「红项清单变化」)、末尾汇总自身崩打不出结论——2026-10-16 实踩。
- 新增代码域素材齐盘预检:game/assets/art/** 与一切 *.import 边车都不入 git(2026-09-29 裁定),
  worktree 冷检出必空盘 → main_theme.tres 解析失败 → 冒烟 V1 七项假红。缺位即拒跑并列缺哪件,
  附处置命令(cp 主区素材 + --editor --quit 刷导入;--import 不生成新素材边车)。

二、tools/render_gate.sh(空跑判绿改判红)
- 棋盘/菜单两段 golden 在素材缺位时原为 SKIP,而闸末照样打印「全绿」exit 0——一个像素都没比
  却报通过。2026-10-16 菜单废基线事故正是靠这个信号盲区混过 worktree 自检的。现改判红。

三、reports/ 新顶层目录(实现批唯一可写目录)
- 收迭代实现报告/代拍板追认单/GDD 反哺点清单;repo_structure_audit.py TOP_DIRS 与 CLAUDE.md
  Project Layout 两处白名单同批改齐(熵增闸自陈的强制口径);reports/README.md 立范围与生命周期。

四、规则文本五处同步
- CLAUDE.md:验收口径改按域;硬性红线新增「两类批」条(迭代批禁写 design/ 与根规则文件、
  产出只落 reports/、只跑代码域闸;非迭代批不占迭代号);Project Layout 登记 reports/。
- process-conventions:§3.10 批末按域验收;§3.12 补 active.md 例外(会话状态唯一源,钩子本就
  豁免);§3.13 重写为「实现批禁写文档、产出物落 reports/、反哺点由文档批裁决后写入」;
  §4 分级周期口径改三档;§2 三段流程「三·实现」行加禁写面。
- doc-conventions 载体分工表:迭代实现报告落位由 design/qa/ 改 reports/。
- architecture.md「测试与质量域」:新增「改动域划分」节(域表+唯一出处声明+素材预检缘由),
  本表是现状登记非第二份清单。
- 06-待办清单:登记本批两处代拍板(active.md 例外读法、reports/ 新顶层目录)与旧实现报告
  iter27/iter28 两份仍在 design/qa/ 未迁位的欠账。

五、连带(不在本仓库,gitignored 本地 harness 配置)
- .zcode/hooks/worktree-guard.sh:合回校验由「不碰 game/ 即全免」改为按 diff 路径推定所需域、
  要求回执 domain 覆盖之;未登记路径按最严处理,禁默认放行。旧豁免的漏洞:改闸件本身反而零验证。
- ~/.zcode/skills/iter/SKILL.md:顶部加批性质与闸域两条强制声明;批末重闸移出 doc 三闸;
  总收口产出物改落 reports/、roadmap 换代移出本批;定义面入库注明是搬运非撰写。

验证:--docs 域全绿(06 由基线红改善为绿,因 fcb8c3f8 已补 01 篇流程图);素材预检反例实测
(移走 button_stone.png → 拒跑 exit 1,还原后正常);渲染闸缺盘反例实测(exit 1 并报 FAIL);
--code --docs 互斥与非法参数 exit 2;guard 内嵌 python 编译通过并按 docs 域回执放行 docs 批。
2026-10-17 00:40:53 +08:00
DKChan fff4f120d3 merge: 迭代29测试分层与门禁语义修正批入库(十提交, worktree g-plan2-iter29-testlayers) 2026-10-17 00:13:57 +08:00
DKChan cc575b2ce3 feat(闸): 文件头闸增补 R0 载体锁死——头注非空时首行必须 ## 文档注释开头
清偿批落地后按 §1.4.1 收尾条款生效;盲测=旧式 # 头注命中/## 与无头注放行
2026-10-16 23:28:09 +08:00
DKChan 9a72394652 chore(代码卫生): 头注存量清偿批——82 文件按两类白名单改写为 ## 文档注释载体
按 code-conventions §1.4.1 第三轮定稿执行:core 22+schemas 18+presentation 根 14+views 28,全部头注 #→##、删日期/变更叙事/GDD 与架构反向链接/字段与域清单/机制描述,保留职责摘要+真实使用约束(防事故禁令/单一入口/信号契约每信号一行)。main.gd 31→5 行、save_manager 45→5 行、adventure_runner 37→5 行为最大单件。子代理分模块执行(波一 core+schemas、波二 presentation+views,并发≤2)。验收=tools/verify_comment_only_change.py 逐字节校验(82 文件头注区外逐行一致=零行为变更)+audit_file_headers 全绿;纯注释批免冒烟(先例 5843270)
2026-10-16 23:28:07 +08:00
DKChan 3dc168cd3d merge: 同步 master(60449941 迭代 30 编入批 + 08 状态刷新批)并解决 roadmap 冲突
roadmap 冲突面:本批改了迭代 29 行与「迭代进度/近期主战场」两处,master 同期编入了迭代 30
(UI 呈现三卡批)并把空位行顺延为「迭代 31+」。以 master 为基重新应用本批三处换代:
迭代 29 行(卡片 v1.4→v2.0、门列→实耗、状态→已入库)、迭代进度行、近期主战场行
(下一前沿改指迭代 30,迭代 29 收口遗留注明 11 号闸待批准)。
active.md 与 06 无冲突(自动合并):状态记录 505 在册,快照三行换代保留。
2026-10-16 16:33:15 +08:00
DKChan 1458d94b0e feat(迭代29 T4): L3 屏壳切换探针 screen_flow_probe,入轻闸默认段
新建 game/smoke/screen_flow_probe.gd/.tscn:走 菜单→营地→菜单→冒险→(关卡屏⇄战斗屏)→放弃→终局→菜单
六步主流程与两条回退路径,每步断言屏级互斥 + 流程状态位。与 ui_click_probe 分工:那件走「点某个按钮
有没有反应」的行为走查(含战斗推进与结算数值面),本件只走屏壳与流程状态,不推进战斗不碰结算数值
——全库 change_scene 零命中、屏切换全靠 visible 互斥,这正是最容易被装配顺序改动悄悄破坏的面。

判据两处订正(首跑实测抓出,都写进注释防复发):
① 屏标记不能裸看 visible——战斗容器 battle_root 在局外也 visible,会把 boot 态误判成「菜单与冒险
   同时在场」;冒险屏改取流程状态位 run_scope.is_adventure。
② 互斥不能用「可见屏计数 ≤1」——终局覆盖层合法叠在冒险内容之上(终局态 is_adventure 尚未收束,
   是设计如此);改为冲突对判定,合法叠加仅「终局+冒险」这一对。
变异验证:boot 后强置 camp_overlay.visible=true → 精确命中「菜单与营地同时在场」两条断言见红。

run_all.gd:负面套件(negative=true)全文输出折叠、只回显结论行——它输出里的 Parse Error 是预期产物,
回显出去会让编排层的日志扫描把集成/负面用例的正常输出误判成真实脚本错误(首跑即撞)。

入轻闸默认段(ui_contrast 之后);轻闸 --quick 墙钟 363s → 405s(新探针约 40s),轻闸上限内。
2026-10-16 15:41:01 +08:00
DKChan c4fa65ef44 feat(迭代29 T3): L2 集成层建承载——integration/ 首个用例 + parity 收编为条件闸件
建 game/tests/integration/(此前只有章程句无实体):首个集成用例 save_rng_roundtrip_test.gd
=存档 ⇄ RNG 快照往返,17 条断言,跨 SaveManager(落盘+版本迁移链)× AdventureRunner(断点消费)
× RngService(续跑零跳号)× 停点态确定性。与 unit/core/breakpoint_resume_test 的分工:那件是单测
只验首战开板一致,本件验跨系统闭环——含「旧版本档经迁移链后断点仍可续玩」这一真实玩家路径。
并入 run_all manifest(27 套,零新机制)。
变异验证:把断点 rng_counter 改坏 → 精确命中「续玩取数号位 = 断点号位」断言见红。

tools/run_all_gates.sh 新增 11 号「回放确定性对拍」**条件闸件**:每次跑批都对 merge-base 做一遍
触面判定(data/tables/rng_service/save_manager/meta_progression/settlement/damage_math/
damage_controller/battle_orchestrator/adventure_monte_carlo),未触面 SKIP;触面也**不自动跑**——
对拍调的是 MC 脚本,属「跑批发起前须用户批准」红线,闸只负责把触面判定做一遍并显式要求批准
(批准后 PARITY_APPROVED=1 重跑),杜绝「该跑却没人记得」。指纹逻辑把 SKIP/NEED-APPROVAL 同记 skip,
两种未跑状态互变不算闸况变化。baseline.json 登记 11 闸条目(新增闸件否则会判「无基线」而红)。

README:目录布局增 integration/;新增「测试三层与承载目录」节(L1/L2/L3 各自的判什么/承载/入闸方式
与分层判据);integration 章程句由「将来落地」改为「已建承载」。
2026-10-16 15:20:25 +08:00
DKChan 8c82d3bf56 feat(迭代29 T1): 本地闸三硬闸落地——退出码/脚本错误扫描/断言数下限
①退出码为唯一权威判据:probe_gate.sh 八件探针(轻闸 4 + full 4)判定统一走 verdict 函数,
  退出码≠0 即红,PASS 串降级为附加判据(ui_click_probe 本就走退出码语义,签名标记传它自己的
  click_probe 串,不强加 PASS)。
②脚本错误扫描闸件 tools/error_scan.py(标记 import 自 run_smoke.py,禁第二份清单):
  probe_gate 逐探针段扫日志;run_all 侧因 --script 子进程的 stdout 管道恒空(OS.execute 在本机
  Godot/Windows 组合下拿不到输出,且 GUI 子系统 exe 的 stdout/stderr 句柄无效),改为整条命令
  交给系统命令解释器重定向落盘再读,退出码原样回传——引擎二进制取 *_console 版(GODOT_BIN 优先)。
③断言数下限:Kit.finish 在 checks==0 时返回专用退出码 2(不是 1——致命类套件期望 1,返回 1 会被
  expect 协议放过);run_all 汇总校验实跑套件数 == manifest 条目数。
④example_test.gd 退出生产 manifest(协议活样板,文件保留;同类先例 fog_lantern 摘除)。

变异验证(三反例 T0 判绿、T1 后全部判红):零断言套件 exit=2 判红/脚本错误套件命中 SCRIPT ERROR
判红/探针打印 PASS 后 quit(1) 判红「PASS 串不抵」。

本卡附带裁决落地(均已用户裁准):
· fx_grant_gp 补进行来源断言豁免表(grant_segment 的专长 GP 入账行无棋盘来源格,每局触发 7 次
  断言失败却因脚本错误不改退出码长期漏过;迭代 21 同款修过 fx_reveal)。
· manifest 增 negative 字段,仅 reward_dangling_treasure 一件(坏表是其测试目标,错误扫描误伤)。
· config_db_test 的 rows 定型数组赋值改 rows.assign——原写法触发 Invalid assignment 中断整个函数,
  敌人表行集三条纪律 10 条断言从未执行过(31 处 check 实跑 21 条);修复后 26 条全跑,其中两条正向
  断言见红,根因是夹具缺 depth-0 锚行(validate 的 anchor 规则),补锚行后全绿。
· system_contracts_test 的 RngStub/UnitContainerStub 空桩换真实实例(定型成员赋值报 type 空)。
2026-10-16 15:08:13 +08:00
DKChan 9846a29f4c fix(呈现): 主菜单副标题「扫雷的因 · 逐行兑现的果」整个删除(2026-10-16 用户令——无意义标语,玩家可见面禁扫雷字眼)
- ui_assembler.gd: 副标题 label 两行删除(标题与分隔线之间;局部变量无外部依赖,VBox 回流)
- shot_probe.gd: menu_sub 文字锚/自检腿退役(menu_title 保留)+ 菜单段头部历史注记换代
- shot_checker.py: 菜单·副标题 box/presence 两断言腿同撤(_meta 记录端随 pair 列表自断),不重锚
- golden: menu_boot.png 基线换代——触发原因=副标题件删除画面少一行字(呈现类批内换代,Q6 口径;提交说明强制成因即本条)
- 文档四面同步: 01-核心循环 节标题改「一场战斗的流程」(口号句无承载价值,正文已释流程);HUD框架 双舞台段删口号句保留因果论点并句;教学引导 P0 最小集合候选删「归因提示」项;07 ㉗ 目检判据删副标题字样
- 验证: shot_probe 问题=0;render_gate 全绿(shot_checker PASS / 棋盘三屏 golden OK / 菜单 golden changed=0.00% / 残留 Godot=0);改动面 7 文件(含基线 PNG)
2026-10-16 04:33:17 +08:00
DKChan e8ceb27243 chore(闸门): doc_term 升级为硬判定(2026-10-16 用户令,用语规范批第二步)——tools/run_all_gates.sh 文档三闸段 08 doc_term 加 --strict:疑似现行 ≥1 即该闸红 → 回执红 → worktree-guard 拦截合回主分支;专项补扫通道(随批/台账)本并入同一判定。通电验证——现状全绿 exit 0、注入违规行 exit 1、删除回绿;基线零漂移(此前全库疑似现行已随换代批清零,exit 码不变)。按用户令不做编辑期钩子(每编辑起 Python 进程的性能损耗否决,改为定期跑批扫描),不做豁免清单机制 tools/doc_term_known.txt 2026-10-16 02:55:36 +08:00
DKChan 4d3f8d6653 merge: master 二次吸收(ADR 体系废除批+布局闸入库)
# Conflicts:
#	design/gdd/02-系统清单.md
#	design/gdd/systems/冒险循环/冒险结构.md
#	design/gdd/systems/表现与支撑/数据配置.md
#	design/gdd/ux/battle.md
2026-10-16 00:08:01 +08:00
DKChan 19d036ce2c merge: 布局闸入库(layout_probe 补回分辨率几何断言·两档)
档位表是数据、断言是一份函数据——测试代码量与档数无关,增删档只改数组一行。
档位按 battle.md 现登记的两档(1280×800 / 1920×1080),未新增。

修正旧探针的假断言:headless 下 get_window().size 不改变视口(实测),
正确接口是 content_scale_size。旧探针「1920 档恒定」永远为真。

变异验证两发:B区高度撑爆→5 条红✓;注入全幅兄弟控件→未见红✗(边界已如实标注)。
挂 probe_gate 默认必跑段。全量闸 9绿1存量红,回执 commit=5af6c8a8。
2026-10-15 23:55:53 +08:00
DKChan 6c2dbc37c1 docs: ADR 体系废除 + architecture.md 确立为架构唯一事实源(2026-10-15 用户令:决策记录归 git commit log,不另存决策文档)
- 删除 design/dev/architecture/adr-0001~0007 共 7 份文件(内容留 git 历史可查)
- architecture.md:删「ADR 审计」「ADR 立项清单」两节;清除全文 ADR-000X 注记、QQ 表/S 表 ADR 引用;未决表关闭已落定项(QQ-01/02/03),立项清单在途事项转登记 QQ-11~14;补 A1 生成姿态事实、autoload 四件清单、board_generator 性能姿态;文档状态立「事实源地位」条
- CLAUDE.md:恢复 RNG 单点硬性红线(去 ADR-0007 引用);新增「架构事实唯一源」红线;规范导航架构行标注唯一事实源
- doc-conventions:§5 增「架构事实唯一源」行;§11 活文档清单补架构文档
- registry:architecture.yaml 删 18 处 adr 字段、autoload_set 补 SaveManager/MetaProgression、board_rending 更新为 Node2D 已落地事实;entities.yaml 12 处引用清除
- game/ 代码注释约 60 处清 ADR-000X 引用(事实与日期保留);豁免标记 ADR-0007-exempt → rng-seed-exempt(main.gd/static_scan.sh/architecture.md/06/iter27 五处同步)
- GDD/qa 实现报告/research 卡片/roadmap/tests README 引用全清;死链校验 1206 链接 0 死链、gdd_lint 0 不通过
- 代码中 adr/adr5 等为 adventure_runner 既有局部变量名(非 ADR 引用),未动
2026-10-15 23:52:30 +08:00
DKChan 5af6c8a8b4 feat(布局闸): layout_probe 补回分辨率几何断言(两档·一份断言函数据)
背景:孤儿探针 ui_layout_probe 退役后1920 档布局几何无机器承载。重建但改形态——
「档位表(数据)+ 一份不变量断言(代码)+ 循环代入」,测试代码量与档数无关,
增删档位只改 VIEWPORTS 数组一行。这与业界 Playwright parametrize/projects 同构:
同一个 test body 跑多档,变的只是输入表与基线图张数(数据非代码)。

档位按 battle.md §验收现登记的两档:基座 1280×800、16:9 全屏 1920×1080。不新增档。

关键修正——旧探针那条「1920 档几何恒定」断言是假的:
  设get_window().size = 1920×1080 → 逻辑视口仍是 1280×800(headless 下不生效)
  设 content_scale_size = 1422×800 → 逻辑视口 = 1422×800(真生效)
Godot 文档指定的运行时改基座接口是 content_scale_size;旧探针用错了 API,
其断言永远为真、当年报 PASS 是假绿。本探针改用正确接口。

断言面(每档跑一遍):三区非零/不越视口/两两不重叠/board_view ⊆ board_zone/
格子边长 ≥36px(battle.md §棋盘格尺寸公式 1280 档 12×12 → 36px)。

变异验证(CLAUDE.md 第9条)两发:
  ① battle_stage_view B区 252→700 → 5 条红(两档都中)✓ 还原后 PASS
  ② 注入全幅 ColorRect → 未见红 ✗ —— 判据只点名三区不覆盖第四个兄弟,
    该缺陷类不在拦截面内。已在代码注释标明边界,未过度设计补递归遍历
    (递归全子树查重叠极易误报容器父子关系)。

挂 probe_gate 默认必跑段(轻闸即跑)。S10 文件头闸本批零新增。
2026-10-15 23:46:39 +08:00
DKChan c963004236 merge: master 吸收(收口机制批+闸收敛批二+10-15 文档落库)——冲突五件解毕:术语表/02/数据配置取本批超集(用语规范节/同源两行/死链史实版),元进度 v1.12 与天赋树 v0.5 取主区侧(更名记载显示文字保真),doc_term_audit 语境豁免并集(主区六组+本批 buff 组) 2026-10-15 23:32:01 +08:00
DKChan 59fdb15567 docs(gdd): 用语规范批 W2——systems 十九篇词面换代 74 处(收口 21/不得 13/报错 7/若干 8/对拍 3/在飞 1/落文 2/随批 2 等按 A 表与语境义改写)+死链修复 2 处(武器锻造→锻造工坊漏改指路)+锻造工坊文头 v0.7→v0.8 失同步补齐;doc_term_audit 增设随批/台账专项补扫通道(白名单自豁免词的版本历史节外可见性)。秘宝充能 2 处与对照性收口 3 处按豁免保留 2026-10-15 22:45:56 +08:00
DKChan 20f4a7dc01 feat(收口闸): active.md 体量闸并入全量闸清单——收口漏删旧条目在合回时被拦
- tools/audit_active_state.py:判四条可机械测的膨胀签名(状态记录条目数>30、
  快照行数>10、条目编号重复含并行撞号、指向 design/qa|research 中间文档的死指针),
  另加快照整行自我重复一项(换代不彻底只往顶部 prepend 的签名)。
- 变异验证:对换代前的 34 条版本报 5 项红(A1/A2/A3/A4/A5 全见红),
  对退役后的 3 条版本报绿;两态实测 RC=1/0。
- 入 run_all_gates.sh 为 08b(脚本即清单,不另立第二份闸清单),baseline.json
  随批补 08b 绿项(本分支内实测绿,非臆造)。
- 规约挂指针两处:doc-conventions §10 机械闸句、process-conventions 批次清单 12。
- active.md 按 §10 退役:状态记录 34→3 条,快照 21 行自我重复压回 10 行,
  删「项目当前位置」整节(滞后且与 roadmap/快照重复),未决面按迭代 27/28 重列。
- 不动 Stop 钩子:回合末判收口时机错配(一轮答完≠任务完成),机械层交合回闸,
  语义层交收口技能。
2026-10-15 22:23:53 +08:00
DKChan eb5e892456 fix(闸收敛批三): .gates/.gitignore 入库 + 脚本自愈重建
合回 master 时发现:.gates/.gitignore 未入库,receipt.json 被纳入版本管理——
它是每跑批覆写的当次回执,属中间产物。

成因:重跑闸前用 rm -rf game/tests/.gates 清目录,把 .gitignore 一起带走了;
脚本自身不重建,跑得再多次也不会回来。

- .gates/.gitignore 入库(挡 receipt.json 与 *.log)。
- run_all_gates.sh 启动时自愈:.gitignore 缺失则重建,杜绝复发。
2026-10-15 22:07:13 +08:00
DKChan 3105052c51 docs(tools): 用语规范批 M8——doc_term_audit 吸收用语规范 A 表 10 词(对标/若干/不得/报错/buff/收口/在飞/对拍/销账销号/落文)+用语规范节入节级豁免+buff 行内代码语境豁免;术语表对外命名纪律 不得→禁止(A 表自洁)。随批/台账系白名单信号自豁免不列扫,注释在案 2026-10-15 21:54:40 +08:00
DKChan 94f1bba840 fix(闸收敛批二): gdd_lint 分域豁免 + doc_term 语境豁免 + 孤儿探针退役
用户令四条:清单类与术语表免 GDD 规范性检查、退役词统一处理、文件头另处解决、
无使用的探针全删。

- tools/gdd_lint.py:新增 RULE_EXEMPT(规则粒度分域豁免,**按规则不按文件**)——
  06 免 R3/R4/R7、07 免 R3/R5/R7、术语表免 R2/R5。
  理由逐条写进代码注释:R3 禁修订注记与「登记处条目要能回答谁在何时裁的」直接冲突;
  R4 版本历史节与 06「解决即移除」的状态登记体裁冲突;R5 是节名含「流程」即触发的误匹配
  (07 的「㉖全流程走查」是目检清单节、术语表「开发流程」是词条节);
  R7 长括注在登记处是常态。
  **机械可判的完整性规则 R6/R8/R9/R10/R11 一律不豁免**,真缺陷不得藏起来。
- design/gdd/术语表.md:版本号撞号订正(10-12 那条 v1.2→v1.9,两条 10-13 顺延 v1.10/v1.11),
  按真实时序重排。原撞号源于 2026-10-11 与 10-12 两批各写一个 v1.2。
- tools/doc_term_audit.py:五组退役词按语境豁免而非改正文——
  充能(秘宝主动件现行机制,扩 exempt 信号)、可选类道具与雾格(否定式引用「现行池内无可选类」
  「不做清单」——替换会毁掉句意)、伏击/heavy_multiplier(battle.md 占位表里的退役敌人 id,
  现行规格在 敌人系统.md)、拔旗(06 待办「件派生动词白名单」是待评估设计意图非在用机制)。
  疑似现行 6 处 → 0。
- 孤儿探针退役:ui_layout_probe 与 ui_audit_probe 共 6 文件(.gd/.uid/.tscn)删除——
  两者均无任何闸脚本执行(全仓仅注释与历史报告提及)。
  连带清理 render_gate.sh 头注、board_view.gd cell_size 注释、game/README.md roster 行。
  **遗留**:ui_layout_probe 原承担 1920 档布局机检面,现无承载,已在 render_gate 头注标明待补。
- roadmap.md 迭代循环第 4/5 条:轻闸/重闸改指 run_all_gates.sh,闸清单不再散落第四处。

闸况:9 道绿(含 gdd_lint / doc_link / doc_term 三闸全绿);static_scan S10 文件头 125 处
按用户令不在本批处理,已落 baseline.json 作为存量红。
2026-10-15 21:42:35 +08:00
DKChan 1d4ac91e3b feat(闸收敛批): 验收闸唯一入口 run_all_gates.sh + 合回闸回执强制 + t17 探针隔离修复 + 文档闸清单单一事实源
用户令「迭代完成前必须全量跑一遍所有测试」。起因是 iter27 台账只记 probe --click 未记
--full,t17_defer_probe 红了整个迭代无人发现——根因是闸清单散落 CLAUDE.md /
process-conventions.md / test-conventions.md 三处、彼此不一致、且无任何机器校验。

- tools/run_all_gates.sh(新):全部验证闸的唯一入口与唯一清单,串跑冒烟/单元/探针
  --click/--full/渲染/doc 三闸/静态扫描/熵增闸共十道,写回执 game/tests/.gates/receipt.json。
  与 baseline.json 比对判定:基线红且红项清单未变=存量红零新增(不判失败),
  基线绿转红或红项清单变化=新增红(判红)。python 解释器自动解析带 PIL 的解释器
  并前置 PATH(渲染闸三个脚本依赖 PIL,用错解释器会假红)。
- .zcode/hooks/worktree-guard.sh:Bash 分支加合回闸——merge/rebase/cherry-pick 进
  master 前按目标分支反查 worktree 回执,校验 commit 匹配/非 quick/无新增红三态,
  任一不满足 exit 2 拦截(九态实测:匹配放行、commit 错/quick/含红/无回执/rebase 全拦)。
- game/smoke/t17_defer_probe.gd:隔离面从 main.save_manager = iso_c 改
  ProbeUiUtil.isolate_save(iter27 已确立口径)。原写法对 getter-only 属性赋值无效
  ——组合根 save_manager/meta 是 autoload 读视图,隔离必须落在单例上。修复后 --full 转绿。
- doc_link 三处死链归零:数据配置.md 已退役探针指路、元进度.md/天赋树.md 已改名文档链接。
- CLAUDE.md / process-conventions.md §3第10条 / test-conventions.md §4 三处
  「交付前跑什么」统一为一句话=跑 run_all_gates.sh,删散落清单。

闸况:冒烟 0 / 单元 0 / --click 0 / --full 0 / 渲染 0 / doc_link 0 / doc_term 0 /
熵增 0;gdd_lint 与 static_scan 为存量红,已落 baseline.json 待判读清偿。
2026-10-15 21:16:38 +08:00
DKChan 67342c690e feat(迭代28 T4): 渲染面内容断言三件(探针自检+墨色判据+启动态菜单 golden)
①shot_probe.gd 两条自检进 _problems:boot 态顶层可见层=start_overlay(内容层树遍历——屏壳容器不当候选,camp 壳透明实证);菜单标题/副标题 label is_visible_in_tree 且 rect 落屏内;隔离档 refresh_resume 开=菜单截图不依赖真实档断点态。②shot_checker.py 增 F 字在判据:菜单文字框与中位灰度差>60 像素占比带 [2%,55%](极性无关——亮字暗底同判;实测标题 13.07%/副标题 11.47% 定 provisional 阈值;对比度只判反差不判字在的缺口由此补)。③启动态菜单 golden:帧差前置验 0.0000%/max_diff=0(光柱静态贴片零动画);golden_baseline_refresh.sh 扩 --menu 模式(shot_probe 取材→game/tests/golden/menu_boot.png,字体+按钮石纹素材守卫);render_gate.sh 补菜单 golden 对比段(素材缺位 SKIP 同 Q5 口径)。闸=render_gate 全绿(探针问题=0+checker A-D/F 全过+棋盘 golden 0.00%×3+菜单 golden 0.00%)。注:本机 render_gate 需 gamedev venv Python 前置 PATH(闸机脚本调 python(PIL),本机默认 python 无 PIL——用户侧环境自带)
2026-10-15 07:28:38 +08:00
DKChan a2d6e03df2 feat(规约): 文件头≤8行白名单制第二轮立规+头注机器闸S10(2026-10-15 用户令)
code-conventions §1.4.1 换代:## 文档注释载体+8行上限+五类白名单+黑名单+写法权威参照(Google Python Style Guide §3.8 + PEP 257,GDScript 官方指南无文件头条款不自造标准);§2.1 信号契约改入发送方 ## 文档注释每信号一行、计入上限;CLAUDE.md 硬性红线同步换代;新建 tools/audit_file_headers.py(R1行数/R2日期/R3变更叙事,正例反例边界例盲测通过:恰好8行过/机制词结算批不误伤/无头注过),static_scan.sh 挂 S10。纯规则与工具零行为变更;实测存量 125 处约 90 文件,清偿批在册待发令
2026-10-15 04:45:00 +08:00
DKChan b605022001 feat(迭代27 T5): 波五a 类型闸拉起+存量收口——审计器 0 存量+warning 配置在位
P1-6 类型闸(须 T1-T4 全落后——本波按执行顺序锁殿后):
- tools/audit_type_hints.py 新机器闸(V7): R1 无类型容器注解/R2 有值返回缺返回类型/
  R3 参数缺类型三规则+行级 # type-hint: ignore 显式白名单通道;产品码 core/data/presentation
- 存量收口: 368 处显式 Array/Dictionary 非参数化注解→机械参数化(Array[Variant]/
  Dictionary[Variant, Variant] 零行为面);13 处参数真类型(SaveManagerCore/ConfigDb/
  BattleOrchestrator/MinesweeperRules/LevelRunner/SettingsStore 等)
- 白名单豁免四处: board_generator generate/_attempt/legality/_finalize 的 db 参——
  测量面 _BoardRowStub 冒烟夹具鸭子型注入(typed 参拒 stub)
- project.godot 拉起 gdscript/warnings/untyped_declaration=1(V7 源码断言在 smoke _smoke_type_gate)
- static_scan 新 S9 类型闸规则;顺修历史 cd 错位(9-24 布局迁移后 /.. 落 game/ 致守卫
  恒跳过静默空转——修复后 S1-S4/S9 首次实跑全绿)+S1/S2 增 ADR-0007-exempt 标记豁免通道
  (main _seed_value 引擎熵源=文档化豁免面)

验收: 冒烟 1081/0(+V7×2)+run_all 27 套+static_scan 全绿+probe click+render golden+对拍三变体全同
2026-10-15 01:05:17 +08:00
DKChan fc7fee03bd chore(迭代27 T0): 逐位一致对拍锚冻结+探针迁移对照表
- tools/parity_anchor.py: 三变体(base/attune/shop)×40局 RUNSUM+JSONL 双面哈希对拍(V1 核心验收载体)
- anchor.json: 重构前锚(种子面 71000/72000/73000 错开,覆盖 base/同调账/商店-GP 账三类重构面)
- 探针迁移对照表: 11 挂载面逐一列成员依赖与迁移方向(卡片 T0.3)
2026-10-14 19:15:05 +08:00
DKChan af2d834e78 feat(迭代25): UI 全局主题批 T0-T2——全局主题资源挂载+两处局部做法退役+冒烟 V1-V6 断言
- T0: game/assets/theme/main_theme.tres 挂 project.godot gui/theme/custom——
  15 类型全覆盖(V/HScrollBar·ScrollContainer·H/VSlider·TooltipPanel/Label·
  LineEdit·SpinBox·H/VSeparator)+预盖 CheckBox/CheckButton/OptionButton/
  PopupMenu 弹层;default_font 显式指现役同字体(V6 中文字形防御);
  位图生成脚本 tools/gen_theme_icons.py(9 张纯色/几何小位图→assets/art/ui/gen/,
  按 .gitignore 政策本地生成不入库);色值溯源表 game/assets/theme/README.md
- T1: ui_kit.gd 删 tooltip_theme()/_tip_theme 与 styled_slider()、ui_assembler.gd
  删挂载行(旧实现同批删除);settings_overlay 几何内联、debug_overlay 双轨消隐
- T2: 冒烟 _smoke_global_theme() 38 断言(V1 类型覆盖+Button/focus 双红线+
  V2 冻结值 5.49:1+V3 预盖证词+V4 退役零残留+V6 字体防御)
- 引擎事实(4.7.2 源码+默认主题链双查):CheckButton 与 CheckBox 同套
  checked/unchecked 图标名;Slider 无 grabber_pressed 槽;ScrollBar 柄=StyleBox
2026-10-13 21:39:01 +08:00
DKChan c5a09fd90c refactor(改名批): 暂停层/暂停角标→状态面板/状态角标——用户令全量改名(文案4处+标识符全套PauseOverlay→StatusPanel/pause_overlay.gd→status_panel.gd/成员方法族+探针快照键+注释与探针消息86处清零;行为契约四件零动——只读R4/模态遮罩P2甲/输入锁R3/零动效P4甲)+render_gate截图键shot_pause→shot_status同步+文档六面(元进度v1.19/07/生涯/06条/architecture json+html;camp零命中;08-Alpha版本标准untracked禁碰留置)——冒烟938/0+run_all24套+probe --click/--full+render_gate全绿;rg 暂停|pause game/归零 2026-10-13 05:41:59 +08:00
DKChan 5a292859ba docs(fix): 定时检查呈报项④⑥修复(roadmap当前位置节换代+doc_term_audit充能词义豁免;纯文档零测试)
④roadmap.md「当前位置」节 2026-09-29→2026-10-11 刷新:旧节停在 M-2/M-3 时代(已达成/挂起清单全是已闭项)且把 stage.txt 当现行阶段引用——重写为当下事实(里程碑语义换代注指针 M3=Alpha完整实现现行/M4=Beta不排期;迭代19五卡已入库+迭代20头卡待发令+21/22冻结;近期主战场=文档治理连续批+下一前沿=专长/秘宝实装批写卡与迭代20卡A;实时状态归 active.md 快照节,stage.txt 定性旧开关仅存档)
⑥doc_term_audit.py 词级语境豁免机制:充能词条退役的只是挖掘期/战斗段充能(2026-09-19),秘宝主动件「每冒险充能」(同调件使用次数账,迭代11起在役)系现行机制共用该词——新增 TERM_CONTEXT_EXEMPT(充能行含秘宝/同调/主动件/每冒险等语境信号即不算命中);疑似现行 20→3(=iter19 基线三元组,定时检查不再每轮误报 17 处)
闸:lint 2 不通过(=06/07 基线存量)/死链 1(=数据配置221 存量)+06:505 worktree 环境假象/term 疑似 3(基线)/熵增 PASS
2026-10-11 16:57:42 +08:00
DKChan 081027c579 docs(fix): 文档一致性修复批(定时检查呈报项①②:死链7处+lint三文件清零;纯文档零测试)
①死链修复7处:秘宝.md 10-10目录归位批漏网5处改指 systems/跨局循环/秘宝.md(01-核心循环v1.6行/02-系统清单v1.3行/奇物.md v3.5行〔连反斜杠路径一并改正〕/地形变异.md负责表+依赖表两行)+camp.md树面板行两处补../systems/前缀(天赋树/HUD框架);数据配置.md:221存量挂账维持(iter19基线在册)
②gdd_lint三文件清零:01-核心循环 R10版本历史v1.5同号顺延(10-10分界尺行→v1.7)+R5「生命周期轴(五档)」节补五档嵌套字符画〔报错原文误记「死了之后」系工具prev/cur错位——tools/gdd_lint.py R5报错节名一行修正〕+「死了之后」节顺带补死亡重开环字符画;02-系统清单 R6术语表行多余版本列摘除+R3三行状态格改写现行白话句并换代(天赋树v0.4换代定稿29节点/武器锻造v0.2/奇物27件扩容后)+版本v1.21;03-内容规模 R1超长段拆两段+目录计数换代15→12件(普通7/优秀3/稀有2——回能器删/换装券撤/第四只手删三轮漏网面)+版本v1.3
闸:gdd_lint 9文件2不通过(=06/07基线存量,01/02/03转绿)/doc_link死链2(=06:505 worktree环境假象待主区复验+数据配置221存量)/熵增PASS;版本行01 v1.8/02 v1.21/03 v1.3
2026-10-11 16:14:08 +08:00
DKChan 442cd511a0 修复: design/结构批——diagrams 迁入 dev/architecture(案甲,熵增闸红灯清零)+旧档 GDD 引用全量摘除(31处/29文档+code/schema头注13文件+registry 5行)+doc双工具摘design/ux死路径(工作日志 412) 2026-10-09 03:29:09 +08:00
DKChan 514c32ddfb 修复: 总收口批——账面与交付物(doc_link_known 登记数据配置 v0.4 历史行死链=卡①删件连带/06 存量欠账登记〔gdd_lint 3+熵增 diagrams+奇物双死链+拔旗术语旗,T0 基点复测确认非本迭代新增〕/台账 405/快照前置/stage.txt 换代 Iteration 19 Closed/实机目检总清单+代拍板追认单交付) 2026-10-08 19:40:27 +08:00
DKChan 62d2f76ffa 修复: 卡①T6——熵增闸图像白名单收编 game/tests/golden/(本卡 T2 落库 golden 基线三张系机检测试资产非美术素材,T1 落库时漏改白名单致熵增闸红——同批修订 commit 留痕=CLAUDE.md 结构审计闸既有规则;修后复跑 golden 三张出违例清单)+tests/README 运行时口径数订正(分支基点实测 840 项 0 失败——此前误写 846 系 master 合并卡②④后口径,T0 基线复读与本批批末实跑均为 840/0)。批末闸实证:run_smoke 840 项 0 失败三闸过 EXIT=0/run_all 17 套全绿 EXIT=0/doc_link_audit 绿/doc_term_audit 绿 2026-10-08 19:21:23 +08:00
DKChan c0c066da0c 修复: 卡①T3——probe_gate --full 段落码四探针收编(ui_probe/ui_tune_probe/t17_defer_probe/fx_probe——游离闸外只能手敲→入重闸;timeout 120=实测 17.4/49.6/63.0/21.9s 的 2-7×余量;PASS 语义+退出码闸+残留批末闸随骨架)+头注释「shot_probe 禁入本闸……归真人目检」纪律句删除改写(2026-10-07 用户授权=历史偷懒标记;渲染面归 render_gate 正主)+轻闸默认段零删减零改动(--full 只增不改,契约红线②)。ui_layout_probe 零断言诊断件补最小布局断言转断言件(1280/1920 两档:基座 1280x800/顶层三区互斥不越界/board_view 含于 D 区/1920 档钉迭代 9 分辨率案甲契约——stretch=canvas_items 下逻辑视口与四区矩形恒定,分辨率维度不重复建闸;headless resize 实测生效;首跑 PASS 退出码 0;闸归属归卡③裁点②候裁本批不入闸)。probe_gate 两形态实测:默认段全绿+--click --full 全绿四探针全 PASS 残留 0 2026-10-08 19:20:59 +08:00
DKChan 8029af5e07 修复: 卡①锚清障(续)——S1 用户裁甲三件锚漂移半成品审验补完落籍(前手中断遗作逐件核验全数成立零补刀):①菜单副标题锚「改造批」→「扫雷的因」(现行文案「扫雷的因 · 逐行兑现的果」ui_assembler.gd:132 逐字子串,全工程唯一命中 contains 语义)②战斗明细带提示锚「结算明细」→「上轮摘要」(现行「上轮摘要(回看归「生涯」)」battle_log_view.gd:47 唯一命中——摘要行文案系「上轮: …」不含「摘要」零碰撞,_log RichTextLabel 不在 Label 匹配面)③菜单帮助文腿整个退役(载体玩法速览牌 2026-10-06 用户令退役——shot_probe meta 键+shot_checker 断言段+头注断言清单三处同撤不重锚,06 在册口径=同撤)。render_gate 清障后首跑 shot_checker 全 PASS 实证:菜单·副标题 WCAG=8.44/战斗·明细带提示 WCAG=11.94 均 C-OK,A/C/D 类与 hero 面板全过 2026-10-08 19:20:49 +08:00
DKChan 3d04432f7a 修复: 卡①T1——渲染闸 tools/render_gate.sh 落码+shot_probe 扩屏七屏(设置面/生涯页/暂停层真实信号路径入屏,商店房考证不可达注记留 B 批)+board_shot_probe 取证三件套(headless 护栏/空纹理 fail/board_meta.json 取样坐标落盘)+golden_board_crop/golden_baseline_refresh 两辅助件;隔离档即时 apply 修正(真实档 fullscreen 态污染抓帧尺寸 2304x1440≠1280 基准档——探针侧环境修正零运行时 diff);取证段失败语义=闸红(Q7) 2026-10-08 19:19:22 +08:00
DKChan b163341915 feat(tools): B段机检三件落地 + 逐键定档硬闸升级(立绘定档批)
B1 standee_asset_check 硬闸升级(圣经 §8.3③ 挂点规格落地):
- 逐键断言档高(原「高恒48」退役)——档高表改为 import pixelize_candidates.
  STANDEE_TIER_H,守定值单点纪律,检查器内不复写第二份数字;
- 宽度约束由虚设区间「1..75」改为物理约束「源宽×2 ≤ 站桩盒宽150」
  (standee_body.gd:29 box.x=150 / :237 scale=2.0);
- 色数 ≤32,**排除全透明像素**——naive set统计会把 (0,0,0,0) 计成一色
  ⇒ 报33 假红灯(2026-10-07 实踩),口径已固化进docstring;
- 新增描边亮度断言(character-design §10 亮描边暖白族/禁黑描边),
  阈值 40% 由 _tmp_probe_outline.py 实测标定(敌人实测 54.1–84.3%);
  主角三态实测≈0.4% 属已知缺口,本闸豁免不判红,另立素材批修。
- 负向验证:喂旧 48 档 ⇒ 8 件红灯(逐键档高+2 件描边不足),闸确有效。
- 新增 --json 输出。

B2 palette_check 新建:§4.1 新色双门执法器。**两处口径订正写进 docstring**:
① 48 色上限治的是设计色板 token,不是每张 PNG 色数(初版误套⇒12/12 假红);
② ≥8/255 近色门只管「新增色 vs 既有色板」,不是存量两两互查
  (初版误查存量⇒ drider22 组/巨蜘蛛 82 组噪声)。无 --baseline 时只读不判红。

B3 path_check 新建:asset-path-map 三层核对(目录/文件/res://引用/退役命名)。
口径订正:① res:// 根 = game/ 目录(project.godot 处),非仓库根;
② printf 路径模板(terrain_%s_%d)非字面路径,跳过;
③ 退役命名只扫代码+素材清单,且命中行含「退役/更正/改判」等记述词则豁免
  (初版全仓扫 .md ⇒ active.md/记忆文件里的历史记述全被误判,64 假红);
④ 素材环境三态区分(full/partial/empty)——worktree 素材靠人工拷贝同步,
  partial 态缺项判「未同步」而非「悬空」(character/ 已拷、fx|board|ui 未拷)。
- 首跑读数:主区 1 处真问题 = art-bible §8.5 参考核验条仍指废路径
  production/mockups/(v3.9 批更正了 4 处,此条漏网)——本批已修。

A0/A1 实测读数归档:八敌新档逐键命中 STANDEE_TIER_H(36/38/46/58/62/74/90/94),
主角三态 md5 与旧档逐字节相同(主角档零漂移实证)。
2026-10-07 18:39:31 +08:00
DKChan 0aa85ddb87 docs: 八敌立绘逐键定档 + 方案二排版批(美术线自立批讨论稿定稿,纯文档 + 管线脚本常量)
源委=P0 收口讨论批(2026-10-06,用户令「讨论期只改文档」)——派生自 3549 次
可读性实测(24 糊/32 可读/48 清楚/64 细节完整)与用户三体型约束(钩爪恐魔>灰矮人、
灰矮人<熊地精、食人魔酋长>熊地精)+ 定档总图用户确认。

① 八敌站桩源档由「全敌共用 48」改逐键定档(tools/pixelize_candidates.py 新增
   STANDEE_TIER_H:地精36/巨蜘蛛38/灰矮人46/钩爪恐魔58/熊地精62/食人魔酋长74/
   蛛化卓尔90/灰矮人石君王94;主角 48 不变,显示一律 ×2 整数 NEAREST=72–188)。
   旧 f_enemy=48/max_h 系数退役(它把普通怪压到 21–24px、全员低于可读门槛);
   SIZES 明确降级为「中间分辨率表」(决定中间图多细,不决定最终体量),并纠注
   ogre_chief=192 系分辨率选择非 Boss 档归属。派生管线 = pixel-1 紧裁 → 等比缩
   至各自档高 → dom_block_resize 块内众数降采样(禁走 recon / 重跑 remove_bg)。
② 排版改方案二:B 区 252→270(≈1/3 屏)/ C·D 548→530,扫雷盘 438×438 原尺寸
   不缩、格子不变(压缩由面板空档吸收);站桩内部重排=立绘双脚落石台上缘、血条
   +状态/名字行落底排全场一线;大体档(drider/duergar_king)头部探出盒顶压进光
   柱区,血条仍落底、意图徽标压胸;「血条悬浮头顶 + 盒内居中」排式退役。
③ 体量语义修订(character-design §5.2):强度先验 → 生物体型,小块精英与大体普
   通怪并存;§5.1 新增主角描边例外(深褐 40,19,13,浅砖面对比更高);§5.5 登记
   钩爪恐魔「宽≥高」豁免(58 高窄条长臂束状剪影,待样张批复验)。
④ 定值单点纪律(art-bible §8 头注):数字定值只落 §4.1 主色板 + §8.2,其余章指
   路禁复述;§4.1 新增色板 48 色上限 + 新色须与既有任一色 RGB 三通道差 ≥8。
⑤ §8.3 归档纪律(图片不入 git / 过程稿归档+对象存储 / 主文档禁引 artwork 散路径)
   + 三检查器挂点(色板检查器 / 路径核对器 / standee_asset_check 硬闸升级规格)。
⑥ 方向:=ission:24 rectifikace 地形色值对齐 §4.1(岩石 #8B755B→#C9AF83、地面
   #564232→#B39A78,两处提示词同步);生图渠道改为「远程对话式正主 + 本地
   ComfyUI 备选」;地形瓦片改拼表制正主(三步法),分张降为回退路径。
⑦ 对账更正:asset-path-map 废路径 production/mockups → artwork/mockups;
   art-status-checklist 格子样张 ⬜→✅、受击反馈/弹道 ⬜→◐(共 ✅4/◐8/⬜3)。
⑧ 06 新登记四条:站桩帧动画(Alpha 定版闸前)/ 主角描边素材侧复核 / 3349 草稿
   dry-run 整理 / 口号型条款机检化(三档标注格式已拍板)。

纯文档 + 1 个 Python 常量表改动,未出图未动引擎代码;重产与实装归后续任务书批。
doc 三闸/冒烟未跑(讨论批:非 loop 批且用户未点名,两入口铁规)。
2026-10-07 01:51:09 +08:00
DKChan b38ae07707 iter16ui T2:N1对比度七处落码(血数HP_BAR_BACK垫牌14.3:1/意图四墨垫PANEL_DATA牌·atk零换墨·buf换HERO_BLUE_DEEP#1E5A96·charge换GOLD_INK#74500B/槽两态STONE_DEEP#554D41+INK_LABEL/RAP显式INK_LABEL零改值)+art-bible §7.4合并豁免条款(P11 caption 12px+血数条带内读数)+新增ui_contrast_probe入probe_gate默认段(11对测点+裸Color8白名单25处/10文件过渡表+preload红线静态扫描) 2026-10-06 03:04:59 +08:00
DKChan d77a245bcc ui-struct-probe mini-loop T0-T6 全落(探针全屏零红+负向验证红+probe_gate 注册段全绿+冒烟772/0+run_all 14/15基线红+doc三闸零新增)——①M2双列叠放修复:ui_assembler.gd 右列挂回 HBox 第二列(原 pad.add_child(right) 误挂 MarginContainer 与左列同矩形叠放=实机目检抓到的根因;start_box/start_right 命名锚)②按钮宽度纪律:ui_kit.button(text,min_w=216) 全站最小宽度基准+SIZE_FILL(VBox 列内等宽拉满/HBox 行内不抢余宽——EXPAND_FILL 撑爆营地底条 1616px 实证教训注释在案);行板/角标/图标钮豁免9处(camp 5+shop 2+ap_bar 2+调试角标/诊断转储 2)③新增 ui_struct_probe(全 UI 屏结构断言:按钮互压/同容器等宽/出屏/零尺寸/标题屏双列五族;菜单簇真驱动+冒险簇真流+兑付屏 open 面合成喂入;ScrollContainer 内容豁免;modal 屏 queue_sort 手法坑在册)④probe_gate.sh 注册默认必跑段⑤07 改排:§⑪改排注记+§⑮分工注记+新增§⑯复验项⑥出口报告(代裁追认单 P1-P4+六轮 red-green 实录)=design/qa/ui-struct-probe-exit-report-2026-10-05.md 2026-10-05 18:00:32 +08:00
DKChan cf799b32a3 退役批:12份已完成中间文档删除(用户令2026-10-05)——git rm 五任务书(视野迷雾/GP商店房重构/魔法道具同调/双层BD/美术圣经v3.5)+全局作用域变异任务书+挖掘风险不等式方案+ux-review+perfect-l1+三提案(秘宝底稿/A3奖励格差异/playnote机制);指路句改写13文件全数git留痕(roadmap六处/06/行动经济/entities三处/art-bible三处/地形变异改指调研§7/秘宝两处改指57da58c/冒险结构/关卡节点地图/元进度/clear_dominance_audit)+reward_expectation旧基准注释核正(七型79→九型77按reward.tres实证)+死亡清单四行勾销+执行注记⑤;死链闸6=基线同款零新增;秘宝提案八拍板/A3否决/playnote题二均git号留痕(57da58c/a404a65/12e934b) 2026-10-05 08:07:28 +08:00
DKChan 12428e56d7 判式换代批T5出口(迭代14②):改后锚跑(MC n400同窗+verifier双窗重跑exit0——首跑campaign段互踩静默死亡在册)+判读三件(β带u=1/2带内u=3登记态/δ敏感度行为无感保留+登记/条件二等号压线转绿·整数量级u=3微欠-1.1%登记面)+audit条件二面板升级机制同式实算(w_flag_hit四舍五入跟随GDScript)+出口报告(provisional追认单8项含damage_probe A1改前既有红灯在册)+roadmap✅落地标注;锚换代=runsum_m4iter14mineq_post_n200_20261005现行 2026-10-05 06:51:17 +08:00
DKChan 26374accb3 判式换代批T0-T3(迭代14②):audit常量刷新(池77/直伤6-8-8/heal2/清图24-40/AP8/off_guard-1/伏击退役/九型字典/β带+逐型输出——改前静态锚判值与方案报告§四逐位吻合)+runsum五字段落码(flag_placed/hit/miss/gain/penalty——行侧判据考证=授予行专带highlight,状态复发行排除,实测87行==87插旗1:1)+F1条款3重立三层口径(聚合健康式只留下限0/旗边际引理/条件二旗溢价δ=0.25登记已知破)+β带[1.2,2.5]判读入文+η读数入文+战斗结算gp/ap当量注记+验收条款3对账+难度联动表+6行+P1改判读回执+registry clause3_inequality重立条(改前锚+P7两点修正)+06破线条收口+07⑫旗溢价目检项;闸=冒烟747/0+doc三闸对基线零新增(worktree死链+2系gitignored路径环境性) 2026-10-05 03:43:42 +08:00