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:
1 parent
0da19a5b09
commit
b7d1b56ae4
4 files changed
+22
-15
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user