工作日誌暫存收編舊名目錄,並掃出定址不到的孤兒 #34

Merged
admin merged 2 commits from fix/pending-legacy-dir-and-orphan-scan into develop 2026-09-02 07:32:16 +00:00
Member

摘要

  • 需求描述:worklog 回報執行成功,wiki 上卻沒有日誌。原因是暫存目錄還用舊的 8 碼雜湊命名,現行程式用 40 碼定址,查不到。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/worklog-pending.sh list、cat、merge 一併收編同一個雜湊的「H 加前 7 碼」舊目錄;clear 與 commit 連舊目錄一起清;新增 orphans 子命令掃出定址不到的目錄,結束碼 4
skills/worklog/SKILL.md 第 4 步說明改為含舊目錄;新增第 4.5 步跑 orphans 並回報
references/behaviors.md worklog 一節的關鍵步驟、完成條件、可驗證跡象隨之更新
三份 manifest 隨變更升版

設計重點

  • 這個缺陷之所以無聲,是因為「真的沒有待寫」與「待寫卡在舊名底下」對呼叫端是同一種結果。merge 沒有待寫內容時本來就回 0,那是刻意的設計,不該改。所以修的是定址,不是結束碼語意。
  • 只認「舊名等於 H 加新名前 7 碼」這一種對映。推導唯一,不會收到別的專案的暫存。
  • commit 的護欄必須一併放行舊目錄的路徑。不放行的話,已經寫進 wiki 的暫存清不掉,下一輪會整批重複寫一次——這比原本的漏寫更難察覺。
  • 跨兩個目錄的排序以檔名為鍵。檔名開頭是 UTC 時間戳,字典序等同時間序;直接把兩個目錄接起來的話,舊目錄那幾筆會整批插到新目錄最舊那一筆前面。
  • 自動收編只救得到推得出對映的舊目錄,其餘要有人看到才處理得掉,所以另外給 orphans。

測試結果

  • 舊目錄兩筆、新目錄一筆的情境:list 三筆且依時間排序、cat 內容順序正確、merge 回 PENDING=3 且本次條目在最後、commit 清掉 3 個檔並移除兩個空目錄。
  • orphans:乾淨時回 0;放進 HDEADBEE、ABCD1234 兩個目錄後印出兩列並回 4。
  • 回歸:純 40 碼且無舊目錄時 list 正常回 0;查一個完全沒有暫存的雜湊仍回 3。
  • 對本機真實暫存區跑 orphans 回 0,兩個專案各 3 筆待寫用 40 碼都查得到。
  • sh -n、lint-scripts.sh、check-behaviors.sh、check-link-format.sh、ste100-lint.sh、check-page-name.sh 全部結束碼 0。

前置 Push Request

  • 無
## 摘要 - 需求描述:worklog 回報執行成功,wiki 上卻沒有日誌。原因是暫存目錄還用舊的 8 碼雜湊命名,現行程式用 40 碼定址,查不到。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/worklog-pending.sh` | `list`、`cat`、`merge` 一併收編同一個雜湊的「`H` 加前 7 碼」舊目錄;`clear` 與 `commit` 連舊目錄一起清;新增 `orphans` 子命令掃出定址不到的目錄,結束碼 4 | | `skills/worklog/SKILL.md` | 第 4 步說明改為含舊目錄;新增第 4.5 步跑 `orphans` 並回報 | | `references/behaviors.md` | `worklog` 一節的關鍵步驟、完成條件、可驗證跡象隨之更新 | | 三份 manifest | 隨變更升版 | ## 設計重點 - 這個缺陷之所以無聲,是因為「真的沒有待寫」與「待寫卡在舊名底下」對呼叫端是同一種結果。`merge` 沒有待寫內容時本來就回 0,那是刻意的設計,不該改。所以修的是定址,不是結束碼語意。 - 只認「舊名等於 `H` 加新名前 7 碼」這一種對映。推導唯一,不會收到別的專案的暫存。 - `commit` 的護欄必須一併放行舊目錄的路徑。不放行的話,已經寫進 wiki 的暫存清不掉,下一輪會整批重複寫一次——這比原本的漏寫更難察覺。 - 跨兩個目錄的排序以檔名為鍵。檔名開頭是 UTC 時間戳,字典序等同時間序;直接把兩個目錄接起來的話,舊目錄那幾筆會整批插到新目錄最舊那一筆前面。 - 自動收編只救得到推得出對映的舊目錄,其餘要有人看到才處理得掉,所以另外給 `orphans`。 ## 測試結果 - 舊目錄兩筆、新目錄一筆的情境:`list` 三筆且依時間排序、`cat` 內容順序正確、`merge` 回 `PENDING=3` 且本次條目在最後、`commit` 清掉 3 個檔並移除兩個空目錄。 - `orphans`:乾淨時回 0;放進 `HDEADBEE`、`ABCD1234` 兩個目錄後印出兩列並回 4。 - 回歸:純 40 碼且無舊目錄時 `list` 正常回 0;查一個完全沒有暫存的雜湊仍回 3。 - 對本機真實暫存區跑 `orphans` 回 0,兩個專案各 3 筆待寫用 40 碼都查得到。 - `sh -n`、`lint-scripts.sh`、`check-behaviors.sh`、`check-link-format.sh`、`ste100-lint.sh`、`check-page-name.sh` 全部結束碼 0。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-02 07:27:29 +00:00
雜湊規則從 8 碼改成完整 40 碼那一刻,還沒寫進 wiki 的暫存留在舊名底下。
現行程式拿 40 碼去查,查不到那些目錄,裡面的條目就再也寫不出去。

沒人發現是因為兩種狀態長得一樣:「真的沒有待寫」與「待寫卡在舊名底下」
對呼叫端都是成功。技能於是照常回報完成,日誌卻一筆都沒有。

兩道處置。推得出對映的(舊名等於 H 加新名前 7 碼)由 list、cat、merge
一併收編,clear 與 commit 也連舊目錄一起清——commit 不放行的話,已經寫進
wiki 的暫存清不掉,下一輪會整批重複寫一次。推不出對映的交給新的 orphans
子命令掃出來回報,要有人看到才處理得掉。
admin merged commit 277a8f1b88 into develop 2026-09-02 07:32:16 +00:00
admin deleted branch fix/pending-legacy-dir-and-orphan-scan 2026-09-02 07:32:16 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/log#34