Commit Graph
64 Commits
Author SHA1 Message Date
DKChan 1ee65d854b 工程(闸机提速批): 02分片并行+代码域起手自检+worktree素材同步——run_all.gd加--shard/--shard-count分片(串行道=RNG日志会话六套件钉第1片防同种子日志互踩;空片放行;逐套件日志_s<k>段防跨片覆写)+gate_unit多进程并行(GATE_SHARDS默认4,=1回落单进程原路径;日志按片序合并供错误扫描与指纹取材——指纹绿闸记green红闸取FAIL行排序集合,不受片序影响)+run_all_gates.sh code域起手自检(熵增预检红灯即止/master推进黄牌/worktree素材自动同步)+tools/sync_worktree_assets.sh(主区→worktree增量拷assets art与.import边车、缺件或缺.godot时编辑器导入刷新;相对路径拷贝防杂散顶层目录) 2026-10-30 02:17:05 +08:00
DKChan 34eba7a332 iter43-卡1:战斗一屏样张批:五项实装定值落码——血条填充#A8321F经UiKit.HP_BAR_FILL(§4.2语义物件,#689CE8退役值零残留)/条底收HP_BAR_TRACK/顺位徽标提档FS_HINT/护甲三键换24×24 PNG(UiKit.TEX_ARMOR_*单点,缺位回退字形)/名字行垫HP_BAR_BACK素底牌且基线上移地台顶上方(§6.1/§7.2,几何单点_name_plate_rect+name_line_probe扩出口)/地台件TEX_STAGE_PLAZA九宫格横向拉伸接装(缺位回退程序化三段)——样张脚本扩展:draw_base两版画布出口(1280×800基座+1920×1080全局等比1.35×左右黑边96px)/B区按代码252出样/mockup镜像五项定值/S3b色板变体第二套/S5三组关键帧条/S6剪影三语境+描边对照+遮挡对照组/整屏四项断言S1–S4/战斗表现五项P1–P5/A7护甲对比锚/V1两版尺寸/V10基线并排/A5b成稿净空(机检30/30全绿)+--gen-assets四件素材产出入包;新单元套件standee_present_values(V5–V9真实入口断言18条全绿)登记manifest;三枚护甲PNG入包;批件三份落reports(实现报告/反哺点12条/追认单11条);并master合入态订正(迭代41测试债批清偿存量红与tween缺陷) 2026-10-30 00:00:01 +08:00
DKChan 9f94c9e100 工程(合回闸关联档+闸机编排快速失败): 收口跑批按改动关联面选测+红树快速失败——①tools/run_all_gates.sh 关联档选闸(推广 2026-10-28 影响面选闸):00 冒烟/01 系统测试/09 静态扫描三件保险恒跑不降(测量面批不再免 00);03/04 探针与 05 渲染闸维持影响面口径;02 单元与集成改「选套件跑」——套件集=需求卡片申报∪diff 推导并集(申报=本批 diff 触及卡片∪roadmap 进行中行登记卡片的对照表「验收测试」列测试文件名;推导=脚本内套件族映射表按 game/ 代码面文件归族,映射不到一律横切),横切(公共件前缀 config_db*/rng_service*/save_manager*/meta_progression*/main*、project.godot autoload 注册面、game/data/tables、PARITY 触面表)→ 02 回落全部套件;PARITY 触面表上移单点定义(gate 11 与横切判定共用同一清单);回执加 scope(full|related)与 scope_terms 字段,worktree-guard 校验逻辑不动——②game/tests/run_all.gd 快速失败:连续 3 个套件超时(可调常量 CONSECUTIVE_TIMEOUT_ABORT 初值 3)即中止整轮、汇总已见失败与超时清单、退出码非 0,不连续超时照旧逐个回收;_run_suite 改返 {fail, timed_out};新增 --only-source=gates 来源标记(关联档选跑横幅,区别于开发期选跑免责句),无选跑参数时行为与现状完全一致——③规则同批同步(禁只改闸不改规则):AGENTS.md「交付前验收」句与硬性红线改按关联档选测口径(所选域绿即可合回,全量回归由用户自发、合入后无自动兜底,2026-10-29 用户裁)+规范导航行同步;process-conventions §3 第 8 条合回闸细则同口径;test-conventions §4 改「提交前验证」、code-conventions §3 主题行随改;game/tests/README.md 工具速查 run_all.gd 行(快速失败+闸机关联档选跑+manifest 实数 65)与挂死防护注、门禁/本地闸回执字段句同步——④待办清单「合回闸关联档」「闸机编排快速失败」两条目完成整条删除。孤立验证:推导沙箱七场景(行为面归族/触面横切/测量面批/main* 横切/project.godot 横切/申报并集/横切优先)+run_all 闸源选跑 9/65 绿+2s 截止连续超时第 3 个中止(exit 1 带汇总) 2026-10-29 04:36:26 +08:00
DKChan a2710f2253 工程(单元闸挂死守护): run_all.gd 每套件阻塞面超时——OS.execute 换 create_process 非阻塞+200ms 轮询+截止时间(默认120s,RUN_ALL_SUITE_TIMEOUT_SEC 可覆盖),超时 taskkill /T 整树回收(连 cmd wrapper 带引擎孙进程,等死确认10s宽限)判 FAIL 继续批,单套件挂死不再拖死整闸;退出码改经 cmd /V:ON !ERRORLEVEL! 文件通道(值与阻塞回传同一,读毕即删不积残件,起跑前清陈值);正常退出判定形态不变(错误扫描/expect 对比/负面豁免/选跑透传);机制验证=挂死夹具 8s 触发整树回收+孤儿清点零残留+正常/负面选跑绿+全量 65 套件 all green;README 超时记载同步换代;承接待办清单 2026-10-25 挂死防护条目件②,实证=迭代 40 批末三例阻塞面挂死同根 2026-10-28 07:51:20 +08:00
DKChan 185bf81560 合并 master(21cd0f2e) 进 iter40: 接回挂死防护·probe_gate件批(run_all_gates/probe_gate/run_all.gd超时守护/undo_proof/reshape_cards工具+process-conventions/architecture/test-conventions规约面+待办清账)——iter40侧同改文件仅run_all.gd(manifest wr8登记行),与守护改动异段预期自动合并 2026-10-28 04:18:32 +08:00
DKChan 6caf56b5c1 工程(02闸选跑过滤器): run_all.gd 加 --only 选跑态——OS.get_cmdline_user_args 解析 --only=<词[,词…]> 对套件 res:// 路径子串匹配只跑命中套件;零命中/空值=用法错 quit(2) fail-closed 禁零套件当绿;选跑态打印 FILTERED RUN 横幅+日志另名 run_all_filter_*(不覆写全量跑批日志);实跑数校验对过滤后清单,全量态条目与顺序零变化;默认路径(无参数)逐字节现行行为——批末全量闸不带参数不经选跑分支。验证口径=用户裁 2026-10-28:开发期零代码验证直跑,选跑分支判红绿正确性首次实证=实际使用;本批仅做秒级 --check-only 语法自检(不跑套件) 2026-10-28 02:49:12 +08:00
DKChan b8b69c683d 合并 master(迭代39 拆件批+文档批) 进 iter40+主角账模型迁移适配——冲突两件按「保留本分支拆件结构+承接 master 语义」解:①battle_orchestrator 承 RunLedger 整类退役=新增 _journal()/_attune_loadout() 两读面(enc 派生、无成员接收)、_reseed_attune_charges 循环体换 AttuneLoadout.reset_cycle(写时种行/补行单源化)、冒险桶挂接改 enc["adv_bucket"](经 _fx_host.mount_buckets 下传)、战末 bonus 汇入换 GainJournal.gain_bonus(axis,value,"battle_export",axis);同时接回 master 的 B4 战斗指标面=_mines_hits 三读数账+开战清零+轮末转存、_roll_round_actions facts 组包四键(round_index/last_round_end/mines_hit_last/mines_hit_total)并传 check_trigger_unlocks/rollable_skills/special_skills 三参、enemy_hp_threshold 读数改 trigger.value。②RewardGrant 的 battle_ledger 引用改 battle_hooks 回调束三键(attune_consume/vision_add/negative_blast,bind_battle 缺键 assert)——授予件对账本零强引用、宿主侧单点留编排器,类变量封闭面 15 不减不增;use_treasure 充能消耗与真视计数改经回调,负向 blast 踩雷计数在 _flat_blast 判极点后回调宿主记账(等价承 master 的 _book_negative_blast 语义)。③treasure_effects_test 计数链断言取 master 口径(lg13.vision_used()==1)+本分支真实入口(reward_grant().use_treasure)。④trigger_cond_test V6 的两处 flat 行调用改指 reward_grant()._apply_flat_row(att 束形)——它原调编排器已迁函数触发 Invalid call,_init 在 quit 之前中断=进程挂死 124 超时(本轮排查实证:同件在 master rc=0 秒退,合并后挂死;修后 rc=0 全绿)。验收:run_all 65 套件 64 绿 1 红=已登记存量红(02 EV 锚 goblin 0.9148∉[1.00,1.20],迭代39 特批带红在册,重锚归后续数值批),零 SCRIPT ERROR;负向套件 run_time_fatal_test exit=1 三点绿;variant_placement 49 checks 绿(wr10 三条在位);gdstyle 待合并后复测〔结构小件批 V16〕 2026-10-27 22:25:53 +08:00
DKChan ea322599f7 卡②(结构小件批p1-p7+V15): 七点定点修落地+运行期违约通道负面套件+wr10 偏运缝拆验收——①p1 状态角标判据去重(main_overlay_flow._sync_status_entry 一组重复赋值语句删除,battle_live 局部量随之退役=wr1 载体);②p2 确认窗开合归模态栈单口(main 两处 _on_confirm_* 改 _close_modal;存档删除入口改 root._open_modal(root.confirm_dialog) 后再 open,遮挡记账/挂起兜底/开侧同步同口);③p3 棋盘动作与 stop 两入口显式 settlement 空防护(锁谓词异常时不崩于空引用);④p4 会话更替即清队:_begin_session 首行 _row_pacer.flush()(待播行不住局态=机制保证非时序约定);⑤p5 缝拆:RewardEconomy 删跨域直持(_fx/_ctx/set_fx)改注入 luck_bias_query: Callable,reward_roll 发射与 bias_rewards 求和收回 BattleFxHost.luck_bias_for(cell_count)(三参形 dispatch,不带 facts——禁复用 fx_emit 的第四实参会打开 when 事实条件面),组装点 set_fx 一行换赋值一行 1 换 1;类变量 15−2+2 净 15,gdstyle 无第 16 枚;⑥p6/p7 RngService 未知用途标签与未播种取数两分支加 violation_handler 记录位+release 下 return null 空引用即刻崩(fail-fast 传导,合法路径不可达)——debug 下 assert 先中断函数本体两态不可判别,故记录位是唯一可观测面;⑦board_generator/reward_economy 各加 fatal_handler 注入位并由组装点接 orchestrator._fatal(release 剥 assert 后仍经 battle_result 封印真中止)。新件 tests/unit/core/run_time_fatal_test.gd(manifest 登记 expect=1 negative=true):wr5 协作件 _fatal 经组装点传导 p5 封印+缺省形态不外溢/wr6 未知标签通道/wr7 未播种通道(各用新建 RngService 实例,播种断言 _counter==0)。wr10 三条入 variant_placement_test=判定面夹具白盒装载(现网数据无 bias_rewards 行,沿 tree_rules_v11_test 先例)+接线同源+权重生效 77+4*2。验收:variant_placement 49 checks 全绿(wr10 ①②③ PASS:空订阅 0/命中 1 行/装载后 2;查询口有效且与宿主同源;偏运池实测 85);run_time_fatal_test 退出码 1 三点绿;pacing_queue 绿(wr4 前置夹具真入队 2 行→更替后清零);ui_click_probe 问题 0(wr2 遮挡账开/关两侧断言);round_flow_skill_pool 130 checks 绿;wr11 dump_battle 六组(L{1,2}×S{42,779401,779501})与改前 before_* 逐字节 cmp 全等;gdstyle 基线外新违规 0、恶化 1(level_map_screen 类变量 22>21=iter38 存量非本批触碰面)、基线文件零改动〔结构小件批 V15〕 2026-10-27 18:39:53 +08:00
DKChan 4868e11b9d 触发器卡(触发器批wr1-wr9): 触发条件机制实装+三Boss迁移+两示范投放——skill_table三常量词表+validate七反例校验段(四键白名单/词表出域/枚举算子限域/类型分派/普攻禁配);enemy_table unlock_hp_pct域校验段删(字段退役);skills.tres三Boss行加trigger闩型+enemy.tres八处unlock_hp_pct删+J面注释清理(技能表头注/酋长池注);unit_container快照trigger随读(技能行权威)+_entry_blocked收编_entry_locked(百分比阈值式T=round(max_hp×value/100)六算子统一/facts缺键=拦fail-safe)+rollable/special双面过滤facts缺省参(既有单参调用零破坏)+check_trigger_unlocks闩型换代;battle facts组包(摇号前一次成型,last_round_end空字典首轮映射none唯一落点)+mines计数埋点(负向blast守卫累加——正向spark_aoe/清图奖励同走blast分支不计入,轮末转存,开战清零)+解锁调用与pct读值源迁移;cross_validator池构成新纪律(每池至少一行无条件特殊技——普攻不计/trigger缺省行计数);示范投放:skills.tres孤注守势(buff/defensive_stance/lte35)+趁隙偷袭(damage×1.5/CD4/eq stopped)+status_effects护身行+地精两行w1+钩爪恐魔三行w2;测试换代:skill_unlock_test读值源与签名换代(申报①语义零变化)+round_flow expect_pools期望值随投放改写(申报②地精两行9/1→9/1/1·钩爪恐魔三行6/2/1→6/2/1/2)+十四行断言换代十六行+V4池纪律扩行(申报④)+巨蜘蛛band1误投修正(old_hook块与蜘蛛池同构误命中);trigger_cond_test新套件V1/V2/V4/V6/V7/V8/V9/V10全绿(manifest登记;V5对拍由skill_unlock/round_flow编排集成承载)。已知预期红:round_flow EV抽样对锚goblin(实测0.9148∉[1.00,1.20]——示范投放=池权重数值改动,EV稀释方向合理)——卡片T4-4预设停机呈报面:锚内子集判红,重锚归用户档位发起,实现批不自行重锚〔触发器批 V1-V10〕 2026-10-27 04:49:55 +08:00
DKChan 4a9e4300ad 主卡T2(拆件批wr2/wr3): CurioStop建件+CurioDeck纯池化——curio_stop.gd新件(停点三态/刷新三源账/兑付族/凭证出箱voucher_outbox/信号面自带/rebind_level_runner每关注入GP回调防调死对象/open_level_clear收编关卡完成停点段);adventure_runner停点面迁出(停点方法族留组合根薄委托——T5 C类收口;stop()件出口;信号中继法转发——T3直连前承转;_resume_pending迁stop.restore_pending含token_migration;resume已兑付分支stop.restore_resolved;_bp_parts停点键改stop片段取数);CurioDeck纯池化(bind_handlers/consume_pool_purchase反向回调退役——商店消费链ShopSession→注入Callable→stop.consume_pool_purchase兑付单点);测试挂死级改址随批(直读写已迁字段30+处→stop()件测试构造面,语义=原直写——G2b清单停点域全部);cs1/cs2/cs3现役断言承继尾缀落点(拆件批 V2/V3)。验收:bp1对拍292dumps×27键逐位零漂移(改前/after_T1/after_T2三时点同种子逐位一致)+九套件零红+csf集成绿+冒烟17项0失败〔拆件批 V2〕〔拆件批 V3〕 2026-10-27 03:04:22 +08:00
DKChan d5a03db1a8 feat(迭代38卡④ 明细收敛批): 扩展行型收敛——四个专长实名行型(fx_reveal/mine_neutralized/insurance_used/fx_preview_area)收敛为单一 extended 行型+effect_id 载荷(六发射点:orchestrator 三处+grant_segment 三处,display_name/value/highlight 逐字不动);a2 _emit_row 扩展行必载 effect_id 校验(emit 之前,违约 assert 炸零发射);a3 fx_preview_area 来源类别空串违约修复(→fx_warning_beacon,对齐 fx_seal_smith 先例);a4 头注换代两层词表(基础 9 类+扩展行 1 类+四效果身份发射点指引);a5 呈现零改动核验(_format_row fallback 承载、AGG_TYPES 不含扩展行);a6 裁点甲重锚(parity_anchor freeze 改后行为立新锚+复闸三变体双面全同;改前对拍绿基线在案——stash 干净跑批实测);验收=wr2 断言五条(insurance_used〔V6 扩展〕+fx_reveal 兑付/落空〔真实揭示管线〕+mine_neutralized/fx_preview_area〔treasure 套件首次 feats 注入〕)+wr2-np 负面小套件(extended_row_violation_test,expect=1 negative,manifest 登记行)+wr3 并⑤断言;撤销证明三条实测红绿复现;JSONL 读数对拍 PASS(type 迁移计数与 T0 基线对账 264/304/0/0,字段口径外零差异——type/effect_id/source_class/source 四字段,source=logger:133 同值改名副本);改动面封闭(基础 9 类零触碰、豁免集合零变化、数值随机零变化) 2026-10-26 08:52:14 +08:00
DKChan d2c197915d merge(master): S13 基线键治本+死断言收口 并入 iter37(拆件批基线待按新键重判) 2026-10-25 17:51:34 +08:00
DKChan 1753e581a4 fix(测试面收尾): 节点图换代三件收尾——①宿主改名 node_map_templates_test→node_map_determinism(git mv 两件+run_all.gd:90 manifest+文件内 4 处自引用,断言判据零改动,直跑 exit 0);②tools/extract_checks.py 两小改(头注模板数据驱动化·批次专名与写死计数清偿·§8.3 错号订正+--carry-from 同指纹承接回填两列·旧宿主名映射)后重生成验证集清单(1067→1544 条,缺省三宿主全量口径,承接回填 986 行=理论精确值,--diff PASS 三对齐,node_map_templates/first_script/template_pick 零命中);③level.tres:16 迭代叙事清偿(删「随迭代 35 卡②」保去向事实)。工程改动直改批(2026-10-25 改动四类),待办三条目做完即删 2026-10-25 07:21:24 +08:00
DKChan 0529e1691c fix(iter37①): T2 呈现/组合根缺陷修——蓄力档分档·庆祝句柄·互斥四口·模态 fail-fast·站桩按 id 解析
- d2 蓄力档 `_intent_charge` 布尔分档(颜色相等判据退役,深浅金同值不再误判);d4 庆祝浮动 tween 句柄 kill 纪律(close 必杀)
- d5/d6/d7/d8 互斥四口:调试钮判据并入 `_sync_sim_button` 单点、组合根两守卫补模拟态/冒险态、`is_running()` 运行态查询面
- d9 ModalStack open/close fail-fast+遮挡账合并非覆盖(重复 open 不再吞旧账);d12 target_id 产发(damage_controller 四处)+站桩两口 id 先名兜底;d17 await 后实例守卫;d18 参数类型注解
- 断言:standee_fx_sweep_test(新增,18 项)/modal_flow_test V6-5(5 项 wd9,V6-1~4 原样同绿)/damage_controller_test target_id/pacing_queue_test 排播 target_id/system_test wd6+wd7
- 代拍板:d18 卡片字面 `lumas_out: Array[Variant] = null` 在 Godot 4.7 解析报错(typed array 不可默认 null),改用 `Variant = null`——唯一合法注法,零行为变化,随代拍板追认单留痕
2026-10-25 03:49:05 +08:00
DKChan 678ad791da merge(同步 master): 迭代 35 卡② 分支合入 master 现态(12 笔他批改动,含 game/ 呈现层与测试工具手册批)——按 process-conventions §1「master 若被别批推进,先在分支里 merge master 解冲突、重跑本域闸再合回」执行 2026-10-24 23:08:08 +08:00
DKChan 9ee3bea194 refactor(迭代35卡②T2·二口+T3 S1/S2/S6/S8): 消费侧切源落定+断言面换代主体——① level_runner 图源换代(_generator 取代模板解析,_assign_generated_graph 读 level_gen_params 参数档产图并过 LevelTable.validate_graph,违规起关拒绝零兜底)+_entry_nodes 多入口首跳+_node_id 句柄单空间+enc node_depth 取节点 depth 值;② adventure_runner/main/save_manager 模板链路退役(first_script 参数与 template_pick 计算全删,断点 template_pick 键换生成图代差标记键 graph_gen_v2,缺键旧断点 resume 显式拒绝禁静默回放);③ level.tres 三行 templates 键清出(15 张模板数据出表,行级字段留,表尾注释改指参数档+生成器);④ sim/probe 随动(run_level/run_adventure 尾参退役、MC 出数字段 level_templates→level_maps 值=关卡#主种子、探针注释性质化、boss_depth 取节点 depth 键);⑤ 断言面换代:node_map_templates 宿主整段重写为生成图确定性套(纯函数复现/换种子变图/零计数器号位依赖/单一图源/种子 42 两开局同图/断点重生成同图/缺代差键拒绝/表无 templates/收束置位三条保留),breakpoint_resume 新增 P7 六断言(快照无已抽模板键、代差标记、停点句柄与已到序往返、续玩同图、旧断点拒绝、同种子重开局同图),S8 单测随动 first_script 键清退+断点夹具换代+meta 参数面 extra 键样换 treasure_unlocked(语义保持),S2 生成图取数面三宿主替换(level_active_nodes 走参数档+种子 42,消费点深度键换 depth,round_flow 死件 _boss_depth 随删),adventure_feats 覆盖义务段改真实解析链判据(敌侧落带≥请求深度+板侧命中+非空扫描面)、奖励节点段换「图侧含件+真实选路点选呈停兑付」双断言(旧单链必经形状前提随模板消亡,非放宽:经停即呈候选由真实 pick_next_node 入口证明)、商店余额段按每关恰一店投影改三关读数 2026-10-24 18:59:57 +08:00
DKChan c0dd442060 feat(迭代35卡②T1): 加载校验换代——LevelTable.validate_graph(nodes) 静态单点承载四检+良构基底(①入口≥1 且终点≥1 ②全员从某入口可达且可达某终点 ③终点恒 Boss 且 Boss 无出边 ④出边目标深度严格大于源=无环;良构=句柄唯一·出边全命中·type 五类枚举·battle 带深度),表加载期图校验与旧六判据(Boss 恰一/战斗≥2/单链末 Boss/前三位纯战斗/出度≤2/Boss 编号最大)连同模板池校验分支、BFS 层宽≤5 一并退役,行级校验保留
- 新宿主 tests/unit/core/level_table_validate_test.gd〔v1〕15 条(正例三形:多入口多终点/含岔口单终点/单链退化显式出边;负例八类;范围反证三条:无商店图不报错·双入口合法·缺 next 字段仍拒)+run_all manifest 登记一行(59 套件全绿)
- 判据②与④在 DAG 上互斥的实证:无环图每个源点必为入口、每条极长路必止于终点,故「孤儿/断头」构造不出独立负例——② 保留为 ④ 失效时的纵深防御面,测试以两独立链正证不误伤(该关系拟入反哺点,文档判据②的表述宜注明其兜底定位)
- 旧断言随动四条(声明,非静默放宽):level_shop_economy ③ 段整段改走 validate_graph 并把「入口唯一违例」翻为合法正例、「孤儿」改为非 Boss 终点;level_map_type_vis 夹具注释订正;round_flow_skill_pool 敌表池清单 20→28 行补齐覆盖批八行池克隆键;board_gen_reward「(2,3) ceil 上取」改判精确命中并以临时摘同行的夹具面保留 ceil 能力判据(覆盖批补齐键域后旧判据对象消亡)
- 件核:全仓 grep 六判据消息文本零残留(唯一余留在 level.tres 表尾模板生成史注释,随 T3 模板清出一并消失)
2026-10-24 15:52:21 +08:00
DKChan 9eaafbf4e0 merge(迭代36): 三卡总收口合回——卡C 开场后缀认加算区+营地六处灰字深化+迷雾测点三关归一后基准(甲)+派生校验;卡A 玩家面文案/禁字清零 13 单元+player_copy_sweep 新宿主;卡③ 状态面板瘦身(八键投影+本局信息五件+跨关概览退役)。批末代码域闸全绿(回执 8b223392 对齐分支尖,11 对拍 NEED-APPROVAL 用户裁不跑;golden 加严句触发判存量漂移用户裁不重制)。变异测试经用户 P0 禁令停止(既有记录随实现报告申报)。独立验收审计两轮通过(卡C/A 19行+卡③ sv1–sv10)。 2026-10-24 10:15:43 +08:00
DKChan 9468c70ee2 iter(36): 卡C+卡A 实现——开场行后缀认加算区(六项布尔+三路径断言:白板反向/续玩重建正向,卡片②奖励节点前提缺陷改快照喂入形态代拍2)、营地六处灰字STONE_DEEP+取色/源扫描断言、迷雾测点三关归一后基准+派生校验(T0对拍L2/L3修值L2条款)、文案禁字清扫钉值表13单元+player_copy_sweep新宿主24断言入清单、变异验证全套留痕(对照表证据随实现报告) 2026-10-24 07:42:46 +08:00
DKChan 63a6ea8055 feat(迭代35卡①): 节点图参数化生成器核心批落地——五旋钮参数档 schema+.tres 三行 provisional+ConfigDB 注册与 level_gen_params_row 单点读;RngService 新增 pure_stream 纯流面(不推计数器不落日志,derive_at 派生面流化);NodeMapGenerator 产图 generate(params,seed)+产出侧自证 validate_output(产出约束五条/结构铁律/摆放约束三条/多终点深度互异/深度=自入口最长路径步数)+参数无解致命中止无兜底图;三套断言宿主 68 条(fv1–fv10)+run_all manifest 三行登记;生长读数 L1/L2/L3 = 11/19/29 节点、层高 6/9/13。卡② 停工呈报随批(§0 硬交付序列——覆盖批未立卡) 2026-10-24 05:40:04 +08:00
DKChan 957391e13b test(批B): 断言层级重构大提交——1065 条断言自 smoke_all.gd 全量迁入 16 标准宿主(冒烟/单元/集成/系统+UI 探针);smoke_all.gd 整体退役;变异引擎按用户令删除、验证改核代码(三冷启动审核员 1065 全审:1047 有效,17 存疑+2 段落级,其中 2 段落级经今日闸记录实证解决);10 条核代码修复(恒真/名实/静默跳过/键名等——grilling 一轮修订);验证集清单回写 1068 条三对齐零差异;底册去向补正与笔误清账 2026-10-23 20:48:20 +08:00
DKChan 5ed1ec99af test(迁移): 批 B 波 1 G5 套1 末点 AP 封印回归五条迁入新建宿主 seal_polarity_test.gd——新宿主落位+manifest 登记+剪切挂载绿(宿主 5 检查)+按条变异 5/5 验红(受理守卫恒拒/dig 扣费+1/revealed_cells 置空/seal 计费 99/try_spend 耗尽仲裁恒假各验红);smoke_all.gd 同批删函数节头块与调用行;闸01 剩余面 976 绿 2026-10-23 03:38:50 +08:00
DKChan fdb77ffeea test(迁移): 批 B 波 1 G4 套1 敌方攻击类型轴四条迁入 roll_multiplier_test.gd——新宿主落位+manifest 登记+剪切挂载绿+按条变异 4/4 验红(表列越轨/快照清空连带载荷矩阵/载荷置空/矩阵查表短路各验红);smoke_all.gd 同批删函数节头与调用行;闸01 剩余面 1015 绿 2026-10-23 02:52:55 +08:00
DKChan 7077a04d52 test(迁移): 批 B 波 1 G3 套1 格边公式两条迁入 board_gen_reward_test.gd——新宿主落位+manifest 登记+剪切挂载绿+按条变异 2/2 验红(间距项删除与钳制带出带各红唯一);smoke_all.gd 同批删函数,_mk_stream 共享 helper 双份过渡(G11 仍消费) 2026-10-23 01:54:24 +08:00
DKChan 49dff0853f test(迁移): 批 B 波 1 G2 表结构族七套 60 条迁入 table_structure_guard_test.gd——剪切挂载绿+按条变异 60/60 验红(零死断言候选;四条首试无效变异已记账换形态);smoke_all.gd 同批删六函数+六调用行、_smoke_meta 瘦壳留 G9/G11 调度,共享 helper 双份过渡(收尾批去重);宿主65绿+闸01剩余面1081绿+闸02四十一套件绿 2026-10-23 00:58:56 +08:00
DKChan ed8e0f9f3d iter34 卡④ T1-T3: 信息迷雾类型可见性——层距 N+Boss/候选豁免+单圈回雾(N 读表)+呈现显隐决策面+画布大图断言与探针常数同源
- level_table.gd: info_visible_layers 字段(int≥1)+validate 越域 domain 错;level.tres 挂 2
- level_runner.gd: type_visible_ids() 纯函数(入口 BFS 层差 ≤N ∪ Boss ∪ 候选,锚=当前节点层/入口停点 0;visited 不豁免)+_bfs_layers()
- level_map_screen.gd: node_display() 静态决策面+display_probe()+_draw_graph 图标/文字/Boss 描边三处改读决策面(结构通道零改动)
- 新单测 level_map_type_vis_test(26 断言)/level_map_info_fog_test(19 断言);run_all 注册两行
- smoke_all ⑬ 真图 L2 入口停点可见性组(+5 断言);ui_input_probe ⑬ 常数锚同源化+⑱ 雾不扩可点域

轻闸读数:冒烟 1211 项 0 失败(主区基线 1206,+5=新增组)/probe_gate --click 全绿
2026-10-22 05:52:11 +08:00
DKChan 6a7c25755f iter33 卡① T1+T2+T3: 存档制数据层三槽承载+启动态钉死+档操作原语+窥视读器+断言批
基线复读(T0,2026-10-21):冒烟 1156/0、单测 35 套件全绿、probe_gate --click 全绿。
承载面(save_manager.gd):SLOT_COUNT=3 三文件制 user://save_slot_N.json(§9 白名单①拍板,
槽1 禁复用旧名单独派生);启动态钉死 _ready 不读槽(内存=默认空态、无激活态、写盘一律拒——sv2/sv3);
旧单档一次性字节迁槽1(Q1 甲:幂等判据槽1已存在不重迁、源改名 .migrated.bak 留痕——sv12);
原语 activate_slot/create_slot/delete_slot(失败恢复切换前三态、删激活槽指针连清除——sv4/sv5/sv6);
窥视读器 peek_slot_summary 三态零副作用(sv7/sv8);测试隔离注入口 attach_slot_template+
peek_summary_at(契约7 单路径语义保持,attach_path/注入面零变化——sv11)。
断言批:三新单元套件(isolation 22/boot 8/summary 12)+冒烟 V2-s1..s4 启动态段+
_smoke_save_slots 段(往返×3/删档/新档/各槽迁移/窥视/旧档迁移);V2d-1 按削弱申报改写
boot 恒隐(卡② mn8 再承接)。
真实链实证:本机 user://save.json(v7 空档)已随批内首次 boot 迁入槽1,原件留痕 .migrated.bak。
2026-10-21 23:44:03 +08:00
DKChan 4c5bdbc9aa feat(卡② T5): 计数器引用闭合校验 + V9 负面套件 + manifest 登记
- config_db_cross_validator ⑦ 引用闭合:声明集=feats+treasure 各行 do.counter_id,
  读点(when counter id / value_counter / counter_spend counter_id)无同名写入行→加载致命
  (判据只做成员判定,不重写前缀规则——契约 6 两落点同源)
- 新建 counter_prefix_fatal_test.gd(expect1/negative):①meta_ 非法前缀②悬空读点两断言,均正确拒绝
- run_all.gd manifest 登记负面套件
real 数据 config_db_test 26 全绿(闭合零误伤);insurance_used 经 forgive_seal_miss 行 do.counter_id 声明纳入。
2026-10-20 23:12:29 +08:00
DKChan 6d601d23dc chore(禁写变更记录批): 版本历史节/日期批注全面废除——gdd_lint R4 反转禁设+三工具去豁免+48 文档删节+game/README 流水段删+代码注释 900 余行轨迹标签清偿(约束句保留)+规约/skills 五层指令面同批改指 git 沿革 2026-10-20 00:22:18 +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 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 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 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 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 8b9e55673f refactor(迭代27 T4): 波四 ModalFlow 抽取+互斥域 tags 化+双 context——对拍全同
P1-5/P2-7 组合根可测化+模态协议内聚(场景拆分后重估结论=抽取面收敛为模态编排域):
- modal_flow.gd 新纯逻辑类: 依赖仅 ModalStack+查询 Callable(审计处方)——开合编排
  (挂起兜底/排播排空/遮挡记账/开合同步)/棋盘输入锁谓词(三例外注入)/双形制角标谓词;
  V6 modal_flow_test 19 断言直接 new() 进 run_all(26→27 套)——测试抓出并修正
  挂起兜底 divergent return 一处(原 main 语义=先结挂起后继续开本层不短路)
- ModalStack 互斥域随层登记: register(m, tags) + TAG_NON_LOCKING/TAG_SCREEN_STATE
  封闭词表 + has_open_excluding_tags 组查询;原 has_open_excluding/_any 调用点拼装退役
  (main 五处判据迁移);main._modals=flow.stack(ui_struct _list 登记序断言缝保留)
- P1-5 控制器构造收拢 context: curio 16 参→CurioFlowContext/camp 13 参→CampFlowContext
  (字段逐一同名迁移,控制器可独立实例化)

验收: 对拍三变体全同;冒烟 1079/0+run_all 27 套+probe click+render golden 全绿
2026-10-15 00:31:36 +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 6e1b52a450 feat(R1机制位): requires_level等级阈值前置随批重立——用户推翻迭代21追认单#1裁撤案(裁「b)推翻,补机制位小批」)=schema字段Dictionary{node_id:n}+validate悬空/阈值<1/类型错加载即拒+tree_can_buy判定分支+行板门槛呈现(未达标🔒+悬停gate_text)+新单测tree_requires_level_test八断言(run_all 24→25套;首跑抓出测试自身时序bug:零配置行断言跑在cap满状态后,重排修正)+现役12行零配置空转零行为影响(冒烟938/0+probe --click/--full+render_gate全绿零漂移;MC豁免=零数值零行为变化)+天赋树v0.10六处R1表述换代+iter21报告§四#1推翻标注与§八兑现注——doc三闸对基线零新增+熵增PASS 2026-10-13 06:13:10 +08:00
DKChan 2915f19c4b feat(迭代23-T6): 营地锻造工坊工作间——两区六路线行板实装(占位面板替换)+三意图信号接线
- MetaProgression.forge_shop_status():只读投影(等级/cap/解锁态/选中态/下级几何价/解锁价/前置通道进度——纯结构面,余额禁用归视图)
- CampOverlay:_forge_workbench 占位面板→武器锻造区/护甲锻造区两区六路线行板(件名+Lv+解锁态文案+锻造/解锁/选中钮);_rebuild_forge 随 open/refresh 重建;默认不可见+门控重建=锁定态零行板零购买路径(占位纪律延续);三信号 forge_buy/unlock/select_requested(契约 9 UI 只发意图)
- camp_shop_presenter:camp_data +forge 投影;on_camp_forge_buy/unlock/select 三处理器(写口唯一归 MetaProgression 锻造写口族;拒绝可见 pattern 1 toast)
- main.gd:三信号接 presenter
- 新单测 forge_workbench_test 12 断言(锁定态纪律/两区结构/钮态/余额禁用/满级/派生解锁出钮/三意图外发);run_all 23→24 套
- 轻闸:冒烟 938/0+run_all 24 套+probe --click 全绿(presentation 触碰加跑)
2026-10-13 00:21:41 +08:00
DKChan df666ddf30 feat(迭代23-T1): 锻造工坊配置表落位——ForgeTable 新表(默认两轴常驻持有+六路线行族)+ConfigDB 访问器+V1/V11 单测 41 断言
- 新表 forge.tres(schema forge_table.gd):default_attack_type/armor_type 默认值(契约 2 所有权移交——hero.tres 两轴随后批删除)+routes 六行(sword/spear/staff/light/heavy/ward)
- provisional 沿需求卡片 T1 锚表:cap 5/每级增量 +1/基础价 20×150%^n(20/30/45/67/101)/解锁价 200/甲型基础 AC 10-12-9/初始持有 sword+light/并联双通道前置 spear·staff←sword、heavy·ward←light
- schema validate 22 类正反(行 id 唯一/类型轴分族枚举/恰六行/初始持有恰一武器一甲/默认轴=初始路线类型轴/前置类型相符…)
- ConfigDB:TABLE_MANIFEST 登 forge+类型化持用+forge_route/forge_routes/forge_default_*/forge_weapon_route_by_type/forge_armor_route_by_type 访问器
- 新单测 forge_table_test 41 断言(V1 生产面+22 类负向/V11 行字段闭集+效果类型词表 31 钉现/V2 价格梯);run_all 22→23 套
- 事实订正(L2):卡片 F11「效果类型闭集 24」系 2026-10-07 旧快照——现行 31(iter20 +7/iter22 +1),本批零扩签钉 31
- 轻闸:冒烟 898/0 零扰动
2026-10-12 23:23:16 +08:00
DKChan c813b2b042 T3(迭代22秘宝批): 效果引擎接入与常时参数面——board_installed事件发射(巢穴预告读数口nest_preview_count=装板报危险格数量,呈现归呈现桥); 天眼safe_dig=fx_reveal通道复用(C5全额兑付免AP连锁资源同链,危险格仅真视,旗格跳过); reveal_tiles入真视叠加层(mine_reveal同通道); 试炼镐use_attune_convert积点受理口(charges=0零骑库存,counter_spend受理闸+grant_ap,积点计数通用化=装配集ap_charge_safe行扫描替dig_charge硬编码); 充能重置周期_reseed_attune_charges(battle每战/level每关首战battle_index==1,骑库存差额补注); 常时参数面注入(远程镐dig_range_bonus切比雪夫≤1+1/信标网络flag_range_free旗可达豁免——_within_dig_range拆谓词,mine_total只读口); 储备罐finish_round_stop转存率入参(125%=1.25:1整除floor); 刷新练习refresh_stock_grant开局一次性加仓; 刷新执照shop_refresh_free_left装配叠加; 真视使用计数链(vision_counter共享dict→受理+1→summary→settle聚合入档+断点随件); validate_use扩cell档与新空间kind; 修现役潜伏缺陷=use_treasure板维度读Rules不存在的width(旧目录期零直呼掩盖); 新单测treasure_effects_test 22套(V7附属表12件逐件正常/边界/反例+计数链)。冒烟895/0+run_all 22套+探针全绿〔秘宝批 V7/V8/V10/V13〕 2026-10-12 17:01:12 +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 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 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 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 a57489e970 feat(fx): 迭代20 T1 效果引擎词表扩签+发射点施加面(专长实装批 A段一)
词表:EVENTS 16→18(+dig_stop/battle_won)、FACTS 9→17(8 新事实含 hp_ratio 生命比例前置兑付)、
EFFECT_KINDS +7 新类型(heal/ac_bonus/damage_reduce/bonus_delta/blast_scaled/preview_area/
target_attack_bonus)、OPS +mod_eq;DO_KEYS +4 键(value_event/value_counter/domain/axis)。
rewrite_board 暂留至 T3 删行同批除名(purge_sapper 仍在表),消费分支已摘除。

施加面:battle_orchestrator(dig_reveal 三事实/mine_hit 五新施加/terrain 减伤前置/flag_hit 四新/
round_end GP+AP 队列/battle_won 发射/bonus_delta 战末汇入/ac_bonus 累积器/揭示队列_.flush_pending_reveals)
+damage_controller(attack value_counter rider/敌技 damage_reduce/hp_ratio fact/kill 揭示回调)
+action_economy(dig_paid 返还/dig_stop 发射/上轮耗尽旗标)+minesweeper fx_reveal 效果通道
(只揭真格信息红线)+rng fx_reveal 分签。

T6 承载:EffectEngine adventure 域计数器(domain 键/counters_export/counters_seed)+
AdventureRunner.adventure_counters 共享引用(attune_charges 先例)+断点随档。

测试:effect_words_t1_test 新套(V1:新词在册/出域四路被拒/seed-export 往返/mod_eq 预评估口径)
入 run_all 19 套全绿;冒烟 846/0 持平基线零破坏。
2026-10-11 22:42:51 +08:00
DKChan 510cdab506 修复: 卡④T3——测试三形态落位(契约 9):①probe=ui_input_probe case⑮ 内载体级段不开新 case——装配 fog_lantern→开局参数面(build_adventure_params=卡⓪①修复面回归)+settlement.attunement 注入→呈现桥 _sync_fog_lantern→lantern=2 且 dist==R+1 格转可见+卸装显式重算复原 0;case⑮ 既有断言零删减(实查 17 断言面原样)②smoke=现有套件 _smoke_adventure_table 加断言不新开套件——行字段逐键裁值+同调目录投影 display_name(九件→十件)+装配→战斗贯通 enc 注入→attune_has=true+空装配基线 false③存档回归=breakpoint_resume_test 新增 Part 6——装配(params.attunement)→停点→续玩受理→回局首战 attune_has 仍 true④呈现桥判定 stub 单测+行加载单测=新件 fog_lantern_wiring_test.gd(run_all manifest 17→18 套)。闸:冒烟 840→844/0+ui_input_probe PASS+breakpoint PASS+新套件 PASS 2026-10-08 17:01:55 +08:00