ui-struct-probe mini-loop T0-T6 全落(探针全屏零红+负向验证红+probe_gate 注册段全绿+冒烟772/0+run_all 14/15基线红+doc三闸零新增)——①M2双列叠放修复:ui_assembler.gd 右列挂回 HBox 第二列(原 pad.add_child(right) 误挂 MarginContainer 与左列同矩形叠放=实机目检抓到的根因;start_box/start_right 命名锚)②按钮宽度纪律:ui_kit.button(text,min_w=216) 全站最小宽度基准+SIZE_FILL(VBox 列内等宽拉满/HBox 行内不抢余宽——EXPAND_FILL 撑爆营地底条 1616px 实证教训注释在案);行板/角标/图标钮豁免9处(camp 5+shop 2+ap_bar 2+调试角标/诊断转储 2)③新增 ui_struct_probe(全 UI 屏结构断言:按钮互压/同容器等宽/出屏/零尺寸/标题屏双列五族;菜单簇真驱动+冒险簇真流+兑付屏 open 面合成喂入;ScrollContainer 内容豁免;modal 屏 queue_sort 手法坑在册)④probe_gate.sh 注册默认必跑段⑤07 改排:§⑪改排注记+§⑮分工注记+新增§⑯复验项⑥出口报告(代裁追认单 P1-P4+六轮 red-green 实录)=design/qa/ui-struct-probe-exit-report-2026-10-05.md

This commit is contained in:
DKChan committed 2026-10-05 18:00:32 +08:00
1 parent 8944dca0d3
commit d77a245bcc
12 files changed
+382 -18

No files matched your search

+14 -3
View File
@@ -2,9 +2,10 @@
# 轻闸探针正主(2026-10-02 挂死灾害批落籍)——headless 安全段固化,禁再手拼同款 Godot 命令。
# 三闸:①每段 timeout 守卫(挂死=FAIL 不静默)②段前预清+段后清本 game 目录孤儿 Godot
# (按命令行精确匹配本 game 路径,不误杀其他 worktree 会话的合法进程)③末尾残留清点=批末闸(必须 0)。
# 段:ui_input_probe=默认必跑;--click=加跑 ui_click_probe 行为走查(自退出+退出码闸;超时多半=
# 探针未适配新停点层,归 probe适配批);shot_probe 禁入本闸——必须窗口化运行(headless 无渲染面,
# 探针内已有 fail-fast 护栏),归真人目检。
# 段:ui_input_probe=默认必跑;ui_struct_probe=默认必跑(ui-struct-probe mini-loop 2026-10-05 注册——
# 全 UI 屏结构断言:按钮互压/等宽/出屏/零尺寸/标题屏双列);--click=加跑 ui_click_probe 行为走查
# (自退出+退出码闸;超时多半=探针未适配新停点层,归 probe适配批);shot_probe 禁入本闸——
# 必须窗口化运行(headless 无渲染面,探针内已有 fail-fast 护栏),归真人目检。
# 用法: tools/probe_gate.sh [game目录] [--click] 缺省 game 目录=脚本所在仓库的 game/(worktree 内自动指向该 worktree)
# 依赖: Git Bash(coreutils timeout/taskkill) + PowerShell;Godot 路径可用环境变量 GODOT_BIN 覆盖。
set -u
@@ -51,6 +52,16 @@ elif ! grep -q "PASS" "$TMP/uip.log"; then
echo "[probe_gate] FAIL — ui_input_probe 未见 PASS(exit=$st)"; _rc=1
fi
echo "======== ui_struct_probe ========"
timeout 120 "$G" --headless --path "$GAME_WIN" res://smoke/ui_struct_probe.tscn >"$TMP/stp.log" 2>&1
st=$?; kill_orphans
grep -E "PASS|FAIL" "$TMP/stp.log" | head -12
if [ "$st" -eq 124 ] || [ "$st" -eq 137 ]; then
echo "[probe_gate] FAIL — ui_struct_probe 超时挂死(exit=$st),孤儿已清"; _rc=1
elif ! grep -q "PASS" "$TMP/stp.log"; then
echo "[probe_gate] FAIL — ui_struct_probe 未见 PASS(exit=$st)"; _rc=1
fi
if [ "$WITH_CLICK" -eq 1 ]; then
echo "======== ui_click_probe 行为走查 ========"
timeout 240 "$G" --headless --path "$GAME_WIN" res://smoke/ui_click_probe.tscn >"$TMP/clk.log" 2>&1