- 新建 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
24 lines
1.5 KiB
Bash
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
|