Commit Graph
218 Commits
Author SHA1 Message Date
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
DKChan a6270bac54 feat(迭代23-T3): 锻造写口族——路线购买(几何价)+并联双通道解锁+选中切换(免费)+类型轴读数(MetaProgression 单点)
契约 9 写口唯一(UI 只发意图——意图信号接线随 T6 UI 同批落):
- forge_route_unlocked:解锁态派生单点(初始持有∨直购清单∨练满前一档 levels[prereq]≥cap——不落档)
- forge_buy_level:几何价=ForgeTable.level_price(20/30/45/67/101),扣钥石+等级+1+即时写盘;未解锁/满级/余额不足=拒绝零副作用
- forge_buy_unlock:一次性解锁价 200 直购;已解锁(含派生)=拒绝零收费——两通道互不影响、不设串联
- forge_select_weapon/armor:免费切换只受理已解锁路线(冒险锁死归参数面快照,契约 8)
- forge_weapon_atk_bonus/forge_armor_ac_bonus/hero_attack_type/hero_armor_type:T4 注入面取数单点(异常选中态防御回退 0/默认值)
- 冒烟 V2/V3/V4/V6 共 15 断言(隔离档 forge/forge2/forge3——add_keystone 置余额+直写存档域注入口径)
- 轻闸:冒烟 923/0(908 基线 +15)
2026-10-12 23:50:55 +08:00
DKChan 6def3544a0 feat(迭代23-T5): 存档域 forge_routes v7——六路线等级+直购解锁清单+选中标记(无特效域)+旧档缺键补齐=初始持有态
〔执行序调整:T5 先行于 T3——写口族硬依赖存档域,台账记录〕

- SAVE_FORMAT_VERSION 6→7 + _migrate_v6_v7 空迁移(缺键补齐模式,v3→v4 先例;幂等零漂移)
- _default_data 新域 forge_routes={levels 六键/unlocked 直购清单/weapon+armor 选中};_normalize 经默认模型自动补齐(旧档=初始持有态 sword/light 在档余四锁)+退役键白名单自动收口
- 访问器组:forge_route_level/set_forge_route_level/forge_unlocked_purchases/add_forge_unlock/forge_weapon/set_forge_weapon/forge_armor/set_forge_armor/forge_routes_snapshot(值拷贝出户)
- 解锁态派生不落档:初始持有(表 initial_owned)∨直购(unlocked)∨练满前一档(levels[prereq]≥cap)——派生单点归 T3 MetaProgression
- 冒烟 V8:往返逐域相等+v6 旧档既有域零折算/缺键补齐初始态+域键集恰四项(无特效域)+levels 六键恰全+快照值拷贝;迁移链版本断言 6→7 三处换代
- 轻闸:冒烟 908/0(902 基线 +6)+run_all 23 套全绿
2026-10-12 23:44:03 +08:00
DKChan 00d98b6f74 feat(迭代23-T2): 两根类型轴所有权移交——hero.tres 两字段删除+ForgeTable 默认值常驻持有+单位快照改读注入面
- hero.tres:armor_type/attack_type 两字段删除(含 2026-09-18 前置批登记注记退役);armor_class=10 保留为甲路线缺失兜底基准
- hero_table.gd schema:两 @export 字段与枚举校验同步删除(三数值轴 max_hp/atk/armor_class)
- unit_container.gd:spawn 签名 +2(hero_attack_type/hero_armor_type,空串=db.forge_default_* 回退)——三参旧调用方零适配,行为逐位连续(normal/light)
- smoke_all.gd::1901 hero_attack 行类型键主语换代为 forge_default_attack_type();新增 _smoke_forge_axes 段(V5 前半:字段不在位+默认值+零注入回退快照)4 断言
- 轻闸:冒烟 902/0(898 基线 +4)+run_all 23 套全绿
2026-10-12 23:31:50 +08:00
DKChan f7cee4b581 T6补(迭代22秘宝批): ui_probe秘宝匣柜台行数断言换代(6→12——T2换代面呈现断言随批,批末重闸--full首跑抓出) 2026-10-12 19:41:36 +08:00
DKChan 9f20ca236a T6(迭代22秘宝批): 验收闸断言——V9静态词表(新12行do.kind/effect_kinds零棋盘改写类词)+V10覆盖检查(三方向dimension_tags投影)+V18装配面空目录合法态(白板档12件全未解锁mode分派,独立档[12])+V6装配不可变运行断言(单测⑭战斗运行态与冒险装配集三面同源快照)。冒烟898/0+单测全绿〔秘宝批 V6/V9/V10/V18〕 2026-10-12 19:36:31 +08:00
DKChan 73db171cb4 T5(迭代22秘宝批): 存档面+死通道拆除——treasure_inventory保留注记(主动件骑库存承载在役:线香/天眼handle+断点aux_items快照+set_attune_charges差额注入全链保留); 替换子交互整体拆除(CURIO_KINDS除名后不可达死通道=装配不可变契约1实现面保证): adventure_runner六函数删(_pick_treasure_item/resolve_treasure_replace/_resolve_node_replace/_replace_in_transit/_draw_pending_treasure/resolve_curio_replace)+_bonus_treasure_carry跨关携带/_last_draw_treasure掷定链/_roll_from/_bonus_treasure_pool/bonus_aux_carry断点键; level_runner.grant_treasure_item/treasure_items.holding_records删; 呈现面=controller替换子态三函数+aux_detail卡片直显链/curio_pick_overlay replace状态机(信号+面板+open_replace)/main两接线/level_autoplay替换策略; smoke与ui_click_probe替换分支摘除+reward_overlay_test替换段摘除; 修正则贪吃误删=apply_node_curio普通兑付主体补回。冒烟895/0+run_all 22套+探针全绿〔秘宝批 V15/V16拆除路线/V13〕 2026-10-12 19:32:29 +08:00
DKChan b7a2eadd2c T4(迭代22秘宝批): 呈现换代——秘宝匣柜台购买钮(buy_requested信号链→presenter buy_treasure_unlock分支,禁用态=余额不足)+分档呈现(名后缀·档位/装配行档位标签/悬停desc)+装配段未解锁禁装; 呈现桥换代(旧提灯布尔桥set_fog_lantern/FOG_LANTERN_BONUS随行退役→set_fog_glow_bonus参数面,main._sync_treasure_glow消费attune_param_sum,off态写0复原契约保持); 巢穴预告toast(nest_preview_count读数口消费); 试炼镐HUD入口(ap_bar兑换钮+convert_pressed转发链+attune_convert_state读数口,未装配隐藏); ui_input_probe case⑮换代主语wide_scout_band+4; V13功能残留换代(breakpoint_resume/ smoke剔牌库/reward_overlay夹具换新件id)+过时注释清理; 修呈现组装断裂=BoardZoneView补convert_pressed转发(挂死根因=main直连不存在的板区信号致_build_ui中断)。冒烟895/0+run_all 22套+探针含click全绿〔秘宝批 V12/V13/V19〕 2026-10-12 19:11:11 +08:00
DKChan a7bd4e4132 T2(迭代22秘宝批): 核心层解锁服务换代+槽位档位约束——工坊渠道面退役(_workshop_progress/workshop_status/refresh_workshop_unlocks/meta_workshop_items/WORKSHOP_ITEM_IDS/workshop_items行族全删)换解锁混合制(buy_treasure_unlock钥石购买=余额闸+重复购拒+条件件误购拒/refresh_treasure_unlocks条件刷新=AND谓词+幂等/treasure_shop_status柜台投影); 计数读数单点_treasure_unlock_progress(adventure_cleared/boss_kill_count/vision_used); save_manager新增vision_used生涯计数域(add_vision_used收束入账+缺键补零不升版本); toggle_attunement三重校验(未解锁拒+满位禁选+件档rank≤装入位序档位格——卸下恒可效果面只读装配集); pause/camp两视图秘宝匣呈现换代+UiKit计数键与档位标签单点; smoke工坊段换V3/V4/V5断言(独立档[11]防路径污染)+meta表段行族规模换代3/3/2。冒烟895/0+单元21套+探针全绿〔秘宝批 V3/V4/V5/V14/V19数据源〕 2026-10-12 15:52:04 +08:00
DKChan 48b0696158 T1(迭代22秘宝批): 新目录12行全量换代+schema扩签——treasure_items.tres 旧12行删除新12行落表(晨操令/阔视野带/试炼镐/刷新练习/储备罐/巢穴预告/线香/双管装填/远程镐/刷新执照/天眼/信标网络; 三档7/3/2; 契约8逐件解锁分配=钥石8+条件4); schema扩 tier/charge_reset/unlock_keystone_cost 三键+TIERS/CHARGE_RESETS 词表+TARGETS扩cell+参数面kind六型+REVEAL_KINDS护栏扩面+charges=0积点制合法态+解锁互斥校验+UNLOCK_COUNTER_KEYS换代(adventure_cleared对齐C6通关口径/vision_used新增); 引擎EVENTS+board_installed/ACTIVE_KINDS+safe_dig/EFFECT_KINDS+mine_count_preview; V13旧断言摘除换代(fog_lantern_wiring_test全文件退役+run_all注册摘除/violation护栏主语换sky_eye/feat_vouchers电池主语换incense_stick/smoke提灯段换V1V2新目录断言段+装配充能刷新段换主语)。冒烟887/0+单元21套+探针全绿〔秘宝批 V1/V2/V12/V13/V14部分〕 2026-10-12 15:21:22 +08:00
DKChan 5d254f7e11 merge: master 并入分支(并行十八笔——active 清理批/改名批/奇物呈现批;冲突=active 快照与记录块手工融合,469 弃用上游清档口径、收口条顺延 476) 2026-10-12 14:28:50 +08:00
DKChan 96fc61c701 feat(tree): 迭代21天赋树实装批 T1-T6 主体——12节点换代+六键接线+营地四柜台(2026-10-12 U0)
T1 schema 换代:MetaTreeTable FORK_GROUPS 4→3(fg_mastery 退役)/RULE_KEYS 2→6(sense/economy 四键扩签)/
  fork 单行双态(effects_a/b+name_a/b、每组恰一校验)/row 字段退役(行门槛主语=节点等级 level_gate)/
  requires 只留点亮前置(R1 裁撤案执行);meta_tree.tres 33→12 行重排(脊柱2/锻造2含彩蛋/钥石2/同调6,
  att_socket1 改根节点无前置,easter_ley 摘 atk/armor_class 分量=契约9)
T2 购买与彩蛋面:tree_can_buy easter 拒购+行门槛换轴;tree_buy_fork=解锁默认A;tree_toggle_fork 零币切态;
  tree_rule_keys 按激活态 effects_a/b 投影;_check_easter_egg 特化判定(两线拉满+socket全解锁);营地树行板双态钮
T3 六键接线:EVENTS+flag_missed/FACTS+battle_index(L2 扩签两处);rebuild 六键合成订阅
  (posture 窗=battle_index&&round_index 双闸/sense 两组=counter 闸+记账双行 domain:adventure 限次2次 provisional);
  level_runner battle_index 注入(visited battle 型计数);_judge_flag 去重闸后 flag_missed 发射(契约12);
  聚=_roll_gp_drop 入账前×1.5 provisional(escrow 不乘);散=_spend_discounted ×80%(current_price/pool_price
  双计价点,刷新价不折=§11②定义边界);_start_current_level 限次按关清零(_reset_tree_limited_counters 可测口)
T4 注入换代:hero_override=树淬炼flat+FORGE_ROUTE_BONUS预留0(命中不注入=契约6);Attunement.slots 判定源切
  树点亮数(谓词表退役);tree_buy(ks_refresh) 同账路由 buy_attune_refresh(V15 双入口)
T5 旧档废弃与删除:save_manager tree_struct=2 结构版本标记+_normalize 白名单重建+树域废弃重置(禁迁移折算);
  migrate_tree/buy_forge/forge_flat/forge_level/forge_price/meta_forge_row/forge_products 行族/
  attunement_growth 表+访问器/生涯页三投影/career forge_total 全删;treasure_item_table UNLOCK_COUNTER_KEYS 内联;
  verifier_batch 花费策略换代树节点;MC slots 画像常量3
T6 营地统一:四柜台并排横滚(树淬炼主界面/锻造工坊钥匙门+零交互占位面板/秘宝匣钥匙门+内容迁入/图鉴常开);
  暂停层锻造段连带删;camp data forge 投影删
存量红修复:_flush_pending_reveals 三处空 source_class 补 fx_reveal+类级豁免(a57489e9 落地件,冒烟51行)
测试随批:smoke 树段全重写(V1/V2/V3/V8/V9/V16)+_smoke_tree_rules V10 行为段(窗/限次/守侧五场景编排rig/聚散
  同种子对拍)+单元 tree_rules_v11_test(六键合成行闭集校验)+run_all 22 套;ui_probe/ui_click_probe 换代树点击路径
轻闸全绿:冒烟886/0+run_all 22套+probe --click 全绿
2026-10-12 07:54:38 +08:00
DKChan 6a4321020a chore(tables/smoke): 改名批残留肃清——reward/status_effects 注释与 defense_scan 标题的旧名「护甲强化」清零
rename-blessing-20261012 合入后全库复扫发现 4 处注释/print 残留(display_name 主改名时未覆盖注记段):
- reward.tres:219 / status_effects.tres:99:2026-09-16 护甲等级掷点批历史注记内的名称文字
  → 更新为现名「盾牌加护」并括注「2026-10-12 由"护甲强化"改名」(历史动作部分保留)
- defense_scan.gd:24 print 标题 + :35 注释:同口径更新(该脚本为独立手动扫描,不在冒烟主链,标题无断言依赖)

冒烟:864 项检查 / 0 项失败;FAIL 仅存量 fx_reveal 脚本错误(iter21 在册,与本批无关)。
2026-10-12 07:48:45 +08:00
DKChan ae96a2b043 chore(tables/smoke): 玩家向显示名改名批——货架三行「锻升」→「祝福」+ 临时 AC 状态「护甲强化」→「盾牌加护」(C/D 裁点执行)
- shop.tres: pool_shelf 现役 70/74/78 + products 遗留 38/45/52
  攻击锻升/生命锻升/护甲锻升 → 攻击祝福/生命祝福/护甲祝福
  (奇物属性值提升三轴的货架前台标签,与锻造工坊路线行「XX锻造」解耦)
- reward.tres / status_effects.tres: display_name「护甲强化」→「盾牌加护」
  (地图战斗资源获取的临时 AC 状态,避免与锻造工坊护甲锻造混淆)
- smoke_all.gd:1199 断言同步改名(授权范围内修改)

术语口径:C=「属性+祝福」(D&D Blessing 神赐永久赠礼)、D=「盾牌加护」(Charm 精魂所予、有时限、用完消失,与临时 AC 状态语义一致)。

冒烟:864 项检查 / 0 项失败;FAIL 仅存量 SCRIPT ERROR(_flush_pending_reveals fx_reveal 空来源类别,迭代20 T1 a57489e9 遗留,iter21 在册,与本批无关)。
2026-10-12 07:44:25 +08:00
DKChan 710d8e038d refactor(t9): 迭代20 V13 静态核查收口——四处旧件名 source_class 中性名换代(fx_overflow/fx_apply_status/fx_blast_counter/fx_streak_segments;泛用通道保留+旧件名随退役件摘除,对照注释留痕) 2026-10-12 00:44:51 +08:00
DKChan 3333187351 feat(close): 迭代20 T5+T8+T9+T10 C段收尾(专长实装批)
T5 Boss 兑付面换代:通关渠道三选一改按档配比加权抽取(无放回加权抽 boss_feat_weight
100/45/15/5 provisional 归调参批——奇物.md v3.1 rarity 语义约束兑付面);信号注释换代
「提升三选一」→「专长三选一」(V11 正名);V12 频带断言(300 停点档位频率出带±15pp)。

T8 MC 对账适配:formed 画像 14 旧件→五事件族 14 新件(开格 4/插旗 3/踩雷 4/节奏 2/战斗 1);
新基线取证:normal/off 100 局 71000 档 通关 0%(master 对照同为 0%=零配基线本相),
止步分布 90/10→93/7 可归因曝光槽候选构成;同种子重放 30 局逐位复现 ✓(V15)。

T9 迁出收尾:treasure_items 删 venom_edge/flag_burst 两行(同调目录收窄);schema 词面
venom_rider/flag_burst 摘除(EFFECT_KINDS/MAGNITUDE_KINDS);rewrite_board 效果类型除名
(净化工兵退役——V14 连带清理闭环);V13 断言入 smoke。

T10 空配置验收闸:三选一池空 skip_empty_curio 消化+非空拒绝反例+商店空货架合法态断言。

测试:pool_case_d 17 checks(+V12/T10)/feat_vouchers 23 checks(+V16 断点往返);
冒烟 864/0+run_all 21 套全绿。
2026-10-12 00:28:22 +08:00
DKChan 1387aedc94 feat(vouchers): 迭代20 T4 凭证件五件实装+F-1 刷新写错账修复(专长实装批 B段二)
五件路由(_apply_curio_pick 通道面):刷新券→刷新存量账 _refresh_stock(**F-1 修复**:
退役 _attune_refresh_x 写口——X 每停点重置吞存量=写错账缺陷正主;消耗序 X→Y→存量,
attune_refresh_left 扩第三源;旧早退路径零摘牌缺陷同批修正=选中即消尽)/储备金袋→
_pending_rap 战首 RAP 注入(action_economy.grant_reserve_ap 新口)/同调电池→
_battery_pending+choose_battery_target 玩家点选跨层写 attune_charges(禁自动替选——
装配集/主动充能件双校验拒绝)/时沙→_time_sand_queue 战首首轮 AP 队列(池增量不改上限,
hero_ap_bonus 同通道)/完美保险→_pending_insurance 战首豁免次数(flag_miss 首见判定
_perfect_hit_false 回退=完美谓词无痕,节点级未用即过期)。

注入链:runner set_voucher_grants 三账→enc voucher_*→编排器消费,节点级一次性注入即清零。
配额投放:凭证四件入稀有档(rap 2/battery 1/时沙 2/保险 1)→结构锚 rare 9/总量 104
(已裁换代授权内 provisional——偏离 GDD 占位记录随代拍板追认单)。
断点扩列(T7 前置):refresh_stock/battery_pending 随档+resume 回填(旧档缺键缺省 0)。

测试:feat_vouchers_test 新套 20 checks(V9 逐件路由+F-1 反例钉面/V10 留任路由+AP 属性轴)
入 run_all 21 套全绿;冒烟 863/0;smoke 牌库数 98→104 系换代。
2026-10-12 00:08:00 +08:00
DKChan 54ab330beb feat(feats): 迭代20 T3 专长 27+2 件换代(专长实装批 B段一)
feats.tres 整表换代:旧 27 件删除(素材库表二退役面),重设计 29 行重建(基础 27+迁入
淬毒刃纹/封印爆裂——卡文 §10.4 推荐案件数口径);订阅行 on/when/do=效果引擎封闭词表;
rarity 四级直映射令牌档(普通 12/优秀 9/稀有 8/传说 0);cap 已拿上限字段(案②解耦);
desc 禁「雷/插旗」字面(契约 6——封印/陷阱风味系);dispatch 预评估口径「每第 N 次」按
N-1 落值(mod_eq ref/eq 阈值-1——effect_words_t1_test 钉住)。

feat_table schema 换代:RARITIES 四级;ROW_KEYS 摘 archetype 增 cap;流派扫雷铁律校验
随流派框架退役摘除(奇物.md v1「不设流派标签、不设档位机制」)。

battle_orchestrator:FeatsEngine 档位求值与 rider_tier 注入摘除(V14 旧实现删除覆盖——
散件单体效果=唯一形态);FACTS 补 pct(处刑台血量阈值沿)。

smoke 特性段整段换代:牌库构成 29 件四级断言(V2)/契约静态钉扎(V18 牌库 kind 全集/
V19 零棋盘改写订阅/V21 禁字初筛/V22 结构锚形态机检半)/临时表新 schema 注入/门票与
relic 兑付断点主语换代/V3 附表 A 逐件三列断言 29 件(命中面 dispatch 直测+counter 落账
施加面同构 helper);同调测试两处主语 venom_edge/flag_burst→nest_counter/dawn_order
(V14 换桩——T9 迁出 treasure_items 前置)。冒烟 863/0+run_all 20 套全绿。
2026-10-11 23:58:48 +08:00
DKChan 0640b0c06d feat(pool): 迭代20 T2 池结构案D 换代(专长实装批 A段二)
四级档位:TIERS common/excellent/rare/legendary(跨层框架档名映射承袭)——TIER_QUOTAS
70/25/3/0=98 直映射零偏离已裁结构锚(传说=头奖位留空);配额/件值字段物理改名
(旧 rare→excellent、旧 rarest→rare)+凭证四 kind 占位(rap/attune_battery/time_sand/
perfect_insurance,配额暂 0=T4 落路由同批投放)。

概率与上限解耦(案②令牌池+提前退役):curio_cap_* 每 kind 独立字段(99=无上限占位,
实数归调参批)+专长 cap 行字段面;taken 身份维计数(relic:<feat_id>)拿了才计刷出不计;
cap 满在候选视图剔除(牌库本体不动=概率位独立存活);断点 bonus_taken 身份维键随档还原。

曝光槽:三选一=2 格全池+1 格优秀档以上子池(子池独立洗牌同 stream 续消费;子池空回退
全池;池空直通同族兜底);凭证(feat_ticket)不进抽签池只经保底注入;商店货架同 cap 过滤。

潜伏缺陷修正:效果引擎 has 算子 null 安全(敌技伤害载荷无 terrain_kind 事实回落 null 时
判「不在场」而非 String(null) 抛错——候选流变化后 devour 件首次被持有而暴露)。

测试:pool_case_d_test 新套(V6 令牌三态/V7 曝光槽回退/V8 解耦提前退役)入 run_all 20 套;
smoke 三档锚/数值对/池构成/上限带四处断言换代(V14),冒烟 848/0+probe_gate --click 全绿。
2026-10-11 23:18:35 +08:00
DKChan 03c4b4c933 docs: 文档正确性审查批+去毒+命名统一+天赋树成文等十一批落籍(2026-10-09 用户令)
一、里程碑语义立规:M3=Alpha 完整实现/M4=Beta 完整实现,未明令关闭 M3 前只排 M3 需求(roadmap M-4 节头立规注+M-3 节头口径指针+迭代 21+ 行注+06 倍率差条注);迭代 20/21/22 规划冻结(roadmap 迭代 20 行注——先解决眼前问题,重启=用户直接发令)
二、文档正确性审查批三波:全 GDD 29 份过审——状态记录按代码证据订正/里程碑删前缀(M-x+迭代N→迭代N,裸 M-4→Beta 阶段(未排期))/退役词退役件当现役清零/在役旧实现节加隔离横幅;重件=秘宝.md v1.7 老正文深层清算(横幅重写消「过渡形态已退役」误读/沿革节换代/六件旧件登记摘除/验收与 charges 矛盾订正)+奇物 v3.8+冒险结构 v0.18+关卡节点地图 v1.7+图生成 v0.7+难度曲线与Boss v0.26+战斗结算 v0.27+敌人系统 v0.16+地图战斗资源 v0.21+增益状态 v0.13+战斗表现 v0.6+元进度 v1.9+生涯 v0.3+00 v1.3+02 v1.16+03 v1.1+ux 八份(battle 23 处/camp/shop/node-reward/level-clear/interaction-patterns/settlement-summary/level-map)
三、去毒批:奇物 v3.7(魔法道具→秘宝/档名三档→四级/门票与刷新「尚未入表」假话订正/验收第 3 条改令牌口径/资源成员指路凭证件表)+秘宝 v1.6(速览旧目录退役标注/退役件示例换现役)
四、道具退役素材库新建(design/research/道具退役素材库.md,案乙已追认):秘宝退役 9 件含去向+专长退役 27 件名单+待核 4 行;魔法提灯(fog_lantern)裁退役(06 条目已裁+秘宝.md 注记换代+素材库迁表一;拆线归实装批)
五、B2/B3/B4 裁决落文:元进度.md 道具工坊行删旧写新(v1.10——旧六行登记作废、指路秘宝新目录+解锁门槛谓词分级);奇物.md P1「两项合成高阶项」注销(v3.9——用户定性脏信息);§3 刷新句按最新口径换代(刷新券替代、不进持有集)
六、天赋树独立成文(B1 裁决):新建 design/gdd/systems/跨局循环/天赋树.md v0.1(33 节点机制全按 meta_tree.tres 实态+迭代 12 落籍裁决+被删底稿 git 取证——脊柱行门槛/钥石单币/Fork A/B 面/存档 v5 域/注入双通道)+元进度.md 定名节换代(v1.11)+02-系统清单跨局循环区加行(v1.17)
七、A 类卫生包:版本历史表理排四份(秘宝/奇物含 v2.7 断裂行修复/敌人系统/图生成,只调行序)+缺号注记三处(增益状态 v0.6 未考/冒险结构 v0.15/关卡节点地图 v1.6=MC-1 批)+node-reward v2.2 双号改 a/b+07 补建版本历史表+06 删「设置与本地化」空节+「文档/结构闸存量欠账」块挪文末「文档与结构」节+「L1 商店编排」两悬空指针改指 GP 换算失衡条+难度曲线两处过期指向核销注记(v0.27)+B5「现役 UI/文案两处自相冲突」登记 06 待办(battle_narrator.gd:160 旧话/hero_info_panel 两段同标「特性」——随后续迭代修)
八、命名统一(用户令「任务书」全库改「需求卡片」):167 文件约 800 处(design/ 全部文档+roadmap+CLAUDE.md+active.md+entities.yaml+game/ 注释与数据批注);两文件改名(需求卡片-M4数值批/需求卡片-冒险前资源配比预设批);残留=自造短语全量清单(黑话证据文档故意跳过)
九、CLAUDE.md:批次工作流标准清单收口段新增第 12 条「文档同步闸」(需求卡片必列关联文档同步面、合并前同步完毕方算收口,原 12/13 顺延);呈报六问铁规适用范围补立(前序批随批落籍)
十、active.md 快照节+工作日志 414-421(并行会话 416 黑话清扫条目按共享工作日志惯例一并入库);06 中并行会话「active.md 定性与裁剪」条目未提交,按零吞并纪律留在工作区未入库

零测试(文档批两入口铁规);主区前序脏件(.gitignore/.zcode/config.json/playnote/project.godot/.zcodeignore/美术审计报告 html 等)未带
2026-10-09 19:12:46 +08:00
DKChan 3763a7555d 修复: 卡①T3/T4——config_fatal_probe 退役(.gd+.uid——与 run_all 致命类单测 config_db_fatal_oob_test 断言面重复,2026-10-02 代码质量修复批呈报退役的还账)+数据配置.md:205 指路句连带改指致命类单测(退役必须连带改指,任务书 §二;v0.4 版本史行系历史记载不动)+damage_probe 头注标注「诊断工具·非验收件」出一切闸(M4 修复义务引用不受影响)+skill_rhythm_probe/board_stat_probe 头注标注「分析工具·非验收件」(零断言取数工具)。全仓引用清查:CLAUDE.md/tests README/smoke README 零引用残留 2026-10-08 19:21:04 +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 a7861aec5a 修复: 卡①S2 观察项根因修复——board_shot_probe 抓帧时序改时间制等入场涟漪完结+golden 三张基线换代。基线换代触发原因(强制记载):非视觉回归非素材换代——render_gate 清障后首跑 golden L2_underdark changed=2.53% 越限(基线入库时首对比 0.00%),停机诊断实证=波动性越限(L2 四跑 0.00/2.53/2.29/1.17%、L3 0.89/1.78/1.59%、L1 恒 0.00%):board_view rebuild 入场动画(全板淡入 motion(0.2)+R0 涟漪 motion(0.04×距离)+motion(0.12),最远格 ≈0.56s)未完时抓帧,原制 6 个 process_frame 热机后 ≈0.1s 恒捕在中途态、逐跑帧时序抖动使揭示 alpha 漂移;基线生成跑恰逢冷机慢帧捕到完结态故入库时全过。修复=抓帧前 create_timer(1.2)s(2×余量)锚定动画完结态(探针侧零运行时 diff);换代后三连跑稳定性实证全 0.00%/0.00%/0.00%;render_gate 修复后全绿(EXIT=0);容差 2%/16 用户冻结口径未动(S2 呈报在案);素材齐盘守卫走 golden_baseline_refresh.sh(S3/Q5/Q2 口径全随) 2026-10-08 19:20:54 +08:00