From 79733fa57f39fea67739da3ded977e7e7659cc46 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sun, 25 Oct 2026 20:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B(S8=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E7=A6=81await=E9=97=B8):=20B1=E5=9F=9F=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=9B=86await=E9=9B=B6=E5=91=BD=E4=B8=AD=E8=90=BD=20static=5Fs?= =?UTF-8?q?can(S13=E5=90=8E=E7=8B=AC=E7=AB=8B=E6=AE=B5,=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=9B=86=E7=BC=BA=E4=BD=8D=E8=87=AA=E6=A3=80),=E7=9B=98?= =?UTF-8?q?=E9=9D=A2=E9=9B=B6=E5=AD=98=E9=87=8F,=E6=92=A4=E9=94=80?= =?UTF-8?q?=E8=AF=81=E6=98=8E=E7=BA=A2=E7=BB=BF=E9=97=AD=E7=8E=AF,--code?= =?UTF-8?q?=20=E5=9F=9F=E9=97=B8=E5=85=A8=E7=BB=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/tests/static_scan.sh | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/game/tests/static_scan.sh b/game/tests/static_scan.sh index 0582fd30..4074a72a 100644 --- a/game/tests/static_scan.sh +++ b/game/tests/static_scan.sh @@ -91,7 +91,6 @@ fi # TODO(正式工程落地后精化为扫描配置并升格为硬失败): # S6 core↔core 信号连接只许方法 Callable(禁 lambda 捕获 self);发射者禁反向引用 # S7 B2/B3/B4 API 符号命中文件 ⊆ B1 文件集(编排唯一性) -# S8 结算路径 await 零命中(B1 结算/编排文件集) # ── S11 — 代码注释禁用词 ── # 禁「板级」「门票」「正主」「落籍」「完美排雷」等退役词进注释面(完整词表见术语表解析) @@ -253,4 +252,39 @@ else fail=1 fi +# ── S8 — 结算路径 await 零命中(B1 结算/编排文件集)── +# 规则(architecture.md「静态扫描域 S1–S8 承接清单」S8 行 / D2 AC-14 口径):结算本体是 +# 可回放纯逻辑步骤流(同种子同输入逐位复现),await 会打断确定性——「模块归属」B1 行已写明 +# 「禁 await——切片 88 冒烟实证」。本闸为防回归防线(2026-10-24 人工 grep 盘面干净)。 +# 扫描面:B1 域文件集(与 architecture.md「模块归属」B1 行同口径)=battle_orchestrator.gd +# + settlement/ 五段段类 + damage_controller.gd,共 7 文件,显式清单见 S8_FILES。 +# 执行侧字面值豁免:脚本必须带字面值才能工作;文件集与架构文档冲突时以 B1 域文件集为准。 +# 判据:文件集内出现 await 关键字即红(词边界 \bawait\b,任何形态——await 信号/协程/ +# get_tree());排除注释行(行首 #/##)与字符串字面量(双引号包裹段内的 await 非代码), +# 口径仿 S1/S2 的 grep 排除手法。 +# 自检:清单内文件缺位(路径写错/被改名)即判红——防扫面为空静默绿。 +S8_FILES="game/core/battle_orchestrator.gd game/core/settlement/aura_segment.gd game/core/settlement/combat_segment.gd game/core/settlement/decay_segment.gd game/core/settlement/grant_segment.gd game/core/settlement/verdict_segment.gd game/core/damage_controller.gd" +S8_MISS=0 +for f in $S8_FILES; do + if [ ! -f "$f" ]; then + echo "[static_scan] S8 FAIL: 文件集缺位——$f 不存在(路径写错/被改名导致的静默空转)" + S8_MISS=1 + fi +done +if [ "$S8_MISS" -eq 1 ]; then + fail=1 +else + S8_HITS=$(grep -rnE '\bawait\b' $S8_FILES 2>/dev/null \ + | grep -vE '^[^:]+:[0-9]+:[[:space:]]*#' \ + | grep -vE '"[^"]*\bawait\b[^"]*"' \ + | wc -l) + if [ "$S8_HITS" -gt 0 ]; then + echo "[static_scan] S8 FAIL: 结算路径 await 命中 $S8_HITS 处(同种子逐位回放不可被 await 打断)" + grep -rnE '\bawait\b' $S8_FILES 2>/dev/null | grep -vE '^[^:]+:[0-9]+:[[:space:]]*#' | grep -vE '"[^"]*\bawait\b[^"]*"' + fail=1 + else + echo "[static_scan] S8 ok(扫描面 B1 文件集 7 个 .gd,await 零命中)" + fi +fi + exit $fail