14 KiB
14 KiB
迭代 53 实现报告(2026-11-05)
- 接收方:待办清单条目「超预算图策略升级路径——等比缩放与滚动视口两案待裁」(卡①卷轴视口批)+「damage_controller 按序改写族——内容孤儿机制与退役名注释层」(卡②改写族清退批)。
- 需求卡片:
reports/需求卡片-卷轴视口批-2026-11-05.md(验收档:中)+reports/需求卡片-改写族孤儿机制与退役名清退批-2026-11-05.md(验收档:中)。 - 独立验收审计:
reports/iter53-验收审计-2026-11-05.md(未参与实现的会话执行;两卡均按中档深度)。 - 执行形态:整迭代单工作区(
g-plan2-iter53,两卡均未声明可并行),卡序=卷轴视口 → 改写族清退。
各卡状态
| 卡 | 状态 | T 卡 | 凭据摘要 |
|---|---|---|---|
| 卡①卷轴视口批 | 完成(T0–T4 全收口+golden 扩项冻结) | T0 基线读数在案/T1–T3 实现波提交 c1043902/T4 指针反转 4e87a012/golden 扩项 6394abf7 | 新探针 26 断言全绿+探针族全绿+冒烟 15/0+S13 基线内 7 新增 0+渲染闸全绿(lmap 双图 changed=0.00%) |
| 卡②改写族清退批 | 完成(T0–T5 全收口) | T0 基线读数在案/T1 b5c21e3a/T2 1bd50304/T3+T4 并笔 ed793e8c | 三套件+四套窄测 exit=0+对拍六组逐字节 diff=0+四探针负域全拒+契约 1 三条 grep 全零+40 名注释面清零 |
卡① 实际改动—验收对照表
| 需求点 | 改动(文件:行) | 验收测试(落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|
| R1 浅图整幅居中无裁切 | level_map_screen.gd 三段页承载+level_map_viewport.gd _axis_center_offset 居中分支 |
level_map_viewport_probe.gd:71/74/76〔卷轴批 V1〕 |
探针 | open_choices 真实停点(L1 固定种子直构 runner) |
画布≤窗居中 offset 定位+画布矩形 encloses 于视口 | 绿 |
| R2 停点切换当前节点居中 x=640±2 | level_map_viewport.gd reanchor+screen _viewport_anchor/open_choices 接线 |
level_map_viewport_probe.gd:221〔卷轴批 V2〕 |
探针 | 断点停点重建+真实 open_choices |
当前节点画布投影=视口中线±2 | 绿 |
| R3 拖拽平移 | screen _on_canvas_motion 拖拽态逐帧 pan_by(含激活帧位移) |
level_map_viewport_probe.gd:137〔卷轴批 V3〕 |
探针 | push_drag_at 合成沿走 push_input |
视线位移=拖拽位移(40px 逐位) | 绿 |
| R4 滚轮横滚 | screen _wheel_pan_step 映射(下/右=前进向) |
level_map_viewport_probe.gd:114/116/120〔卷轴批 V4〕 |
探针 | push_wheel_at 合成滚轮沿 |
单档 ±60 逐位+窗内不钉边界 | 绿 |
| R5 clamp 包络与首末列可达 | level_map_viewport.gd _axis_pan_offset/is_clamped_at_edge |
level_map_viewport_probe.gd:88/102/158/160/161/167/168〔卷轴批 V5〕 |
探针 | 超包络拖拽沿两极 | 中线恒在夹紧域+两极 edge=true+首末列中心入屏+入口组包围盒锚点 | 绿 |
| R6 拖拽不触发选路 | screen _on_canvas_click 拖拽抬杆不提交 |
level_map_viewport_probe.gd:200/201/206〔卷轴批 V6〕 |
探针 | 拖拽沿/完整点击沿起止候选上方 | route_chosen 零发射+屏未关;完整点击仍提交=1 |
绿 |
| R7 平滑滚动与减动效瞬切 | level_map_viewport.gd reanchor(smooth) tween UiKit.motion(0.3)+ArmedTimer.motion_still 跳终态 |
level_map_viewport_probe.gd:245/249/258〔卷轴批 V7〕 |
探针 | 可见屏停点切换+UiKit.motion_scale 置位 |
平滑有 tween 中间帧(同向在途)+减动效即达 | 绿 |
| R8 指引件可见性与几何 | level_map_viewport.gd _build_guidance/_sync_guidance |
level_map_viewport_probe.gd:271–287〔卷轴批 V8〕 |
探针 | 深图真实停点+浅图复验 | 渐隐带 70px+chip 240×30 居中可见;浅图隐藏 | 绿 |
| R9 schema 头注指针反转(非行为) | level_gen_params.gd:3-4/:66 头注 | 静态判据:grep「调参表」残留=0、「参数契约节」指向=2;--check-only 零错 |
静态 | — | 全仓无「域并单点=调参表」残留 | 绿 |
| golden 两 Shot 面(2026-11-05 用户裁) | level_map_shot_probe.gd+golden/windows/lmap_entry·lmap_boss+render_gate.sh 对拍段 | 渲染闸「关卡视口 golden 逐像素」段(changed=0.00% 双绿);重采集确定性=0.00% | golden | 窗口化真实渲染+固定种子 | 两 Shot 逐像素 ≤16 差/≤2% | 绿 |
非行为改动行:无(R9 之外全部行为面;.uid 边车随新件入库)。
卡② 实际改动—验收对照表
| # | 需求点 | 改动(文件:行) | 验收测试(落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 结果 |
|---|---|---|---|---|---|---|---|
| R1 | 摘四段不可达改写分支 | damage_controller.gd(原 :297-302/:305-309/:310-314/:316-323/:350-353/:367-372/:623 全摘+spike_ready 键摘) | damage_controller_test.gd(exit=0);roll_multiplier_test.gd(exit=0);round_flow_skill_pool_test.gd(exit=0);dump_battle 六组改前改后逐字节比对 diff=0 |
单元+集成 | BattleOrchestrator.begin_battle() 全链 |
step_row 流逐位=改前基线(L{1,2}×S{42,779401,779501});静态=契约 1 三条 grep 全零+摘后 spike_ready 零残留。观测面局限申报:零现役注册行使分支不可达,禁注入表行取证(卡 §8 申报在案) |
绿 |
| R2 | EFFECT_KINDS 摘 spike | effect_engine.gd:30 | effect_kind_retired_test.gd:89「effect_kind_retired_test/③词表闭面:kind=spike 出域拒绝」 |
单元(负面,独立进程) | ConfigDB.load_tables() → validate_trigger_row |
do.kind=spike 行被拒+error 诊断在案+退出码 1(负面期望码) | 绿 |
| R3 | DO_KEYS 摘 trade_hit/trade_atk | effect_engine.gd:82 | effect_kind_retired_test.gd:92「effect_kind_retired_test/④do 键闭面:trade_hit 出域拒绝」 |
单元(负面,独立进程) | 同上 | 带 trade_hit 键 do 字典被拒+退出码 1 | 绿 |
| R4 | 注释面退役名清零(13 文件) | T3 35 处注释改写(对照卡 3.3 表逐处) | 静态判据:40 名全扫仅剩卡 §5 留底 3 行(treasure_items_test:31/33/35 StubDB 夹具名);宿主套件逐位不变(四套窄测 exit=0) | 静态(闸件扫描) | 宿主套件回归(改写面不进运行期) | 注释面命中 0+套件绿 | 绿 |
| R5 | 减半明细行去退役件名 | reward_grant.gd:226(标签→「挖掘惩罚减半(%d→%d)」+effect_id→nest_halve) | meta_progression_forge_test.gd:694/697/699/700(断言串随动,非空+等值+不含旧词强度不降) |
集成(信号采集) | 锻造锋线满级特效 → begin_battle → mine_hit 减半路径 → step_row | display_name==「挖掘惩罚减半(6→3)」+power 减半数值与发射次数逐字不变+grep nest_counter=0 | 绿 |
| R6 | 空集拒绝 reason 去退役件名 | reward_grant.gd:189(→「中立移除:…」) | 静态判据:grep 爆破工兵包 reward_grant.gd=0;table_structure_guard_test.gd exit=0 |
静态+单元 | 通道校验面(零现役行不可达) | grep 零命中+通道校验绿。观测面局限申报:reason 不可达,禁造行取证 | 绿 |
| R7 | 反弹明细标签去退役件名 | grant_segment.gd:166(标签→「反弹伤害」+归因串→attune_nest_halve;channel=="reflect" 判据与开单参数字典逐字不动) | 静态判据:grep 惊巢反制 game/=0、attune_nest_counter=0;round_flow_skill_pool_test.gd exit=0 |
静态+集成 | mine_hit 订阅施加链(reflect 行族零表行,今天不可达) | grep 零命中+发射面零变化回归。观测面局限申报:禁造行取证 | 绿 |
| R8 | sim 恒 false 匹配删除 | level_autoplay.gd(原 :415 注释+:421 contains(雷区图谱) 条件删,highlight==seal_hit 单判据保留) | 静态判据:grep 雷区图谱 game/=0;sim 驱动链套件绿(四套窄测含 autoplay 消费面 exit=0) | 静态+单元 | autoplay 驱动链(测量面) | grep 零命中+套件绿。观测面局限申报:恒 false 条件不可达 | 绿 |
非行为改动行:T3 注释面 35 处(由 R4 行覆盖);契约 3 约束下 :226/:166 仅标签与归因串文本变动、取值/位序/载荷键逐字未动(R1 对拍 diff=0 为其逐位证据)。
读数义务对账(卡内 T 卡产出)
- 卡①T0:S13 基线无
level_map_screen键(记「无键、按工具默认」);ui_struct_probe PASS 全屏结构断言零红;screen_flow_probe PASS;冒烟 15 项 0 失败。 - 卡①T4 复跑:S13 基线内 7 条、新增 0(
_on_canvas_input重构触发的 max-branches 新违规已拆_on_canvas_motion/_on_canvas_click/_wheel_pan_step归零);ui_struct_probe/screen_flow_probe 复跑绿(探针族全绿内含)。 - 卡②T0:契约 1 三条 grep——
game/data/tables/内 spike/armor_rewrite/discount_shift/trade_hit/trade_atk 全零(对照记录=feats.tres:855 clamp_bonus 现役一行);tree_rules 面零;effect_kinds 面 cell_removal 表面零(仅 schema 在册:treasure_item_table.gd:20/:26,本批不摘通道)。S13 四文件无登记键(damage_controller/effect_engine/reward_grant/level_autoplay 均按工具默认)。改前对拍基线六组落盘(L{1,2}×S{42,779401,779501})。改前断言串=「惊巢反制——危险格挖掘惩罚减半(6→3)」(:693/:698-701 现行文本抄录在案)。 - 卡②T5:改后对拍六组 diff=0;40 名全扫终读数=3 行留底夹具;R5–R8 静态 grep 全零;负域套件 exit=1(期望码)四探针全拒。
- 存量触面 S13 对照:damage_controller(分支数/函数长度随摘除下降,无新增键);effect_engine(常量字面量变短,方法数/成员数不变);reward_grant/level_autoplay(删文本与恒 false 条件)——S13 终读数=基线内 7、新增 0、恶化 0。
实机目检总清单(登记不阻塞)
| 目检项 | 来源卡 | 承载 |
|---|---|---|
| 深度 13+ 图拖拽可达首末列、推进跟随方向感、chip 不碍选路 | 卡① | 窗口化实跑截图已冻结(golden/windows/lmap_entry·lmap_boss);真人试玩复核登记体验验证清单(归批后收尾) |
| 结算明细行减半标签「挖掘惩罚减半(6→3)」一眼可读、无退役件名突兀感 | 卡② | 实现报告登记;真人目检归体验验证清单(归批后收尾) |
实现决定记录(超白名单/超卡片明列面逐条备案)
- 拖拽态成员落屏侧(卡①§11 把
_drag_active/_drag_accum枚举进视口件成员,§6 职责边界却写明视口件「只管裁切/offset/clamp/跟随」、拖拽判定留画布)——取 §6 职责边界优先:拖拽判定状态随输入处理落 screen(_drag_active/_drag_press_pos),视口件成员 6 个(≤8 达标)、公开方法 5 个(≤20 达标)。撤销方式=成员迁视口件+canvas 经方法驱动(纯结构搬移)。 - open_choices 平滑判据=有无当前节点(卡①§6 写「reanchor(false) 首锚」、T2 写「停点切换/回图接 reanchor(true)」,open_choices 同时承载两路径)——合并读法:入口停点(current_node_id<0)即达=首锚,其余停点/兑付回图平滑=跟随。R2/R7 断言均经此路径。
- 提交沿移至抬杆(原提交在按下沿;布局决策 5 阈值区分语义下按下时无法预知是否成拖拽,R6 要求拖拽沿零发射)——完整点击(按下→未超阈值抬杆)提交、拖拽抬杆不提交;ui_input_probe case⑫/⑱ 补 release 沿适配(验收审计 D3 订正:原呈报误写⑰,实际落点两处)(判据语义「图上真实点击提交选路」不变,输入形态更完整)。
- 滚轮步进 60px、渐隐带色 BG_ROOT 不透明端 0.9、chip 底 HP_BAR_BACK/描边 STONE/文字 WARM、缓动 TRANS_CUBIC+EASE_OUT——卡 §12 白名单 4/5/3 授权面内定值。
- 视口件 NOTIFICATION_RESIZED 即席重锚——首开布局晚于 open_choices 锚定(隐藏子树容器排序首可见帧才传播,4.7 行为;实证=探针首跑 y 锚偏 88px),resize 即席
reanchor(false)收敛;同时是窗口尺寸变化的正确行为。 - _fit_canvas 画布尺寸同帧收敛(
canvas.size = _content_size显式置)——视口锚点数学与_layout同源读画布尺寸,容器延迟收敛不等锚点。 - mouse_exited 清拖距跟踪器——按下即武装的跟踪器在丢失 release 沿(alt-tab 等)后残留会把后续 motion 误判为拖拽激活(ui_input_probe case⑰⑧ press-only 实证);非拖拽态离画布即解除。
- 卡②探针①注入 do.kind="spike"(卡 T2 括注 kind=modify_ticket+mode=spike 形态)——括注形态无拒绝通道(
validate_trigger_row无 mode 值域检查,mode 属载荷字段非词表),按断言名「词表闭面:kind=spike 出域拒绝」与 R2 判据绑定面(effect_kinds 出域文案)的机制注入 kind 形态。 - golden 两 Shot 面口径(卡①现状事实写「本批不触渲染闸对拍」、批纪律 iter 4.4+test-conventions §8.2 要求扩项)——呈裁用户,2026-11-05 裁「只处理最初始的和最终的:关卡最开始+关卡 Boss 节点,中间过程不对拍」,按两 Shot 面扩项冻结。
- 卡② T3 与 T4 并笔提交——卡 §10 白名单授权面。
遗留读数义务与发现呈报
- 闸件缺陷呈报(工程批):
tools/gate_platform.sh的gate_run_timeout用mktemp造超时标志文件——mktemp 即建文件,末尾[ -f "$kf" ]在 Windows(Git Bash)恒真→恒返回 124。被各闸「判定锚工件而非退出码」口径掩住(菜单/棋盘 golden 段与本批 lmap 段均工件锚定,不受影响);tools/golden_baseline_refresh.sh的 7 分钟等待症状(guard 子Shellsleep 420未被 kill 短路)同根。修法=改kf="$TMP/..." ; rm -f "$kf"(run_suite 同款,probe_gate.sh 已是正确写法)。本批不代修(闸件改动归工程批)。 - mac 端关卡视口基线冻结义务:
golden/mac/缺 lmap_entry/lmap_boss——渲染闸缺基线记 SKIP 不判红(windows 已锚即盯),mac 冻结归 mac 侧跑golden_baseline_refresh.sh --lmap。 - 效果通道与事件词的零现役普查——已在待办清单在册(卡② §5 去向),本批不扩。
- 卡① level-map.md 同步面:实现未发现 spec 缺口(布局决策 5 行为四条+像素级判据+AC 全部有绿读数承载),零反哺。