Files
ISEP/hooks
Leo 5909c2a43a 逃生門要真的走得通:touch /tmp/.kbdb-down 從來沒放行過(inkstone/ISEP#122)
實撞(2026-09-02,做這張票的路上):KBDB 兩支工具都回 Connection closed,
照 history-first-guard.sh 印出來的那行 `touch /tmp/.kbdb-down` 打完再送同一個編輯,
**被一模一樣地擋第二次,訊息一字不差**。

根因(打出來的,不是推的):
    $ touch /tmp/.kbdb-down
    $ t=$(cat /tmp/.kbdb-down); echo "[$t]"        → []
    $ echo $((now - t))                            → 1788318047   ≥ 3600
  touch 造的是空檔,而那支閘讀的是**檔案內容**當時戳
  ⇒ 空字串被當成 0 ⇒「距今 17 億秒」⇒ 永遠不新鮮 ⇒ 恆擋。

⇒ 那行逃生門是印出來好看的,**沒有人照著打過一次**。
  跟本票 comment 6071(scripts/ticket 沒有 handback 這個動詞)、
  inkstone/ISEP#125(worktree 閘的逃生門原文照打 rc=2)是同一句話。

改法:內容不是數字就改用檔案的 mtime——touch 做的正是更新 mtime,
所以訊息那一行從此真的走得通;kbdb-asked-stamp.sh 寫數字的舊格式照樣相容。
路徑加 KBDB_STAMP_DIR 覆寫,只為了讓測試不去動這台機器真正的戳記
(清掉別的 session 的戳記=把閘弄成隨機的)。

沒有把閘弄鬆:過期的戳記照樣不算數(測試第 ⑦ 條守這件事),
文件/新檔/測試檔本來就不擋的三條也各有一格守著。

驗(hooks/tests/history-first-guard.test.sh,10 條,全離線):
  修好後            10/10
  修好前(路徑隔離) 9/10 —— ④「擋人的換成歷史警察了嗎」紅
  ⚠️ 第 ③ 條兩版都綠(它只驗離開碼,而過了第 0 道還有歷史警察會擋)
     真正分辨得出新舊的是 ④,檔頭寫了怎麼重現這個對照。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 11:11:39 +08:00
..