合并(迭代56追绿三·run136红修复+黄金图自愈): ①能力审计红——卡1新建_assert_fx_chain漏挂判据出处注记→补挂函数体内首行(锚HUD框架.md:272,机检扫描区间自函数行起); ②静态扫描S9红——卡2新增board_view.gd:585显式非参数化Dictionary注解(R1)→改:=推断形态(规约§76合法面;参数化注解实测拒收函数返回裸Dictionary·Variant按Nil校验不可用); ③渲染闸mac棋盘三件黄金图缺基准——用户裁补采自动化:新增CI采集步(runner会话渲染→提交回master→下一轮拉取生效,幂等护栏三道); 读数: 能力审计strict绿455函数红项0+类型闸归零+前置检查绿(冒烟+单元4分片)+系统测试76项0失败三闸全过; 合回前置检查读数见pre-merge钩子; post-merge钩子推送触发远端CI复验
ci / gates (push) Successful in 9m19s

This commit is contained in:
DKChan committed 2026-11-08 06:36:18 +08:00
commit 1bf813dc74
4 files changed
+53 -1

No files matched your search

+8
View File
@@ -48,6 +48,14 @@ jobs:
rm -rf game/.godot/imported
/usr/local/bin/godot --headless --path game --editor --quit
- name: 棋盘黄金图自愈补采(full 批——缺基准时 runner 会话渲染→提交回 master→下一轮拉取生效)
if: steps.route.outputs.mode == 'full'
env:
GODOT_BIN: /usr/local/bin/godot
run: |
cd "$GITHUB_WORKSPACE/repo"
bash tools/ci/golden_selfheal.sh
- name: 跑闸
if: steps.route.outputs.mode != 'skip'
env:
+1 -1
View File
@@ -582,7 +582,7 @@ func _paint_cell_ink(c: Vector2i, u: Node2D, revealed: bool, seal: bool) -> Colo
# 封印受理即揭示:身份字形按板事实当场可见(cell_identity 单点——不用等轮末判定;
# 数字遮蔽不适用——遮蔽打脸受理即揭示)。
bg = COL_FLOOR
var ident: Dictionary = _board.cell_identity(c)
var ident := _board.cell_identity(c) # 推断形态(规约§76 合法面)——参数化注解拒收函数返回的裸 Dictionary
if String(ident.get("kind", "")) == "mine":
glyph = "危"
digit_col = UiKit.RED_MINE
@@ -188,6 +188,7 @@ class FakeBoardZone extends BoardZoneView:
func _assert_fx_chain(main: Node, rows_seen: Array) -> void:
# 判据出处: design/gdd/systems/表现与支撑/HUD框架.md:272 (结算逐行实时滚出——行→FX 排播链计数逐位一致)
var rp = RowPacerScript.new()
var fstage := FakeStage.new(null, root.get_node("/root/ConfigDB").presentation.battle_layout)
var ffx := FakeFx.new()
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# 棋盘黄金图 CI 自愈补采(2026-11-08 用户裁:补采自动化——渲染能力在 runner 会话里,人手不做二进制搬运)。
# 背景:golden 基线按平台分目录(render_gate.sh:37 gate_platform_id),改版批只能重制本平台侧;
# 他平台基线缺失=渲染闸红(基准未建),而补采必须在他平台真实渲染——只有 runner 会话做得到。
# 本件挂 CI full 批(ci.yml 导入步之后、跑闸步之前):缺棋盘三件基线时跑 golden_baseline_refresh
# 棋盘模式,产物提交回 master 并推送,下一轮 full 批拉取后渲染闸绿。
# 护栏:
# - 只认 CI 跑批环境(GITHUB_WORKSPACE 必在)——本地误跑立即拒(防人手把本平台基线提交出去)。
# - 三件基线齐盘即零动作退出(幂等——不会每轮提交,无循环)。
# - 只 add 三件 PNG;刷新红/落盘缺/提交败/push 败一律置红不静默,下一轮 full 批自动重试。
set -u
: "${GITHUB_WORKSPACE:?本件只属 CI 跑批环境(GITHUB_WORKSPACE 必在)——人手补采走 tools/golden_baseline_refresh.sh}"
REPO="$(cd "$(dirname "$0")/../.." && pwd)"
cd "$REPO"
. "$REPO/tools/gate_platform.sh"
PLAT="$(gate_platform_id)"
GOLDEN_DIR="game/tests/golden/$PLAT"
BOARD_FILES="board_L1_dungeon.png board_L2_underdark.png board_L3_deep_underdark.png"
_miss=0
for b in $BOARD_FILES; do
[ -s "$GOLDEN_DIR/$b" ] || { _miss=1; echo "[selfheal] 缺基准: $GOLDEN_DIR/$b"; }
done
if [ "$_miss" -eq 0 ]; then
echo "[selfheal] $PLAT 棋盘三件基线在库——零动作(幂等护栏)"
exit 0
fi
GODOT_BIN="${GODOT_BIN:?GODOT_BIN 必注(runner 自举件安装位)}" \
bash "$REPO/tools/golden_baseline_refresh.sh" game || {
echo "[selfheal] FAIL — 补采刷新脚本红(探针自检/裁剪失败见上)"; exit 1
}
for b in $BOARD_FILES; do
[ -s "$GOLDEN_DIR/$b" ] || { echo "[selfheal] FAIL — 刷新后仍缺: $b"; exit 1; }
done
for b in $BOARD_FILES; do
git add "$GOLDEN_DIR/$b"
done
git -c user.name="gitea-actions" -c user.email="actions@noreply.git.kuaimeo.com" \
commit -m "黄金图自愈补采($PLAT·棋盘三件): 渲染闸缺基准——golden_baseline_refresh棋盘模式在runner会话渲染产出,本提交由CI采集步自动落库,下一轮full批拉取后渲染闸绿;触发源提交见父提交" \
|| { echo "[selfheal] FAIL — git commit 失败(无差异或工作区异常)"; exit 1; }
git push origin HEAD:master || { echo "[selfheal] FAIL — push 失败(令牌权限/分支保护;修复前每轮 full 批会重试)"; exit 1; }
echo "[selfheal] 完成 — 基线已落库,下一轮 CI 拉取生效"