Files
gplan-2/.zcode/hooks/stop-active-md-guard.sh
T
DKChan 4f0603305e docs: 待拍板收编批建账 + 免拍板三补丁 + AP 压速批文档面值同步
- 新建 design/gdd/06-待拍板清单.md:全项目待拍板唯一登记处(四循环 × 系统小节四列表,70 条收编、跨文档重复 5 组合并);17 份系统文档「待拍板」节缩为一句话指路存根;02-系统清单补 06 行;doc-conventions v6 新增「待拍板单点登记」条款
- 免拍板三补丁(06 清单第一类,零拍板零代码):战斗表现 v0.2 新增一屏样张验收标准(四件锁定物过判口径,判据落到 art-bible/battle.md 已冻结口径);战斗结算 v0.9 新增呈现只读面节(presentation_snapshot / is_battle_live / query_reward_identity / settlement_snapshot / battle_finished 五件对外契约登记);音频 v0.2 新增临时音效覆盖清单(必覆盖五挂点 / 选配二 / 不覆盖二 + 切片验收口径),顺手修明细行型 15→10 陈旧两处;06 清单三条改「已解决(2026-09-16)」留痕
- 行动经济 v0.2:AP 压速批文档面值同步 8→6(补上一提交代码批漏改的正文两处与调参表两行)
- 会话收口自动化:.zcode/ 钩子(SessionStart 快照 + Stop 守卫 active.md 登记,四场景手工测试通过)
- active.md 条目 54/55
2026-09-16 05:16:31 +08:00

24 lines
1.5 KiB
Bash

#!/usr/bin/env bash
# 会话结束收口检查:工作区相对会话开始有改动(status 行或 diff 内容任一变化)、
# 且 active.md 本会话未更新时,以 exit 2 阻止停止并经 stderr 注入登记提醒(每会话至多一次)
proj="${ZCODE_PROJECT_DIR:-$PWD}"
sid="${CLAUDE_SESSION_ID:-default}"
state="/tmp/zcode-active-md-guard"
snap="$state/$sid.snap"
active_md="$proj/production/session-state/active.md"
[ -f "$snap" ] || exit 0
[ -f "$state/$sid.reminded" ] && exit 0
start_status=$(sed -n 2p "$snap")
start_diff=$(sed -n 3p "$snap")
start_mtime=$(sed -n 4p "$snap")
now_status=$(git -C "$proj" status --porcelain 2>/dev/null | sort | sha1sum | cut -d' ' -f1)
now_diff=$(git -C "$proj" diff HEAD 2>/dev/null | sha1sum | cut -d' ' -f1)
[ "$now_status" = "$start_status" ] && [ "$now_diff" = "$start_diff" ] && exit 0
now_mtime=$(stat -c %Y "$active_md" 2>/dev/null || echo 0)
[ "$now_mtime" -gt "$start_mtime" ] && exit 0
touch "$state/$sid.reminded"
cat >&2 <<'MSG'
[会话收口检查] 本会话产生了工作区改动,但 production/session-state/active.md 未在本会话内更新。若本会话包含实质工作(代码/文档/数值/设计拍板/缺陷修复),请先在 active.md 末尾追加一条编号批次条目(做了什么·拍板了什么·验证结果·遗留与下一步),再行结束;若本次确无可登记事项(纯问答、只读核查),忽略本提醒直接结束。另:待拍板事项登记 design/gdd/06-待拍板清单.md(裁决后改状态列留痕),不要写进 active.md 条目表。
MSG
exit 2