Commit Graph
1472 Commits
Author SHA1 Message Date
DKChan c5a433b1d3 fix(迭代29 T6): 扫描域——S3 路径修正与零命中自检,补 S5 规则
S3 此前扫的是裸路径 `core`(仓根无此目录,2026-09-24 布局迁移后实际为 game/core)⇒ 恒零命中恒绿、
什么都不扫,白守了「数值单一事实源」这条红线。修正为 game/core,并豁免注释行与 config_db.gd 自身
(数值单一事实源的正主,它的单点 load 是本规则的例外)。
补 S5(core 禁裸引用 autoload 全局标识符——--script 模式 parse error):形态=标识符后紧跟 `.`
的成员访问才算裸引用,排除注释行与被引号/斜杠包裹的字符串字面量("[ConfigDB/%s]" 日志前缀、
"/root/ConfigDB" 取节点路径都属文案与路径,不是标识符引用)。core 层实测零命中。

新增零命中自检:每条规则的扫描路径收为单点变量(DIR_CORE/DIR_PRES),规则自己先数一遍扫描面
文件数——数为零一律判红,且规则体包进自检成立的分支(避免判红之后又打出「ok」的自相矛盾输出)。
这样路径写歪时自检会跟着一起歪、一起红,不会再出现「恒零命中恒绿」的静默空转。
变异验证:把 DIR_CORE 改回原错误值 `core` → S3/S4/S5 三条同时判红「扫描面为空」。
2026-10-16 16:01:39 +08:00
DKChan d091c98163 feat(迭代29 T5): L1 覆盖补洞——4 个零指名 core 模块 + 呈现层两件直接单测
新增六套(run_all 27 → 33 套),全部进 manifest,全绿:
· core/board_generator_test(9 条):尺寸与 board_gen 表一致、每个安全格数字恒等于八邻雷数
  (全盘逐格复算)、同种子雷集/数字集逐位一致、可推理性度量与清图判定自洽。
· core/minesweeper_rules_test(12 条):装板带初始扩张揭示且未铺满安全格、安全格余量=总数−已揭示、
  挖已揭示格拒(target_revealed)、挖非相邻格拒(not_adjacent)、fx_reveal 推进揭示并递减余量、
  插旗落旗态与计数、目录外意图被拒。
· core/config_db_resolver_test(8 条):ceil 进度键偏难语义(请求 (1,1) 命中 (1,3) 而非 (1,0))、
  行集按表文件行序返回、ceil 行集、难度乘数 clamp 上下限、未登记坐标返回空修饰。
· core/config_db_cross_validator_test(4 条):正向全对齿零错(防误伤)、悬空 skill_id 必报、
  buff 挂主角侧状态必报(cast_side)。
· presentation/hud_presenter_test(5 条)+ battle_narrator_test(9 条):文案逐拒绝原因正确、
  兜底不吐空串、数值带入、胜负互异、关卡收束态恒定、Boss 名带入。
三屏壳的断言面由 T4 screen_flow_probe 承担(六步流程每步判屏级互斥),不另起第二载体。

变异验证:hud_presenter 的「AP 不足。」改漏句号 → hud_presenter_test 精确见红。
另有一批「写反的断言被实现抓出」的证据(首跑即红、逐条订正后转绿):装板并非零揭示而是带初始扩张、
挖受英雄邻接约束、插旗需 flag_range_free 或相邻且要先给足 AP、技能 type 是 basic 不是 attack、
状态表 id 键是 effect_id 不是 status_id、battle_end_text 在 level_end=true 时恒为「关卡通关!」。

顺带实证本批核心命题:config_db_resolver_test 首跑因诊断回调的 lambda 形参类型写错
(首参是表 id 字符串而非 int)触发 Callable 调用失败——脚本错误不改退出码却让整个解析函数静默
返回 null,套件仍会报「全绿」。正是脚本错误扫描存在的原因。
2026-10-16 15:55:33 +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 853bd12baa docs(迭代29 T2): 术语订正与 CI 残留清除(机械面)
README:CI 残留 6 处全清——头注 CI 行改「门禁=本地闸」+无远端无 CI 声明、目录布局「CI 冒烟统一入口」
→「单元套件统一入口」、Running「CI 调用点」→「本地闸 02 闸调用点」、「CI 旁必须配外部超时」
→「本地闸必须配」、Static Scan「提交前双跑:本地+CI」→「提交前本地跑」、「## CI」整节(含 gdUnit4
安装说明)→ 改写为「## 本地闸(唯一验收门禁)」。
run_all.gd 头注 CI 残留 2 处清除(外部超时改本地闸、探针由 probe_gate.sh 调用)。
CLAUDE.md 单件直跑清单里 run_smoke.py 标注为「系统级断言面」并指路术语表。

术语:新增 README「术语(本项目内的唯一语义)」小节——冒烟=秒级存活检查/单元套件/场景探针/
集成用例四词各归其位,并显式点破两处历史遗留命名(run_smoke.py 与 game/smoke/ 名带 smoke,
实际承载的是系统级断言面与场景探针,判定看语义不看文件名)。「逻辑冒烟」全库清零。
README 套件计数按开工日读数订正为 26(example_test 退出生产 manifest)。
2026-10-16 15:11:17 +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 698d864dcc docs(迭代29 T0): 开工日基线冻结与三反例缺陷坐实
基线(master 752c9a0a,worktree 同点实测):冒烟 1127/0、run_all 27 套、在闸探针 9(轻闸4+click1+full4)、
墙钟 run_all 34s/smoke 71s/轻闸 quick 363s、存量红仅 09 静态扫描 exit=1(S10 文件头 127 处)。

T0-① 三反例全部判绿=三硬闸缺陷坐实(非推断):
a 零断言套件 → run_all PASS;b SCRIPT ERROR 套件 → run_all PASS(错误未中断后续断言,仅外部扫描可抓);
c 打印 PASS 后 quit(1) 的探针 → probe_gate 报「全绿」。三靶子验后已还原。

T0-④ 复核 F1'-F11' 全部 file:line 无漂移(core 23 文件、7 个真零指名、status_container 2 指名、
呈现层 5 件零指名、smoke 29 .gd/12 .tscn 均复核)。
2026-10-16 05:00:06 +08:00
DKChan 752c9a0aa5 merge: 调试入口修正批入库——boot 菜单优先+开始屏右下角「调试」角标恢复(worktree g-plan2-dbgentry-20261016)
用户 F5 实测否决上一批「启动即开」:浮窗 boot 自动开把开始屏盖成调试面板,且菜单层零入口
(关掉后无法再开)。修正三问:入口=开始屏右下角角标+对局中两屏角标(角标实现自 git 历史
40fb4a5c^ 恢复);触发=点击;效果=浮窗悬浮于菜单之上可关。_debug_entry 门控保留(发布前
删 main.gd:219 时角标可见性同批失效)。探针/断言四处换代(smoke V2f/V1a、click_probe、
tune_probe ① 角标点击路径、shot_probe 删死代码)。首轮冒烟抓两处自伤并修复(返回键漏
dbgbtn 致层序红、角标可见性赋值早于门控落定)。全量闸验收通过;合并后主区冒烟兜底。
2026-10-16 04:33:25 +08:00
DKChan 849e4b1cd2 docs(卡片): 测试分层与门禁语义修正批升 v2.0(三轮复查结论落文,U0 门只欠发令)
grilling 两轮+一轮只读深挖后一次性升版。首轮十一问按推荐全裁(L2 承载+2 例/parity 收编为条件闸件以守「MC 无数值改动零跑」红线/CI timeout 前提已死改铸为轻闸墙钟预算/integration 并入 run_all manifest/S9 存量豁免维持但新写测试件全类型标注〔升契约 8〕/golden 显式重制+呈报+复闸/smoke 两名不改名只加注);第二轮 N1=§2 改指针(事实面归 architecture.md 测试域三张表,禁双载体漂移)、N2=T6 收 S3 路径修正+零命中自检(+0.25d)。

事实订正四处:PASS 串判定面实为 8 件探针(非 4);game/smoke 实为 29 个 .gd(非 38);T5 的 status_container 不是零覆盖(2 单测已指名)→ 换 board_generator;README「ci-removal 批已改写门禁节」前提不成立(分支未合入)→ CI 残留 8 处改由本批 T2 清除。死引用订正:CLAUDE.md 旧节号(文件已压到 71 行)、tests.yml(已删)、golden_compare.py 行号。新增义务:批末回写 architecture.md 三硬闸矩阵与 S 表。估时 T0-T8≈6.0-7.5d,软盒 7d。active.md 快照两行同步+状态记录 504。文档三闸全绿。
2026-10-16 04:24:29 +08:00
DKChan bf65b49331 fix(调试入口): boot 菜单优先+开始屏右下角调试角标恢复——用户实测否决「启动即开」
用户 F5 实测:浮窗 boot 自动开把开始屏盖成调试面板(640×约700 居中面板盖掉大半个屏),
且菜单层没有任何浮窗入口(iter18 迁宿主两屏的理由=启动即开,已不成立)——关掉浮窗后
菜单上无法再开。用户令查三问(入口在哪/何时触发/触发后效果)后修正:

- main.gd:_ready 删 boot 自动开浮窗(_debug_entry 门控保留);恢复菜单角标接线
  (pressed→_on_debug_badge_pressed);可见性赋值挪到门控落定之后(原在 _build_ui
  读到初始 false——首跑冒烟抓出)
- ui_assembler:恢复右下角「调试」角标(git 历史 40fb4a5c^ 原实现:PRESET_BOTTOM_RIGHT
  16px 角距+FS_HINT+豁免宽度基准)+ 返回键补 dbgbtn(首跑漏了返回键致 menu_screen
  句柄 null、_build_ui 中断、V1c 层序红——冒烟抓出)
- scenes/menu_screen.gd:暴露 dbgbtn 句柄
- debug_overlay.gd:desc 文案改三处入口说明(开始屏右下角/战斗屏 HUD/地图屏角标)
- 探针/断言四处换代:smoke V2f 改「boot 不开浮窗+菜单角标可见」、V1a 收回严格判据;
  click_probe boot 检查反转+角标检查翻转为缺失才红+删浮窗恢复断言;tune_probe ① 改
  角标真实点击开窗路径;shot_probe 删浮窗归一段(已成死代码)
2026-10-16 04:21:49 +08:00
DKChan aad2999aba chore(zcode): 移除 .zcode 工具配置并更新忽略规则
删除 .zcode 下的 hooks 与 plans 配置,将 .zcode/ 和
.zcodeignore 加入 .gitignore;同时重写试玩问题记录文档,
用新条目替换垂直切片 v1 的旧内容。
2026-10-16 04:14:23 +08:00
DKChan d3356985a8 merge: 贫矿脉屏蔽+DS_DEBUG写死批全量入库(五提交, worktree g-plan2-shielddebug-20261016)
用户令两项(2026-10-16):①「地形变异特异关卡后续重新做设计,先屏蔽」——variation.tres
删 skewed_veins 行,Boss/精英图全局池空→region 兜底回落,玩家面零横幅零角标零偏斜;
②「debug 变量直接写死,不读环境变量」——main.gd _debug_entry 恒 true,全库 DS_DEBUG
引用清零。机械面文档四件同步(07 ⑪ 转记/架构行数/数据配置/06 条目);设计语义面立
反哺点待裁(地形变异.md §全局作用域型/HUD 框架三层预告/教学引导手册行/难度曲线两行/
art-bible §4.6.3 括注)。闸面三修(冒烟作用域/shot_probe 浮窗归一/click_probe 断言
归位)+ 基线 09 指纹刷新(并行会话头注漂移,非本批引入——主区与分支审计逐行一致)。
全量闸验收通过(存量红零新增);读数义务归 M4(Boss 图资源面/region 布置分布)。
2026-10-16 03:53:30 +08:00
DKChan 15c64c3552 fix(冒烟): 屏蔽批两处断言语义订正 + 基线 09 刷新(并行会话头注漂移,非本批引入)
- 变异断言语义订正:board_variant_ids 只装板级/全局型(region 变异在格子级 variants)——
  板级空断言 + 格子级恰一行且在 {magma,ash} 断言 + 确定性比对加 variants 字典逐位
- V1a boot 顶层断言容错调试浮窗(2026-10-16 写死后 boot 即开,浮窗悬浮于菜单之上=
  合法顶层;原守卫「菜单被冒险屏盖住」语义不变)
- baseline.json 09 项 fp 刷新:主区与分支 audit_file_headers 输出逐行一致(128 行),
  漂移源于 20f4a7dc 之后主区 .gd 头注变动(并行会话),本批零引入;红项仍为存量
  127 处,仅对齐指纹
2026-10-16 03:43:35 +08:00
DKChan d468595a5a fix(闸): 本批闸面三修——冒烟作用域/shot_probe 浮窗归一/click_probe 断言归位
- smoke_all.gd:确定性断言跨块引用 bb/crng 出作用域(Parse Error)——首跑结果
  hoist 为 boss1_ids/boss1_calls 函数级变量再比对
- shot_probe.gd:DS_DEBUG 写死后 boot 即开浮窗压在菜单上(boot 顶层检查/golden/文字
  占比三处受扰)——截图前走 _close_modal 真实单口归一,视觉契约与调试模式解耦
- ui_click_probe.gd:恒开断言原址在设置面开中段(ModalStack 遮挡语义下浮窗暂隐,
  误判)——挪至 boot 段断言即开,设置面关闭段补遮挡恢复断言
2026-10-16 03:27:36 +08:00
DKChan 740464eae5 docs(active): 快照同步迭代 29 编入(状态记录 502)
迭代 29 门牌登记后,active.md 快照两行原表述已失真(「已裁在册」「待发令」仍指向 M4 数值批/迭代 29+=当初致别的会话跑偏的同类表述)——按本文件立宪「每一行都必须在当下为真」同批换代:更新于 2026-10-16;已裁在册行改记 M4 废除+迭代 29 测试分层与门禁语义修正批;待发令行以迭代 29(U0 门)取代 M4。追加状态记录 502 记本批三改与遗留(06 登记时机、ci-removal 分支重做待用户裁)。体量闸 PASS(状态记录 7 条/快照 10 行/编号唯一/指针全活)。
2026-10-16 03:12:59 +08:00
DKChan f1663ef935 docs(同步): 贫矿脉屏蔽的机械面四件——07 ⑪ 转记/架构行数/数据配置清单/06 条目
- 07 ⑪:加「✅ 转记(2026-10-16 用户令屏蔽——前提失效,无需验)」注记,六项判据
  全部失效,重建设计立项时随新卡重立目检项
- architecture.md:96 variation 定义行:现行 7 行 → 6 行(global 型机制代码保留)
- 数据配置.md:61 变异表行:现行七行 → 六行(删行注记)
- 06 战斗节点地图类型差异化条:「已实装的部分」改写为贫矿脉已屏蔽删行、剩余面不变
- 设计语义面(地形变异.md §全局作用域型/HUD 框架三层预告/教学引导手册行/难度曲线
  两行/art-bible §4.6.3 括注)按「设计权威文档不随批直改」立反哺点,待用户裁决另批
2026-10-16 03:11:55 +08:00
DKChan 21c83f5736 docs(roadmap): 迭代 29 编入测试分层与门禁语义修正批(2026-10-16 用户令)
roadmap:迭代 29 行改写为「测试分层与门禁语义修正批」——需求卡片=design/research/需求卡片-测试分层与门禁语义修正批-2026-10-15.md(v1.4,T0-T8≈5.5-7d,开工门=U0〔Q3-Q7 裁点+卡片 v2.0 重核+/iter 发令〕);新增「迭代 30+ 位空」行——原 M4 数值批已废(2026-10-16 用户删卡令「它就不是一个应该存在的东西」),禁止再以该名义立批/规划/引用已删卡,四项数值欠账归 06 在册、重新归属待用户裁;当前位置节迭代进度与近期主战场两处换代(下一前沿=迭代 29);迭代 23+ 行(M4 原始泊位)追加作废注,仅作排期史保留。

需求卡片 v1.5:排期行与 §5 roadmap 同步行更新;登记 v2.0 重核遗留项(残留 CI 措辞四漏网点+事实基线换代:冒烟 1086→1125/0、门禁五闸→run_all_gates.sh 编排、architecture.md 测试域节已成文、Q3 的 CI timeout 前提消失);订正 v1.3 版本条目尾部重复段。文档三闸全绿(gdd_lint 0 不通过/死链 0/疑似现行 0)。
2026-10-16 03:09:34 +08:00
DKChan d1b2e519ce feat(调试): DS_DEBUG 环境变量门控写死=true——用户令「直接写死,不读环境变量」(2026-10-16)
- main.gd:219 原 OS.get_environment("DS_DEBUG")=="1" 读取退役,_debug_entry 恒 true
  (启动即开浮窗+两屏角标;var 注释与 6 处会话门控注释同步换代)
- 闸断言换代:smoke V2f 由「态==环境变量」改「恒开」断言;ui_click_probe 原
  「未设时浮窗不得默认开」反转为「未恒开即失守」;ui_tune_probe 删自设环境变量
  死代码(OS.set_environment 行)+三处消息/注释换代
- 其余 6 文件 10 处注释/文案清扫(ui_assembler/debug_overlay 含浮窗内用户可见
  工具提示/modal_stack/board_zone_view/level_map_screen/README)——全库 DS_DEBUG
  引用清零,无新旧并存
- 发布前删除事项:main.gd:219 一行(用户知悉;无 CI,两道恒开断言会红兜底)
2026-10-16 03:08:31 +08:00
DKChan 9723c1524b feat(屏蔽): 贫矿脉地形变异删行——用户令「特异关卡后续重新设计,先屏蔽」(2026-10-16)
- variation.tres 删 skewed_veins 行(scope=global/resource_face/effect_value=30):
  Boss/精英图全局池空 → _resolve_global_variant 空行回落 → region 布置原路兜底,
  玩家面零横幅零角标零资源偏斜;删行依据与首发批裁决记录改写为屏蔽注记(git 历史可溯)
- smoke_all.gd 7 处断言换代为「全局池空→region 兜底回落」路径:
  行数 7→6 / boss 池去 skewed_veins / L2 boss+elite 全局决议改断言空行 /
  Boss 图改断言恰一行 region 变异+格子级布置恢复+取号恢复 / 快照投影与板载一致 /
  同种子确定性(region 路径);节头与 print 同步换代
- resource_face 机制代码(RewardEconomy 偏斜投影/schema 互锁/负样本)零触碰,
  重建设计直接加行即可
2026-10-16 03:05:26 +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 175aa3f9ea docs(架构): v1.7 补修两处——①架构原则 1 残留英文层名 Core/Feature 改中文(核心层/功能层),与本文层名对照注记统一;②模块归属命名规约描述同步 code-conventions 文件头第三轮新规:头注禁写文档链接,「实现 GDD:xxx」一类已废止,代码↔设计追溯由 GDD 文档与 registry 承担。三闸全绿(gdd_lint 0 不通过/doc_link 死链 0/doc_term 疑似现行 0) 2026-10-16 02:28:10 +08:00
DKChan 86169065af docs(用语): A 表全量词面换代批(2026-10-16 用户令第一步)——design 四域 36 文件机械替换约 371 处:随批→顺带 123、收口→完成 114、落文→写入文档 76、不得→禁止 53、台账→状态记录 35、对拍→逐项比对 12、销号/销账→注销 12、在飞→正在执行中 3、不报错→不返回错误 1;豁免面零触碰——版本历史既有行、对照性替换记载句(「X」→「Y」)、术语表与 doc-conventions 条文自身、engine-reference 留档区、美术审计会话存档、buff/debuff 代码标识符、「不得不」惯用语;难度曲线与Boss「随批次扩展」改「随后续批次扩展」避词面误中;三闸全绿(gdd_lint 0 不通过/doc_link 死链 0/doc_term 疑似现行 0 含 --strict 复核);闸门升级(--strict 入钩子+豁免基线清单)按用户令留待后续讨论 2026-10-16 02:17:00 +08:00
DKChan 0ea3a0f53a merge: 纯文档合入豁免条款+active.md 501 条入库 2026-10-16 02:05:31 +08:00
DKChan 3b083b2257 docs(guard): 纯文档合入豁免条款入库(合回闸:merge diff 不触 game/ 放行,2026-10-16 用户令「改了代码的合入才做测试验证」)+active.md 501 条(用语规范批收口登记) 2026-10-16 02:04:48 +08:00
DKChan ddb598f712 docs(06): 用语规范 A 表清残留——「在飞」五处→「正在执行中」(2026-10-16 用户令;M4 族四条状态行内〔不影响 17 在飞开发〕括注词面换代,语义零改动;08 无命中);三闸全绿(gdd_lint 0 不通过/doc_link 死链 0/doc_term 在飞组仅余 registry/architecture.yaml:30 一处——06/08 范围外,留后续换代批) 2026-10-16 01:50:03 +08:00
DKChan 0ad7931907 docs(规约): 文件头第三轮定稿——介绍本模块入规范(Python 存在性条款成文)+白名单两类+一切文档反向链接废止(用户令)
§1.4.1 换代:头注存在性=pyguide §3.8.2 明文要求(module docstring 介绍 contents and usage)+PEP 257;白名单五类砍两类(①职责摘要 ②使用约束);黑名单新增一切文档反向链接(实现 GDD:/指路:废止,追溯归 GDD 文档与 registry 侧);§1.4 GDD 锚行条款同步废止;§2.1 删留指路行死句;CLAUDE.md 红线同步
2026-10-16 01:45:27 +08:00
DKChan 067173f1bf merge: ADR 清除补漏(tests.yml 6 处 + 冒险结构复活行;纯文本改动) 2026-10-16 01:23:48 +08:00
DKChan bfa44b138e docs: ADR 清除批补漏两处——①.github/workflows/tests.yml 6 处 ADR-0004 引用(原批 --include 过滤遗漏 .yml 扩展名;该文件存废归迭代 29 CI 批,本次只清 ADR 关联);②冒险结构.md:187 的 ADR-0007 裁丙复活(并行会话 4d3f8d66 合并冲突解法倒回未清除版,重新清除) 2026-10-16 01:23:26 +08:00
DKChan 4ca2d10245 docs(08): 状态刷新批 v1.6(2026-10-16 用户令)——锻造工坊行/路线行族(事实源订正 meta_forge.tres→forge.tres)/营地锻造柜台占位注 三处失实回填为在役;数值统一标定按 2026-10-09 里程碑立规(M4=Beta)结案、移入「六 · Alpha 不含」,未决项八减为七重编号;文头状态行 v1.4→v1.6(v1.5 漏更一并补);06 立绘条未决项指路由旧编号改按名指路。三闸全绿(gdd_lint 0 不通过/doc_link 死链 0/doc_term 仅存量备忘) 2026-10-16 00:50:39 +08:00
DKChan af321c0385 merge: 简明技术中文用语规范批——GDD 全库词面换代约 250 处+术语表用语规范节(A 表 12 行+豁免条款)+词条五组+死链清零+doc_term_audit 吸收 A 表(2026-10-15 用户令;九提交含 master 两轮吸收;纯文档合入未跑测试闸,同日 4ed48b86 前例) 2026-10-16 00:12:35 +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 3b9629d8a3 docs(active): 500 条——决策文档体系废除批收口;修正 499 条分支台账失实(ci-removal-20261015 实际未合入,其 ADR 两条已被本批取代);架构行改 v1.6 2026-10-15 23:54:47 +08:00
DKChan 4ed48b8620 merge: ADR 体系废除 + architecture.md 确立架构唯一事实源(文档批,73 文件;死链 1206 链接 0 死链、gdd_lint 0 不通过;按用户令未跑测试闸) 2026-10-15 23:52:54 +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 07382a4e70 docs(gdd): 用语规范批 W4——06 在办现役条目词面 32 处(随批 11/落文 8/收口 5/不得 3/台账 2/销号 1/对拍 1/语序适配 1),已办结与裁决记载 87 处按豁免保留并逐条分类;战斗表现/敌人系统台账引路 3 处换代状态记录(终扫)。06 无版本历史节不新增 2026-10-15 23:28:10 +08:00
DKChan 83c88c4566 docs(gdd): 用语规范批 W3——表现与支撑 16 处+ux 55 处词面换代(收口 19/台账 17/随批 11/不得 12/buff 1 等按 A 表)+死链终清(config_fatal_probe 迭代19退役去向双证并入数据配置 v0.4 行注)+camp 文头 v1.5/level-clear Last Updated 失同步补齐。伏击者留痕与验收口径子串误报按豁免保留 2026-10-15 23:11:18 +08:00
DKChan f22adb5564 docs: 落库 10-15 日间未提交文档改动——architecture.md v1.5(测试与质量域节迁入+中文化+现状同步)/ CLAUDE.md 规约导航表去 adr 指针(同 diff 删了 RNG 单点红线一行,疑似误删,由 ADR 清除批处理)/ 02-系统清单补 08-Alpha 登记行(10-13 遗留) 2026-10-15 23:02:55 +08:00
DKChan 07a0ae6e31 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/)
2026-10-15 22:55:22 +08:00
DKChan 99a09ad6a0 docs(收口机制批): 台账按合并现状校正——499 去掉「待发令合回」失真措辞并补记 hooks 不随仓库传播(Qoder 侧活体探针未被执行、成因待诊断,Claude 侧配置为空,仅 ZCode 在跑);快照与未决面按 gatefix-20261015、ci-removal-20261015 已合入 master 换代,t17 存量红改记「曾有」 2026-10-15 22:54:52 +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 de8d28b630 merge: 闸收敛批四(合回闸入库)
修流程性错误:worktree-guard 的合回闸代码此前只改了主工作区未提交,
master 上 hook 仍是旧版(只拦 commit 不拦 merge),闸机制实际未生效。
八态实测通过。回执 commit=a4fba15e。
2026-10-15 22:45:18 +08:00
DKChan a4fba15eac feat(闸收敛批四): 合回闸入库(worktree-guard 拦 merge 前校验全量回执)
修自己的流程性错误:合回闸代码此前只改了主工作区的 .zcode/hooks/worktree-guard.sh,
从未提交——.zcode/ 是 worktree 铁律的豁免直改面,但豁免直改不等于豁免提交,
改完必须 commit 进库。结果是 master 上的 hook 仍是旧版(只拦 commit 不拦 merge),
闸机制实际未生效。

Bash 分支加第三路:merge/rebase/cherry-pick 进 master 前按目标分支反查
worktree 回执(git worktree list --porcelain 定位,兜底扫 sibling 目录),
校验三态——回执 commit == 分支 tip、非 --quick 档、无新增红项;任一不满足 exit 2。

八态实测:匹配回执放行 / commit 错拦 / quick 档拦 / 含红项拦 / 无回执拦 /
worktree 内 commit 放行 / 只读命令放行 / rebase 拦。
2026-10-15 22:35:06 +08:00
DKChan 28265773af docs(收口机制批): 台账 499 条入档 + 豁免面补 .qoder(本机 harness 配置不入 git,走 worktree 带不进去) 2026-10-15 22:33:37 +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 458085ed32 merge: 闸收敛批三(.gates/.gitignore 入库 + 脚本自愈重建)
修合回时发现的 receipt.json 误入库——它每跑批覆写,属中间产物。
成因是重跑闸前 rm -rf .gates 把 .gitignore 一起带走,脚本自身不重建。
2026-10-15 22:16:54 +08:00
DKChan e0ec255d7c docs(gdd): 用语规范批 W1——主档五篇词面与失同步(01 篇六处+行序归位;08 篇状态行 v1.4+现状四值枚举+销号注销;02 篇三处含 08 行版本同步;07 篇 35 处流程动词换代;术语表 A 表补注销词义限定注)。03/04/05 零改动有据 2026-10-15 22:11:19 +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