工程(合回闸关联档批·收口修正): 红项指纹归一化超时挂死行的 pid——fingerprint 只取 FAIL 关键行哈希,注释自陈「忽略时序/耗时噪声」,但超时行内嵌 pid=NNNN 逐轮变化使存量红指纹无法稳定登记(首跑实测:02 的 forge_workbench 超时行带 pid 使指纹不可复现);归一化 pid=N 后再入哈希,判定口径(FAIL 行集合)不变。首跑另测得:02 现红 9 套件+09 红项清单变化均系 master 在册存量债(待办清单「迭代 41 测试债修复」条 2026-10-29 用户裁带红合并承接:config_db 解析错/ooob 退出码 2/table_structure_guard/treasure_items/standee_fx/forge_workbench 超时/tree_requires_level/save_manager_domain/theme_projection+S9 24 处+S10 4 处+S11 adventure_table:55),非本批新增——基线滞后的成因=迭代 41 特许直接合回未重跑代码域闸,处置见下一笔基线记账提交
This commit is contained in:
1 parent
9f94c9e100
commit
117a37e2a5
1 file changed
+4
-3
@@ -439,7 +439,7 @@ fi
|
|||||||
|
|
||||||
# ── 与存量基线比对 ──
|
# ── 与存量基线比对 ──
|
||||||
"$PY" - "$BASELINE" "$RECEIPT" "$QUICK" "$DOMAIN" "$REPO" "$DIRTY_GAME" "$SCOPE" "$ONLY_TERMS" "${NAMES[@]}" -- "${EXITS[@]}" -- "${LOGS[@]}" <<'PYEOF'
|
"$PY" - "$BASELINE" "$RECEIPT" "$QUICK" "$DOMAIN" "$REPO" "$DIRTY_GAME" "$SCOPE" "$ONLY_TERMS" "${NAMES[@]}" -- "${EXITS[@]}" -- "${LOGS[@]}" <<'PYEOF'
|
||||||
import hashlib, json, os, subprocess, sys
|
import hashlib, json, os, re, subprocess, sys
|
||||||
|
|
||||||
baseline_path, receipt_path, quick, domain, repo, dirty_game, scope, only_terms = sys.argv[1:9]
|
baseline_path, receipt_path, quick, domain, repo, dirty_game, scope, only_terms = sys.argv[1:9]
|
||||||
rest = sys.argv[9:]
|
rest = sys.argv[9:]
|
||||||
@@ -468,7 +468,8 @@ def tree_hash():
|
|||||||
return "unknown"
|
return "unknown"
|
||||||
|
|
||||||
def fingerprint(exit_code, log):
|
def fingerprint(exit_code, log):
|
||||||
"""红项指纹:只取 exit!=0 时的 FAIL 关键行集合,忽略时序/耗时噪声。
|
"""红项指纹:只取 exit!=0 时的 FAIL 关键行集合,忽略时序/耗时噪声
|
||||||
|
(超时挂死行的 pid=NNN 随跑批变化,归一化为 pid=N 后再入哈希——否则存量红指纹逐轮漂移)。
|
||||||
绿闸一律记 'green'——绿闸日志里的「零红」「全绿」等字样不是红项,采进来只会造噪声。"""
|
绿闸一律记 'green'——绿闸日志里的「零红」「全绿」等字样不是红项,采进来只会造噪声。"""
|
||||||
# SKIP / NEED-APPROVAL 都属「本闸未实跑」状态,指纹一律记 skip——
|
# SKIP / NEED-APPROVAL 都属「本闸未实跑」状态,指纹一律记 skip——
|
||||||
# 两者互变不是闸况变化(同是没跑),只有「未跑 → 跑出结果」或「绿 → 红」才算变化。
|
# 两者互变不是闸况变化(同是没跑),只有「未跑 → 跑出结果」或「绿 → 红」才算变化。
|
||||||
@@ -485,7 +486,7 @@ def fingerprint(exit_code, log):
|
|||||||
s = line.strip()
|
s = line.strip()
|
||||||
if not s or "FAIL" not in s:
|
if not s or "FAIL" not in s:
|
||||||
continue
|
continue
|
||||||
keys.append(s[:160])
|
keys.append(re.sub(r"pid=\d+", "pid=N", s)[:160])
|
||||||
if not keys:
|
if not keys:
|
||||||
return "red-nokeys"
|
return "red-nokeys"
|
||||||
return hashlib.sha1("\n".join(sorted(set(keys))).encode("utf-8")).hexdigest()[:12]
|
return hashlib.sha1("\n".join(sorted(set(keys))).encode("utf-8")).hexdigest()[:12]
|
||||||
|
|||||||
Reference in new issue
Block a user