修复(CI红·迭代56追绿二): 系统测试38行脚本错误根因=卡1退役row_pacer.log_view句柄但测试宿主句柄字典未随代——_face_snapshot:340 rp.log_view每阶段断言点炸(19阶段),字典求值中断致_stage_faces:355对残缺快照取bonus_meta再炸且该函数剩余存活面断言被静默跳过; Mac SSH复现+Windows本地同红复现双源确证(godot退出码实为0进程无崩溃,红的是脚本错误扫描闸——此前Mac退出段崩溃假设作废;Windows退出0系过时证据,迭代56代码本地从未实跑系统测试); 修复: rp_log句柄与存活键随代摘除(换代同生死)——19个阶段断言面复活,摘要57→76项(+19与死亡触发点数严丝合缝); 随批闸机gate()失败回显过滤器补「^ - 」清单行+日志原文尾部12行(run135实据:run_*包装器失败原因bullet整组被吞,红因滞留runner侧不可诊断); 读数: 系统测试76项0失败+零脚本错误+exit0三闸全过(Windows本地),闸壳bash -n过,过滤面功能抽检过

This commit is contained in:
DKChan committed 2026-11-08 05:34:10 +08:00
1 parent 2fac0c8dce
commit d034970c64
2 files changed
+8 -4

No files matched your search

+2 -2
View File
@@ -337,7 +337,7 @@ func _face_snapshot(main: Node) -> Dictionary:
"mf_inter": mf.inter_visible_get.call(),
"mf_settlement": mf.settlement_get.call(),
"mf_rows_empty": mf.rows_empty_get.call(),
"rp_log": rp.log_view, "rp_stage": rp.stage, "rp_board_zone": rp.board_zone,
"rp_stage": rp.stage, "rp_board_zone": rp.board_zone,
"rp_fx": rp.settlement_fx, "rp_board": rp.board_view,
"rp_refresh": rp.refresh_request, "rp_pump": rp.pump_ended,
"rs_adventure": main.run_scope.adventure, "rs_runner": main.run_scope.runner,
@@ -351,7 +351,7 @@ func _stage_faces(main: Node, tag: String, adv: String, run: String, set: String
# 判据出处: design/engineering/test-conventions.md:56 (判定上报通道——验证函数组)
var snap := _face_snapshot(main)
var bad := ""
for k in ["bonus_meta", "bonus_save", "camp_meta", "camp_save", "rp_log", "rp_stage", "rp_board_zone", "rp_fx", "rp_board"]:
for k in ["bonus_meta", "bonus_save", "camp_meta", "camp_save", "rp_stage", "rp_board_zone", "rp_fx", "rp_board"]:
if not is_instance_valid(snap[k]):
bad += " %s=失效" % k
for k in ["rp_refresh", "rp_pump"]:
+6 -2
View File
@@ -335,9 +335,13 @@ gate() { # gate <名称> <日志名> <命令...>
"$@" >"$STAMP_DIR/$log" 2>&1
local rc=$?
# 失败时把关键行回显到终端(红必须看得见——明细行形态 [Rx]/[Sxx]/违规/存量 同回显,
# 远端 runner 只回传终端日志,折叠过窄=红因滞留 runner 侧不可诊断)
# 远端 runner 只回传终端日志,折叠过窄=红因滞留 runner 侧不可诊断)。
# run_* 包装器的失败原因清单行(「 - 退出码 = …」「 - 脚本错误标记命中…」)不含下列
# 关键字,会整组被吞——清单行一并入过滤面,另附日志原文尾部兜底。
if [ $rc -ne 0 ]; then
grep -E "FAIL|红|Error|error|违规|存量|^\[|\] FAIL" "$STAMP_DIR/$log" | tail -60 | sed 's/^/ | /'
grep -E "FAIL|红|Error|error|违规|存量|^\[|^ - |\] FAIL" "$STAMP_DIR/$log" | tail -60 | sed 's/^/ | /'
echo " | ── 日志原文尾部 $STAMP_DIR/$log ──"
tail -12 "$STAMP_DIR/$log" | sed 's/^/ | /'
fi
NAMES+=("$name"); EXITS+=("$rc"); LOGS+=("$log")
return 0