chore(session): 收口杂项批——Stop 守卫强判据升级(active.md 登记判据 mtime→内容哈希,touch/意外改时间不再蒙混;三态实测 0/2/0)+ registry scope_event_binding armor_roll 重复条目去重 + CLAUDE.md 标题待拍板项核实已解决(memory 过期清账)+ active.md 快照节/台账 67-68(场景一三拍板落地 0da19a5 收口、场景四另会话在飞、两份美术清单合并待拍板)

This commit is contained in:
DKChan committed 2026-09-18 05:50:50 +08:00
1 parent 0da19a5b09
commit b7d1b56ae4
4 files changed
+22 -15

No files matched your search

+3 -2
View File
@@ -1,5 +1,6 @@
#!/usr/bin/env bash
# 会话开始:快照工作区状态(status 哈希 + diff 内容哈希)与 active.md 修改时间,供 Stop 收口检查对比
# 会话开始:快照工作区状态(status 哈希 + diff 内容哈希)与 active.md 内容哈希,供 Stop 收口检查对比
# 2026-09-18 强判据升级:active.md 判据由 mtime 改内容哈希——touch/意外改时间不再蒙混,内容真变才算登记
proj="${ZCODE_PROJECT_DIR:-$PWD}"
sid="${CLAUDE_SESSION_ID:-default}"
state="/tmp/zcode-active-md-guard"
@@ -8,7 +9,7 @@ mkdir -p "$state"
date +%s
git -C "$proj" status --porcelain 2>/dev/null | sort | sha1sum | cut -d' ' -f1
git -C "$proj" diff HEAD 2>/dev/null | sha1sum | cut -d' ' -f1
stat -c %Y "$proj/production/session-state/active.md" 2>/dev/null || echo 0
sha1sum "$proj/production/session-state/active.md" 2>/dev/null | cut -d' ' -f1 || echo 0
} > "$state/$sid.snap"
rm -f "$state/$sid.reminded"
exit 0
+7 -5
View File
@@ -1,6 +1,8 @@
#!/usr/bin/env bash
# 会话结束收口检查:工作区相对会话开始有改动(status 行或 diff 内容任一变化)、
# 且 active.md 本会话未更新时,以 exit 2 阻止停止并经 stderr 注入登记提醒(每会话至多一次)
# 且 active.md 内容哈希未变(本会话内未真更新——mtime 不可信,touch 也算未登记)时,
# 以 exit 2 阻止停止并经 stderr 注入登记提醒(每会话至多一次)
# 2026-09-18 强判据升级:active.md 由 mtime 比对改内容哈希比对
proj="${ZCODE_PROJECT_DIR:-$PWD}"
sid="${CLAUDE_SESSION_ID:-default}"
state="/tmp/zcode-active-md-guard"
@@ -10,14 +12,14 @@ active_md="$proj/production/session-state/active.md"
[ -f "$state/$sid.reminded" ] && exit 0
start_status=$(sed -n 2p "$snap")
start_diff=$(sed -n 3p "$snap")
start_mtime=$(sed -n 4p "$snap")
start_content=$(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
now_content=$(sha1sum "$active_md" 2>/dev/null | cut -d' ' -f1 || echo 0)
[ "$now_content" = "$start_content" ] || exit 0
touch "$state/$sid.reminded"
cat >&2 <<'MSG'
[会话收口检查] 本会话产生了工作区改动,但 production/session-state/active.md 未在本会话内更新。若本会话包含实质工作(代码/文档/数值/设计拍板/缺陷修复),请:① 先更新 active.md 顶部「当前状态快照」节(在飞/可做/阻塞/锚点/下一步——先改快照再记账);② 再在 active.md 末尾追加一条编号批次条目(做了什么·拍板了什么·验证结果·遗留与下一步)。完成后结束;若本次确无可登记事项(纯问答、只读核查),忽略本提醒直接结束。另:待办事项登记 design/gdd/06-待办清单.md(裁决后改状态列留痕),不要写进 active.md 条目表。
[会话收口检查] 本会话产生了工作区改动,但 production/session-state/active.md 内容未变(本会话内未真更新)。若本会话包含实质工作(代码/文档/数值/设计拍板/缺陷修复),请:① 先更新 active.md 顶部「当前状态快照」节(在飞/可做/阻塞/锚点/下一步——先改快照再记账);② 再在 active.md 末尾追加一条编号批次条目(做了什么·拍板了什么·验证结果·遗留与下一步)。完成后结束;若本次确无可登记事项(纯问答、只读核查),忽略本提醒直接结束。另:待办事项登记 design/gdd/06-待办清单.md(裁决后改状态列留痕),不要写进 active.md 条目表。
MSG
exit 2