docs(闸分域): 判据由路径前缀改文件性质——game/ 内 .md 归文档域
- 合回闸与 run_all_gates.sh 同口径:代码域=game/ 下非 .md 的行为载体; game/ 内 .md 与 game/ 外一切路径=文档域;两类都有仍跑全量档 - 回执对齐(covers_tip)与 dirty_game 同步改只看代码面 - 修 git diff 默认 quotepath 把中文路径写成转义串、后缀判 .md 必失效的缺陷 - 同步 AGENTS/process-conventions/architecture/roadmap/tests README 与四份技能 - 规则评估样例:c25daa30(旧判 full、新判 docs);本批自身(docs)
This commit is contained in:
1 parent
95a9df272f
commit
57b0c3a59e
7 files changed
+23
-36
No files matched your search
+11
-11
@@ -7,19 +7,19 @@
|
||||
# .zcode/hooks/worktree-guard.sh 在主工作区 git merge 时校验本回执,缺或红即拦截。
|
||||
#
|
||||
# 本脚本是合回前的终局动作:跑之前先冻结(代码与断言不再改)并把 master 并入本分支;每批只跑
|
||||
# 一次。回执必须覆盖住分支尖的 game/ 面——闸后再改 game/ 一点,回执即作废须重跑;跑闸时若
|
||||
# game/ 还带着未提交改动,回执会标 dirty_game,合回闸拒绝采信。
|
||||
# 一次。回执必须覆盖住分支尖的代码面(game/ 下非 .md 的行为载体)——闸后再改一个代码面文件,
|
||||
# 回执即作废须重跑;跑闸时若代码面还带着未提交改动,回执会标 dirty_game,合回闸拒绝采信。
|
||||
#
|
||||
# 用法:tools/run_all_gates.sh [--code|--docs|--quick]
|
||||
# --code 只跑代码域闸(00 冒烟测试/01 系统测试/02 单元与集成测试/03 探针 --click/
|
||||
# 04 探针 --full/05 渲染闸/09 静态扫描/11 回放确定性对拍+10 熵增闸)
|
||||
# ——本批改动触及 game/ 时用(游戏工程的唯一代码验收域)。
|
||||
# ——本批改动含 game/ 下非 .md 的行为载体(代码/测试脚本/探针/场景/数据表/素材)时用。
|
||||
# --docs 只跑文档域闸(06 gdd_lint/07 doc_link/08 doc_term/08c 流水线闸/08d 引用可核
|
||||
# +10 熵增闸)
|
||||
# ——本批改动不触及 game/ 时用:design/、根规则文件、tools/ 工具脚本、.zcode/ 配置等
|
||||
# 一切非 game 改动的本域验收。
|
||||
# ——本批改动只有文档件时用:game/ 内的 .md(README、生成清单)、design/、根规则文件、
|
||||
# tools/ 工具脚本、.zcode/ 配置等一切非代码面改动。
|
||||
# --quick 全量档的中段自检形态:跳过渲染闸(窗口化,需开显示器)与静态扫描;完成出库禁用。
|
||||
# 不带参数 = 全量档(两域全跑),触发条件=同批混触 game/ 与文档面。闸件(tools/ 下机检脚本
|
||||
# 不带参数 = 全量档(两域全跑),触发条件=同批既有代码面改动又有文档件改动。闸件(tools/ 下机检脚本
|
||||
# 与闸壳)自身的改动不占合回全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;
|
||||
# 闸真崩溃时合回闸 fail-closed(跑不出回执即拦),不以全量为兜底。
|
||||
# **域划分只在本脚本里定义一处**——文档只写「按改动域跑本脚本」,禁另列闸清单(清单散落多处
|
||||
@@ -58,12 +58,12 @@ done
|
||||
# 与基线比必判「红项清单变化」假红)、末尾汇总自身崩掉打不出结论。
|
||||
export PYTHONIOENCODING=utf-8
|
||||
|
||||
# game/ 面是否带着未提交改动(只算已跟踪文件——闸件自身产物都落在 gitignore 面)。
|
||||
# 脏树跑出来的回执记的是 HEAD,验的却是别的字节,合回闸据此拒收。
|
||||
# 代码面(game/ 下非 .md 的行为载体)是否带着未提交改动(只算已跟踪文件——闸件自身产物都落在
|
||||
# gitignore 面)。脏树跑出来的回执记的是 HEAD,验的却是别的字节,合回闸据此拒收。
|
||||
DIRTY_GAME=0
|
||||
if [ -n "$(git -C "$REPO" status --porcelain -uno -- game/ 2>/dev/null)" ]; then
|
||||
if [ -n "$(git -C "$REPO" -c core.quotepath=false diff HEAD --name-only -- game/ 2>/dev/null | grep -viE '\.md$')" ]; then
|
||||
DIRTY_GAME=1
|
||||
echo "[gates] 警告:game/ 有未提交改动——本次回执将标 dirty_game,不能用于合回(先提交再跑)。"
|
||||
echo "[gates] 警告:代码面(game/ 下非 .md)有未提交改动——本次回执将标 dirty_game,不能用于合回(先提交再跑)。"
|
||||
fi
|
||||
|
||||
# 回执与日志是中间产物(不入库),但 .gitignore 本身必须入库——漏了就等于把它们纳入版本管理。
|
||||
@@ -378,7 +378,7 @@ stock = [n for n, e in zip(names, exits) if e not in ("0", "SKIP")]
|
||||
if stock:
|
||||
print("【存量红·对基线零新增】" + "、".join(stock))
|
||||
if dirty_game == "1":
|
||||
print("【回执不可用于合回】跑闸时 game/ 有未提交改动——先提交到分支、再重跑这一次。")
|
||||
print("【回执不可用于合回】跑闸时代码面(game/ 下非 .md)有未提交改动——先提交到分支、再重跑这一次。")
|
||||
if all_green:
|
||||
print("【验收通过】闸况与基线一致,无新增红。")
|
||||
sys.exit(0)
|
||||
|
||||
Reference in new issue
Block a user