Files
ISEP/docs
Leo 7b51db3d0b feat: 收件端核對——A 的結果寫進 B 的票會被擋(inkstone/ISEP#132)
派工有票號、工人有名字(roster)、留言有【身份】三件都在派工/回覆那頭;
缺的是總管改票的那一刻,把「要改的票」跟「這個 session 派出去的那一批票」比一次
(leo 2026-09-05:「明明已經都憑 milestone 和票號了」——subagent 回報的東西被
總管當成另一件事更新)。

- hooks/dispatched-ticket-stamp.sh(PostToolUse Agent|Task):按 session 記
  「哪張票派給了哪位工人」(subagent_type,剝掉 plugin 前綴)。回報(SendMessage)不記。
- hooks/report-ticket-match-guard.sh(PreToolUse Bash):總管 say/close/handback
  (+ Gitea API 側門)一張不在那批派工票裡的票 → 擋一次,印「X 被派的是 #A」。
  判準是票號(唯一識別碼)往放行方向比對,不看措辭(leo 2026-08-17 已證偽文字層封路)。
  沒派過工的 session 整支休眠;動被派出去的那張放行;讀取/別的動詞放行;
  同一張只擋一次(重下就過);逃生口 report-match-ok。
- 測試 scripts/test-report-ticket-match-guard.sh 31/31(離線,戳記走 ISEP_STAMP_DIR)。
- 盤點:hooks 62→64、註冊 88→90、scripts 66→67(在這棵樹上實數);
  docs/hooks-inventory.md、docs/TESTING.md A43、plugin.json 描述一併更新。
  版本號待總管定(未動 plugin.json version,避開 check-version-consistency)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TGxitYq49FzYC7EFkbhzF5
2026-09-18 18:27:23 +00:00
..