Commit Graph
240 Commits
Author SHA1 Message Date
DKChan 33e1f11057 test(卡② T7补漏): 补齐 §9 正向验收主力 V1/V2/V6 与全 Vn 标注 + V1/V4 变异验证
前批合回时漏建卡② §9 逐需求点「正向验收主力」断言(四桶机制),仅靠迁移旧测+V12 兜底——
V12 formed/rules 输出面不作判据,adventure 桶跨战持久若坏不会红,核心缺陷消解无回归网。本批补:
- V1 冒烟新段:同一 RunLedger 两 begin_battle 各真实 request_dig,断 adv_twin_digs 经 ctx 就地写宿主字典跨战累积=2
- V2:start_adventure 后 adventure 桶置空(feat_vouchers)
- V6 冒烟新段:次战新编排器 fx_counters_battle 天然空、battle 桶 insurance_used 读 0
- V3/V4/V5/V7/V8/V9/V10 补〔无状态化 Vn〕尾缀使 §9 可追溯
- 变异验证:V1 断 adventure 桶引用改新建空字典→3 条红;V4 断 level 桶不共享→红(证回归网真拦得住)
2026-10-21 02:45:57 +08:00
DKChan 003581f4c4 feat(卡② T7-V10): static_scan 新增 S12 旧件零残留扫描 + 清尽注释内旧符号
- S12 扫 game/ 全域 .gd/.tres(改名与旧符号同存数据行/测试/smoke,非仅 core):
  counters_export/counters_seed/counters_merge_export/counters_seed_snapshot/_reset_tree_limited_counters
  + 带引号旧 id "tree_sense_*"/"twin_digs"/"instinct_atk"(引号锚定不误伤新名)零命中
- 非空扫描面自检(185 文件);注入 counters_export 见红、还原回绿(变异验证取证)
- 迁移注释措辞去除旧符号字面、feat_vouchers V16 写键 twin_digs→adv_twin_digs
编号说明:卡① 已占 S11(代码注释禁用词),本扫描落 S12(卡片成文时 S11 未定义,属卡片与现实偏差,归反哺点)。
2026-10-20 23:22:44 +08:00
DKChan b226a292df test(卡② T7-F2): 旧测试断言随无状态化换代迁移(smoke 裸引擎段 + 4 单测件)
- smoke_all 裸引擎段 ~53 dispatch/写口 ctx 化、twin_digs→adv_twin_digs
- _smoke_tree_rules:standalone 引擎自建 ctx、sense 限次跨战持久改 level 桶共享引用(删 export/seed 链)
- effect_words_t1_test ⑥⑦重写为桶语义(adventure 共享字典往返、round_ 前缀随 round_start 整桶清空、battle 无前缀存活、counter_spend 静态)
- tree_rules_v11_test 合成行夹具 lvl_ 改名+删 domain;treasure_effects/settle_segments dispatch/counter ctx 化、dig_combo→geo_types 活 id
冒烟 1150/0、四单测件 EXIT=0(换代同生死,无假绿)。
2026-10-20 23:19:40 +08:00
DKChan ae5baed699 feat(卡② T1): EffectContext 新建 + 四宿主接线(引擎接口未动·纯 ctx 引用束)
- 新建 game/core/effect_context.gd(四桶公开类型化字段,零方法)
- BattleOrchestrator:fx_counters_round/fx_counters_battle/counters_ctx 三成员,_init 建 ctx 挂自有两桶,
  begin_battle 挂 adventure_bucket(=_ledger.adventure_counters) 与 level_bucket(enc["level_counters"])
- set_fx 三协同件扩 ctx 参并存 _ctx(引擎 API 暂不改,T2 动)
- LevelRunner:level_counters 成员 + enc 下传
- 删 _reset_tree_limited_counters(按关清零改由 level 桶随 new 承载)+ 调用点 + 冒烟旧 V10 直呼断言
冒烟 1150/0(旧断言随函数退役,-1 项符合预期)。
2026-10-20 22:55:28 +08:00
DKChan a8db225799 fix(卡② T0首提交): 采集器 rules 档 tree_rules 类型修复——Array 包裹 split 结果
String.split() 产 PackedStringArray,被 adventure_runner.gd:118/:200 的 is Array 守卫整组静默丢弃,
致 rules 档与 off 档逐位相同(分组空转、V12 rules 组恒假绿)。测试工具类型修复,无玩法改动。
2026-10-20 22:44:21 +08:00
DKChan b6629d6848 feat(T2-T6): 五词注释换代——完美排雷→完美封印/板级→整图/门票→专长凭证/正主→现行事实源/落籍→已入库
全局 sed 替换 89 处命中清零(S11 绿)。修复:
- 移交 3 处保留原词(shop.tres:86 display_name、curio_controller:165-166 玩家文案)
- 豁免 enemy.tres:653 历史注记保持"已落籍"
- static_scan.sh 词表追加行与头注恢复禁「」引举句式
- S11 规则文件自身不被自身规则误伤(闸门自指豁免生效)
2026-10-20 20:41:50 +08:00
DKChan 6d601d23dc chore(禁写变更记录批): 版本历史节/日期批注全面废除——gdd_lint R4 反转禁设+三工具去豁免+48 文档删节+game/README 流水段删+代码注释 900 余行轨迹标签清偿(约束句保留)+规约/skills 五层指令面同批改指 git 沿革 2026-10-20 00:22:18 +08:00
DKChan 072c19b4a5 feat(凭证件裁削): 卡② 同调电池删除+完美保险迁专长+配额净删落地(迭代 31 卡②)
用户 2026-10-18 逐裁四项落码:
- T1/T2 同调电池整件删除:CURIO_KINDS 摘 kind、三字段与三处分发表分支删净、
  runner 侧 _battery_pending/断点键/getter/choose_battery_target 全清(呈现层零接线=有账本无入口)。
- T3 完美保险出池:kind/字段/分发摘除,_pending_insurance 与 level_runner 注入通道
  (voucher_insurance 键、set_voucher_grants 第三参)整链拆除,battle_orchestrator._fx_insurance 删。
- T4 引擎扩签 forgive_seal_miss(EFFECT_KINDS 31→32)+两账相减:新增 _perfect_forgiven 单向累加、
  谓词抽成 perfect_sweep_earned()(有效误标=误标总数−豁免数),_perfect_hit_false 保持纯净=契约 2;
  seal_missed 发射时机与消费点零改动=契约 3(危险直觉·守同事件订阅面在验收组里对拍)。
- T5 feats.tres 第 30 行完美保险专长:rarity rare/cap 省略/domain=battle 显式写出(战斗域首例)/
  desc「本场首次封印落空,不计入完美封印判定」;限次由行 when counter(insurance_used) lt 1 承载,
  do 自带 counter_id 记账由授予段消费点落账(代拍板 3 选型:单行落表,理由见实现报告)。
- T6 配额净删:TIER_QUOTAS rare 9→7、令牌池总量 104→102,validate() 硬断言过;smoke 配额锚/牌库
  构成/专长行数随批换代。
- T7 验收:feat_vouchers_test 39 项全绿(出池反例/断点缺键兼容/账本保留/配额锚/装载/限次一次/
  计数纯净/两账相减真值表/跨战清零/事件不吞)+forge_table 词表闭集断言 31→32。
  变异验证 6 条:5 条证红;「domain battle→adventure」在本 rig 不可观测(未红),已如实登记。
- 存量缺陷顺带修:旧 _emit_row("insurance_used","",…) 空来源会触发行来源断言(旧路径无消费点故从未走红),
  新订阅面给出 source_class=seal_miss。

基线(卡① 合回后 master 4f953ce8):冒烟 1151/0、单元 34 套全绿、探针 --click 全绿(user:// 存档移开态)。
2026-10-19 04:45:49 +08:00
DKChan 32fdf957fd refactor(代码术语): 卡① flag→seal 全族换代+game/ 禁用词清扫(迭代 31 卡①)
标识符面:flag_*→seal_ 族(含 Godot 信号 flag_judged→seal_judged 与连接/回调同名、
FACTS 两键 flags_count→seals_count/dug_under_flag→dug_under_seal 全链、
.tres 键名与 schema .gd 同批同步);显式豁免零改动=size_flags_*(Godot 布局属性)+_fatal_flag。
中文面:金币→GP(金币袋→GP 袋)/插旗→封印/雷格→危险格/惩罚格→危险格/旗→封印·封印印记族,
game/ 内 *.gd/.tres/.md/.json 四类禁用词与 flag 双双零命中(V1/V4)。
守卫字面量不动(被检查的禁字不是使用):smoke_all V21 零「雷/旗」检查面、
ui_font_asset_test 字形集攻/雷/旗/封 保持原断言逻辑。
代拍板:板面单字槽 glyph「旗」→「封」(禁字纪律+单字位宽,消费面四处同名随动)。
素材换代(2026-10-18 用户裁案甲):assets/art/board/flag_seal.png→seal_mark.png(素材不入 git,
盘上改名+导入重刷),代码两处 res:// 字符串+COL_FLAG/CURSOR_FLAG 常量同步,
闸件四处随批(run_all_gates.sh/render_gate.sh/golden_baseline_refresh.sh/path_check.py)。
anchor.json 键名手改,重锚与改前改后 diff 随本卡收口(同裁案甲)。

基线读数(改前,主区 ed2dfaf6):冒烟 1151 检查 0 失败/单元 34 套全绿/探针 --click
存量红仅 screen_flow_probe(user:// 断点污染在册已知项)。
改后同批读数(本 worktree):冒烟 1151 检查 0 失败/探针 --click 同一存量红、其余全绿。
2026-10-19 02:52:38 +08:00
DKChan d659b065c1 chore(导入): 8 个 .uid 入库——迭代 30 期编辑器刷导入生成,此前一直未跟踪 2026-10-19 01:28:41 +08:00
DKChan 9a335cb305 docs(08): 混编遭遇第二批裁挂 Beta v1.10(2026-10-18 用户令「挂 beta 吧,不需要再进行讨论了」)——未决项六项减五项(第 4 行删除、5/6 重编号)、二·内容量混编行现状注改写(裁决细节入版本历史,单元格保持净态)、文头状态行 v1.9→v1.10;零代码零内容变更,Boss 多行投放连同 MC 取证与数值统标一系移交 Beta 阶段再议。三闸全绿(gdd_lint 0 不通过/doc_link 死链 0/doc_term 疑似现行 0) 2026-10-18 01:33:36 +08:00
DKChan e5c03eb3ab test(render): 双帧像素取证+判据源探针(迭代 30 卡① T2-④)——board_shot_probe 每关抓微光开(生产默认态)/关(golden 基线保护面)双帧:前置 UiKit.motion_scale=0.5 冻结接触带呼吸相位(静态带色,双帧差异唯一定位在类型微光开关),_check_dual_frames 逐格窗口矩形+到格缘距离判据(de < cell÷8——带外含砖心零侵入=禁整格染色/禁越圈)+每生效格须有实绘像素(微光不空转)+开关快照须在关开关前取;读数落 board_dual_frame_readings.json(报告读数表源)。身份解析接生产同源面(main.gd:251 同构:板在守卫+Active 相位守卫+query_reward_identity 只读代理——裸视图不接则作用集恒空、PASS 假绿,本批实跑两次 glow=0 的根因即此;附带排 Callable.bind 动态派发 Object 硬校验坑,改成员现值+直接方法引用)。新建判据源探针 type_glow_shot_probe(夹具面五组齐现:glow_cells=5、groups=[1-5]、changed_outside=0、相邻组实测 CR 最弱对 1.232、组4/组5=1.423)——真实面随板摇号(双帧 glow=2/4/4),五组齐现互辨取证在夹具面承载,两面分工不混。off 帧对 2026-09-30 代 golden 三基线漂移 0.13/0.11/0.10%(≤2%,接触带静态化预期面,契约 6 未触发、基线未重制);render_gate.sh 整闸全绿(含菜单 golden 0.14%)。 2026-10-17 10:18:55 +08:00
DKChan 80ac80ef1a test(断言三件): 未开格类型微光机检面(迭代 30 卡① T2-①②③)——①冒烟 smoke_all.gd 新增 _smoke_type_glow 八相 24 项(相0 作用集恒等+默认开+已开/r0 零微光/相1 八邻派八型五组逐格映射/相2 清单外"keystone"显式登记+零微光/相3 封锁格零微光零登记/相4 解封复位/相5 off/on 两态+关前快照逐位复现+零玩法写入三面/相6 换图 rebuild 重算/相7 契约 1 同板同序列 on/off 双实例结算逐位一致 12 步 digest 对照);夹具 = seed 4242 L1 板+novice 驱动(初始展开覆盖 8 邻故必驱动)+八邻派型+哈希兜底九型全集;冒烟 1127→1151 项。②单测 type_glow_test.gd 五段 51 检查(归组封闭含清单外 6 负样本+两带并存锚定/冻结色相面 HSV 稽核 ΔH≤0.2°·ΔS≤0.01+群伤 V=0.65 专项/呈现参数锚定 α170·band 0.125·组号域 0-5/伽马合成空间阶梯单调+相邻组模型 CR≥1.20/probe API 形状),登记 run_all.gd(33→34 套件);extends SceneTree+Kit/UiKitScript preload(--script 模式禁 class_name 裸引用)。③ui_input_probe case⑰ 活板面走查(生产身份面:作用集==diggable 键集/真实点击挖开即灭/移动复亮出圈灭/相位门控两态/开关两态零扰动),十八断言全绿。批末变异验证五组反例实证:M1 归组错映(单测+冒烟红)/M2 清单外静默(冒烟红)/M3 相位切换不重算(冒烟+探针红)/M4 α=0 不绘(渲染闸红)/M5 派生路径误触玩法 API(冒烟相7 分叉红)——红输出与还原结论实录见 reports/iter30-实现报告-2026-10-17.md §四。 2026-10-17 10:18:35 +08:00
DKChan fff4f120d3 merge: 迭代29测试分层与门禁语义修正批入库(十提交, worktree g-plan2-iter29-testlayers) 2026-10-17 00:13:57 +08:00
DKChan 6b1e447d27 feat(调试入口): 全局浮层角标——UI 最顶层、任何 UI 不遮挡(2026-10-16 用户令)
用户定稿:调试入口不做置顶钮式按需出现,要的是「UI 最顶层浮层、不被任何 UI 遮挡」。
实现=三枚屏内角标(菜单右下/战斗 HUD 右下/地图顶栏)合并为一枚全局浮层角标:

- LAYER_CONTRACT 末位新增 {"key": "debug_badge", "kind": "float"}——只落树序(最顶绘制序)、
  不注册 ModalStack:open() 遮挡记账只隐藏登记层,故任何模态/覆盖层开都不遮它(用户需求
  的机制根因);_layer_node 补映射;main 直接子层、构建走 ui_assembler.build_debug_badge
- 位置:右下角 16px 惯例位;地图屏底栏 85px 常驻→_sync_status_entry 按 map_on 抬 offset
  至底栏上方 16px;战斗屏状态角标经 MarginContainer 让位(right 16/bottom 52)不再被压
- 屏内角标全退役:menu_screen/board_zone_view/level_map_screen 三处 debug_badge 删除,
  main 两处接线与 _sync_status_entry 四条可见性/置灰行清除(浮层常显不置灰——点它就是开浮窗)
- 浮窗 desc 文案改「UI 最顶层「调试」浮层角标随时可开——任何界面不遮挡」
- 断言/探针换代:smoke V2f 查 main.debug_badge boot 可见;click_probe 遮挡判据移至设置面
  开中段(浮层角标此时仍应可见=直接验「不遮挡」);tune_probe ①点击路径与⑨对局中角标
  全改 main.debug_badge(T2 防线断言不动——浮窗 non_locking×遮挡复活×has_open 组合回归)

冒烟 1127/0 过;全量闸待跑。
2026-10-16 23:53:57 +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 5af5104437 Merge branch 'master' into menusub-20261016
# Conflicts:
#	game/smoke/shot_probe.gd
2026-10-16 04:35:22 +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 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 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 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 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 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 77075e6e7a feat(迭代28 T3): 生命周期存活性矩阵冒烟段(_smoke_lifecycle_matrix 九阶段×五引用面)
驱动复用:V3 debug seed 开局路径+_auto_play_round 活战斗模式(phase/round 守卫+choose_dig)+ui_struct resume 夹具模式,不另起点击链。阶段=闲时/开局停点(地图选路停点态合并)/战斗中/结算后(胜利停点)/选路页/终局面/回菜单收束/各模态开合后(菜单域四模态)/两连局/续玩断点。五引用面=_treasure_ui 2/_bonus 6/_camp_pres 3/_modal_flow 4/_row_pacer 5 句柄+2 Callable+run_scope 13 成员;判据=恒活面有效+会话三面阶段存活态(alive/null/both)+现值回调与 run_scope 成员同源(回调链无悬挂)+收束/续玩换会话无真空窗+旧局 queue_free 消亡。三处判据订正实录:隔离后刷新续玩钮定基/战斗收场判 is_battle_live(胜利停点 settlement 陈旧有效非 null)/调试浮窗开不隐菜单。冒烟 1097→1125/0
2026-10-15 07:18:54 +08:00
DKChan a35581e441 feat(迭代28 T2): boot 链路时序后置条件冒烟段(_smoke_boot_chain 六断言)
挂 _split_tail(协程纪律 await):V2a ConfigDB 就绪+表载/V2b 设置已应用(Master 总线 mute/volume_db+UiKit.motion_scale=settings_store 现值,一致性判据与真实设置文件内容无关)/V2c 启动态菜单可见/V2d 续玩钮态==断点在档态(boot 路径关系判据+隔离新档双向:无断点隐/合成断点显/清断点回隐)/V2e 闲时会话在树/V2f 调试浮窗态==DS_DEBUG 门控(两侧同判据)。存档隔离 attach_path 禁碰真实档。冒烟 1087→1097/0
2026-10-15 07:07:44 +08:00
DKChan 6f71509421 feat(迭代28 T1): 装配语义合同单点化+装配序修复+V2 断言重写
合同常量 LAYER_CONTRACT(16 层全视觉层序唯一事实源:屏壳/两全屏态/12 模态,level_screen 宿主/camp_screen 同槽/curio 对位三特例数据化);_apply_layer_contract 统一落位单口(add_child 后排序+登记同源派生,两处散落 move_child 删除);装配序修复=冒险屏先挂菜单屏后挂(F5 见战斗界面坏事实);V2 断言重写=V1a 启动态顶层可见层=start_overlay(内容层遍历,屏壳容器不当候选——camp 壳透明实证)/V1b 菜单壳在冒险壳之上/V1c 合同树序链逐对保序/V1d 落位单口源码断言;ui_struct_probe career 专属登记序契约推广为全模态 _modal_registry_contract(旧件同批退役)。红→绿记录:修复前 1086 项 3 失败(V1a/b/c),修复后 1087/0。代拍板=合同数据形态(有序数组+host/shell/tags 特例字段)
2026-10-15 07:04:02 +08:00
DKChan 5f9d8e7b77 chore(代码卫生): 文件头零工作日志红线落文+全仓头注变更叙事清偿(2026-10-15 用户令)
- CLAUDE.md 硬性红线新增「文件头零工作日志」;code-conventions.md 新增 §1.4.1(含反面案例)
- 全仓 .gd 文件头注清偿:删除全部带日期条目、批次叙事段与迁移退役叙述,保留并改写为
  现在时的职责、接口契约、GDD 锚内容(main.gd 头注 42→31 行、save_manager.gd 49→45 行)
- 纯注释改动零行为变更,按用户令免测试免冒烟
2026-10-15 04:08:38 +08:00
DKChan 9a9fa7e8be fix(迭代27收口补遗): 卡片核对缺口三项+resolver 幽灵通道断根
- V8 卫生 grep 断言落地 smoke(字符串 Callable 产品码零命中/FeatsEngine 退役/死代码抽查/GP 影子账零残留)
- 06 补登卡片两条义务(长函数余量 14 件+lambda 连接 76 处防回归)
- 漏网字符串 Callable×2 补装+validator 头注/main 死注记清理
- resolver 幽灵通道断根: reset_warn_dedup 门面参从未存在(字符串 Callable 零校验藏死引用,
  方法引用换装编译期暴露)——删参,注册表清空归 resolver 本类方法(门面 :115 直呼即正道)
- 实现报告补核对结案段

闸: 冒烟 1086/0(+V8×5)+类型闸归零
2026-10-15 03:03:29 +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 6fd7d782cc refactor(迭代27 T3): 波三 账本收口——RunLedger 单类持四账+刷新双账删副本+gp_final 键删影子账——逐位一致对拍全同
P1-4 共享账本 Ledger 类化(裁点②甲 单类持四账):
- game/core/run_ledger.gd: attune_charges/vision_counter/adventure_counters/bonus 四账
  单类承载;战斗侧只拿 read/append 原语(attune_charge_has/set/consume、vision_count_add、
  counters_seed_snapshot/merge_export、bonus_add_axis)——战末 export/开局 seed 时点语义不变
- AdventureRunner 持账(run_ledger)→ LevelRunner set_run_ledger+sync_attune_inventory
  (原四散 setter 收口)→ enc 单键 ledger 下传;编排器三裸引用成员退役为 _ledger 原语调用
- 调试/单场缺省新账=零扰动面(vision_counter 缺省空=不计,原 enc 缺键守卫语义保留)

P1-2 刷新双账收口:
- main 刷新计数副本(run_scope.refresh_used_round)删除;单一事实源=编排器受理计数
- presentation_snapshot 成文面升键 refresh_used(can_refresh 邻位)——HUD 余量/遥测
  round_refresh_index 单源读快照;V5 快照一致性断言×3(smoke+ui_click HUD 文本比对)

P1-3 GP 影子账收口:
- adventure_runner summary 增 gp_final 键(close_wallet 清账前快照)
- gp_shadow_ledger.gd 全件退役删除;main 委托缝/会话账本成员删除;终局面板 GP 行
  取数=summary 键;ui_probe 影子账断言换代为 summary 键断言

验收: 逐位一致对拍三变体全同;冒烟 1079/0+run_all 26 套+probe click+render golden 0.00%
2026-10-14 23:25:45 +08:00
DKChan 26301baa9c refactor(迭代27 T2): 波二 _settle 五段拆 Segment+_resolve_hero_attack 拆步——逐位一致对拍全同
P1-1 结算巨函数拆段(裁点③甲 审计五段):
- game/core/settlement/ 五段类: GrantSegment(授予段体+旗判随段迁入+counter_add 五位/
  grant_material 三位分支单点化)/AuraSegment/CombatSegment(原 _combat_segment 体)/
  DecaySegment/VerdictSegment(返回裁定,终局早退语义留宿主)
- 编排器 1725→1325 行退为段序编排+行发射/开单原语单点;_judge_flag/_combat_segment
  旧实现同批删除;smoke 白盒 rig 随段迁址(orch._grant_seg._judge_flag)

姊妹病灶(同批):
- damage_controller _resolve_hero_attack 148 行拆四步: _hero_attack_ctx(命中面/按序改写
  族四拍)→_hero_attack_base_value(加法族/计数器施加/倍乘)→_hero_attack_redeem(掷点/池乘/
  rider/落地/击杀)→_hero_attack_deliver(状态/交付行);ctx/redemption 字典穿线算序逐字保留

验收:
- V4 settle_segments_test 16 断言进 run_all(25→26 套)
- 逐位一致对拍三变体全同(RUNSUM+JSONL 双面零漂移);冒烟 1077/0+run_all 26 套
  +probe click+render golden 0.00%
2026-10-14 22:09:29 +08:00
DKChan 7a0d57ddb0 feat(迭代27 T1): 波一 场景拆分+局生命周期物化——逐位一致对拍全同
P0-1 三屏场景化(契约2 只拆不重写):
- menu_screen/camp_screen/adventure_screen 三 .tscn 屏壳+壳脚本(视图代码原样构建,
  40+ views 零 .tscn 化);adventure 屏壳内含 level_map/battle 两容器
- main.gd _build_ui 解体=三屏实例化+模态装配+接线;组合根句柄全部保留(探针挂载
  假设 main.X 一级路径零迁移);树序=屏壳在前全模态之下(视觉共存对逐对验算)
- 屏壳根 mouse_filter=IGNORE(ui_input 实证:全屏 STOP 壳吃下层模态鼠标输入)

P0-2 会话物化(裁点①甲 autoload+手工清单消亡):
- run_scope.gd 节点持全部局态(adventure/runner/settlement/7+ 局态旗/账本);
  _begin_session 建会话、终局整节点 queue_free()——_reset_run_scope 三项+
  _on_battle_end_continue 置空四件手工清单删除
- SaveManager/MetaProgression 升格 autoload 3/4 号位(类名加 Core 后缀沿 RngService
  先例;--script 模式编译器不解析裸 autoload 标识符——组合根留读视图属性 get_node 形态)
- 探针隔离改 attach_path 原地重置(set_master_seed 先例);10 探针+pacing 测试迁移

验收(V1 核心=逐位一致对拍):
- parity_anchor 三变体 base/attune/shop×40 局 RUNSUM+JSONL 双面逐位全同(零行为漂移)
- 冒烟 1055→1077/0(+V2 屏壳独立实例化 11 断言+V3 两连局复位 11 断言)
- run_all 25 套+probe click 全绿+render_gate golden 0.00%×3
2026-10-14 20:28:53 +08:00
DKChan 260c9bbd9e feat(迭代26 T5b): 诊断转储钮退出玩家画面——入口迁调试浮窗(grilling Q8 裁甲)
- main.gd 卸载点删除(build_diag_button 挂载+连接);build_diag_button 工厂退役(ui_assembler);
  连接随迁=debug_overlay.diagnose_requested→_on_diagnose_pressed(dump_diagnosis 卡死取证保留,
  删除案否/门控隐藏案否——浮窗本就可全局可开,双轨无意义)
- debug_overlay 新增 diagnose_requested 信号+区块⑤转储钮(_emit_diagnose_requested 外发,纯视图边界)
- 探针同批入册:ui_tune_probe 只读巡检白名单+_emit_diagnose_requested、连接数 10→11(七钮),
  confirm_dialog/main 树序注释订正(诊断钮引用清除)
- 冒烟新增 _smoke_diag_button_retired() 7 断言(V6:主区零残留+工厂退役+连接随迁+浮窗可达);
  冒烟 1048→1055/0;probe --click/--full 全绿残留 0
2026-10-14 05:57:16 +08:00
DKChan 02c87fc281 feat(迭代26 T5): 元素细节余②③——BCard 图标槽明度差降档+商店居中+营地四栏等高
- ②立 SLOT_BACKDROP_SOFT #806A4E 柔和档(代拍板6:对米色卡面 3.69:1〔旧 8.53:1 过硬〕,
  白图标 5.14:1 ≥3:1 硬约束在役);仅 BCard 图标槽换档,B 区状态槽仍用深档(诊断订正③范围)
- ③商店 _cards_box ALIGNMENT_CENTER 垂直居中(三选一同款形制);营地四栏等高=三 holder 统一
  min 高 336(与树/秘宝匣 scroll 对齐,锁定态仅锁文也撑栏高)+四面板纵向 SIZE_FILL 同步拉伸
  +三处锁文 SHRINK_CENTER(代拍板7 两选项组合落)
- 冒烟新增 _smoke_element_details() 8 断言(②白图标硬约束+降档方向+两消费点档位;③三处布局锚);
  冒烟 1040→1048/0;probe --click 全绿残留 0
2026-10-14 05:47:50 +08:00
DKChan 86e9aea176 feat(迭代26 T4): 光柱连续 alpha 修边(带内渐变+纵向衰减)
- beams_rect 重写:带内 alpha 0→0.05→0 三角过渡(旧匀净零过渡硬边梯形退役)+纵向衰减上亮下暗;
  连续 alpha 方案(grilling Q7 裁,与暗角/地图渐变保平滑同血统);filter=LINEAR 白名单随 T2 已落
- 冒烟 T4 结构断言 3 条(带心峰值≈0.05 按 8bit 截断量化校验/连续过渡像素 41373 个/纵向衰减
  上半>下半 2 倍);冒烟 1037→1040/0;probe --click 全绿残留 0
- 引擎事实备忘:Godot Image 8bit 量化为截断(非四舍五入)——0.04977×255=12.69 存 12
2026-10-14 05:39:56 +08:00
DKChan 7cac0dc1ab feat(迭代26 T3): 三处 <4.5:1 文字位换墨+机检锚定
- 立新 token 两枚(代拍板4·Q6 裁后落值,语义岗冲撞走反哺点③):GOLD_BRIGHT #E0B860(金族亮档,
  敌顺位徽标①②③+重甲徽标,对舞台底 6.47:1);HERO_BLUE_BRIGHT #7EBAF0(小人蓝亮档,
  魔法护甲徽标,5.88:1);GOLD_DEEP/HERO_BLUE 常量本尊不动(standee:199 意图判据等在役)
- ap_bar_view.gd:77 RAP 反馈行 STONE_FAINT→STONE_DEEP(对 PANEL_DATA 5.98:1,旧 2.9:1 越带)
- 冒烟新增 _smoke_contrast_inks() 9 断言(V4:三处对比≥4.5:1+消费点原位锚+语义岗不动+旧墨清零);
  冒烟 1031→1037/0;probe --click 全绿残留 0
2026-10-14 05:31:26 +08:00
DKChan 9ddb571d87 feat(迭代26 T2): 全局纹理过滤设邻近采样+平滑渐变件 LINEAR 白名单
- project.godot [rendering] 增 textures/canvas_textures/default_texture_filter=0(Nearest——
  翻转面=立绘/瓦片/格面/图标/九宫格 UI 皮 crisp,即本批意图;T0 枚举闭合无漏枚举面)
- ui_kit.gd 白名单三件显式 LINEAR:vignette_rect 暗角/beams_rect 光柱(Q7 裁,连续 alpha 同血统)/
  gradient_base 地图渐变;既有脚影/状态图标 LINEAR 不动
- 冒烟新增 _smoke_texture_filter() 6 断言(V3:工程设置=0+白名单三件在位+既有两处不丢);
  冒烟 1022→1028/0;probe --click 全绿残留 0
2026-10-14 05:15:32 +08:00
DKChan b6f0c66183 feat(迭代26 T1): 按钮五态矩阵——悬停乙案/禁用甲案/焦点甲案+危险钮本族按压态
- ui_kit.gd _apply_button_skin 五态统一管线:hover=常态图+modulate 1.06 提亮(乙案·代拍板1·零新素材);
  disabled=本族底+α0.45 幽灵化(甲案·代拍板2,取代旧「disabled=按压图」错配);
  focus=INK 2px 内缩 1px 环(甲案·代拍板3,负 expand margin 实现,叠加绘制不遮钮底,主题层零新增)
- primary_button 补 disabled(烛光黄族 α0.45)+focus 环+font_disabled_color(本族墨 α0.45)
- danger_button 补本族 pressed(深红 darkened(0.18) 深档)+disabled 幽灵化+focus 环+font_focus/disabled 色
- 冒烟新增 _smoke_button_five_states() 35 断言(V1 五态非空/hover≠normal/disabled≠pressed/危险钮非石纹/
  焦点环参数锚定+V2 双红线维持);冒烟 987→1022/0;probe --click 全绿残留 0
2026-10-14 05:08:42 +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 ab3ba4f4a0 feat(迭代24): N3 敌方attack_type轴开列——20行全填normal+schema枚举校验+单位快照+开单传值+敌方结算克制消费点(卡片§2漏项,V5矩阵证词强制)+V5四断言(冒烟949/0) 2026-10-13 07:14:58 +08:00
DKChan 26d669f83d feat(迭代24): N1 (1,2)降档hp22/ac2 + N2 毒吐盾击两行六池投放——expect_pools六键同步+V1/V3/V4断言随批(冒烟945/0) 2026-10-13 07:03:37 +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 ed0629236a feat(迭代23-T4): 注入接线——hero_override 公式换代(FORGE_ROUTE_BONUS 退役)+两轴参数面全链+入战 AC 三层
- meta_progression.hero_override:atk=forge_weapon_atk_bonus+树 flat / armor_class=forge_armor_ac_bonus+树 flat / max_hp=树 flat;FORGE_ROUTE_BONUS 预留常量退役(公式不再出现,注释留痕)
- main.build_adventure_params:+attack_type/armor_type 两键(meta.hero_attack_type/hero_armor_type——存档选中路线类型轴,异常回退锻造配置默认值)
- adventure_runner:params 两键快照入公有 hero_attack_type/hero_armor_type(契约 8 锁死可断言面;start/resume 双路同),_start_current_level 经 set_hero_axes 下传
- level_runner:set_hero_axes 注入+effective_ac 换代=甲型基础 AC(forge_armor_route_by_type.base_ac)+路线加值(base_override)+局内加算区(bonus)三层;enc 携带两键
- battle_orchestrator:spawn 传 enc 两轴(空串=锻造配置默认值回退——行为连续)
- 冒烟 V5 后半/V6 锁死/V7 公式对拍+V10 树零攻防复核共 15 断言(含 enc 末端 hero_attack 行 pierce 键+spawn 显式注入)
- 轻闸:冒烟 938/0(923 基线 +15)+run_all 23 套全绿;删除标识符 live 引用零残留(FORGE_ROUTE_BONUS/hero 两轴仅存退役注记与 README 文档面=归 T7)
2026-10-13 00:09:17 +08:00