release: v0.1.1 develop 到 master #18

Merged
admin merged 6 commits from develop into master 2026-08-27 04:14:22 +00:00
Member

摘要

  • 需求描述:把 jsc-log 0.1.1 從 develop 放行到 master。內容是使用者 15 條規則第一群「SDLC 執行流程」六條在本存取庫的落實:tools/worklog-pending.sh 新增 merge、commit、abort 三段式寫入,工作日誌的粒度改成每完成一個任務就寫一筆。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/worklog-pending.sh 新增 merge、commit、abort 三段式。merge 把暫存內容與本次條目合成一份要寫進 wiki 的檔案,同時記下併走了哪些暫存檔(併入清單);commit 在 wiki 寫入成功後只刪清單上那幾個檔;abort 在寫入失敗後原封不動保住暫存,只丟掉合併檔與清單。只刪清單上的檔案,是為了保住 merge 之後、commit 之前另一個工作階段新存進來的內容。
skills/worklog/SKILL.md 觸發時機從「一個階段結束寫一筆」改成「一個任務結束寫一筆」,並新增「什麼算一個任務」的對照表。寫入流程改走三段式:填條目檔、merge、寫 wiki、依結果 commit 或 abort。
templates/log-entry.md 頁首說明同步新粒度:三種任務、同一個工作包跑五輪留言修正就是五筆,標題各自寫清楚是哪一輪,時間與 token 分開記。
README.md 同步日誌粒度與三段式暫存。
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 版本同步升到 0.1.1。

設計重點

  • 這一段才會讓已安裝的 CLI 抓到新內容。 marketplace 與 jsc-hooks/hooks/version-guard.sh 都讀存取庫的預設分支 master——version-guard.sh 取 raw plugin.json 時刻意不指定 ref,拿到的就是預設分支那一份。內容留在 develop 上再完整,已經安裝的 CLI 一律抓不到,版本檢查也照舊回報舊版本。階梯的前三級都已走完,這是最後一級,也是唯一會讓使用者端真的拿到新內容的一級。
  • 行為變更清單。
    1. 一個任務一筆日誌。任務有三種:一個工作包、一輪 PR 留言修正、一個獨立的修正提交。
    2. 下一個任務開始前就要把上一筆寫完,不再讓階段收尾時補一筆總結——拖到那時候,耗時、token 數與困難點都已經散掉了。
    3. 一輪只嘗試沒改到檔案的留言修正照樣要寫一筆:它燒掉的時間就是值得留的事實。
    4. 全部條目附加在同一頁 LOG_{HASH} 的文末,既有條目不動;每筆的標題要寫清楚是哪一個工作包、哪一輪或哪一個提交。
    5. 暫存區的清除改成綁在 wiki 寫入結果上:成功才 commit,失敗就 abort 並保住暫存重跑。舊的 add、list、cat、clear 子指令都還在,沒有拿掉。
  • 暫存不等於已寫入。 tools/stage-report.sh --pending-file park 起來的內容只是接住「還沒完成任何任務就停下」的階段,它會在下一次真的寫入時併進同一次寫入;在那之前不能當成寫過的日誌。
  • 升級後使用者會立刻感受到的差異。
    • 日誌變密:以前一個實作階段大概一筆,升級後一個工作包加五輪留言修正就是六筆,每筆各自帶自己的耗時與 token 數。
    • R3 分支階梯(jsc-git 0.0.8):越級的 PR 會被擋下來,base 一律由 jsc-git/tools/base-branch.sh --derive 推導。
    • R4 工作包隔離(jsc-hooks 0.2.3、jsc-sdlc 0.1.9):不是自己領的那一包的 PR 會被擋,查無歸屬才放行只提醒。逃生門是 JSC_WP_GATE=off。
  • 相關紀錄:工作日誌在 https://gitea.jsc.idv.tw/knowledges/LOG/wiki/LOG_FB8DF0B5,決策紀錄在 https://gitea.jsc.idv.tw/knowledges/QUESTION/wiki/QUESTION_FB8DF0B5 的 2026-08-27 一節。

測試結果

  • git log --oneline origin/master..origin/develop:6 個 commit,最上面是已合併的 plugins/log#17,其下是 #16 與四個實作提交,沒有夾帶別批的內容。
  • git diff --stat origin/master origin/develop:7 個檔案、135 行新增、28 行刪除,與上表逐項對得上,沒有預期外的檔案。
  • 本次放行不含任何新的程式碼變更,內容與已合併的 plugins/log#16、plugins/log#17 完全相同。worklog-pending.sh 三段式的測試在那兩支 PR 已經跑過,這支 PR 沒有重跑。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 `jsc-log` 0.1.1 從 `develop` 放行到 `master`。內容是使用者 15 條規則第一群「SDLC 執行流程」六條在本存取庫的落實:`tools/worklog-pending.sh` 新增 `merge`、`commit`、`abort` 三段式寫入,工作日誌的粒度改成每完成一個任務就寫一筆。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/worklog-pending.sh` | 新增 `merge`、`commit`、`abort` 三段式。`merge` 把暫存內容與本次條目合成一份要寫進 wiki 的檔案,同時記下併走了哪些暫存檔(併入清單);`commit` 在 wiki 寫入成功後只刪清單上那幾個檔;`abort` 在寫入失敗後原封不動保住暫存,只丟掉合併檔與清單。只刪清單上的檔案,是為了保住 `merge` 之後、`commit` 之前另一個工作階段新存進來的內容。 | | `skills/worklog/SKILL.md` | 觸發時機從「一個階段結束寫一筆」改成「一個任務結束寫一筆」,並新增「什麼算一個任務」的對照表。寫入流程改走三段式:填條目檔、`merge`、寫 wiki、依結果 `commit` 或 `abort`。 | | `templates/log-entry.md` | 頁首說明同步新粒度:三種任務、同一個工作包跑五輪留言修正就是五筆,標題各自寫清楚是哪一輪,時間與 token 分開記。 | | `README.md` | 同步日誌粒度與三段式暫存。 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 三份 manifest 版本同步升到 0.1.1。 | ## 設計重點 - **這一段才會讓已安裝的 CLI 抓到新內容。** marketplace 與 `jsc-hooks/hooks/version-guard.sh` 都讀存取庫的**預設分支** `master`——`version-guard.sh` 取 raw `plugin.json` 時刻意不指定 ref,拿到的就是預設分支那一份。內容留在 `develop` 上再完整,已經安裝的 CLI 一律抓不到,版本檢查也照舊回報舊版本。階梯的前三級都已走完,這是最後一級,也是唯一會讓使用者端真的拿到新內容的一級。 - **行為變更清單。** 1. 一個任務一筆日誌。任務有三種:一個工作包、一輪 PR 留言修正、一個獨立的修正提交。 2. 下一個任務開始前就要把上一筆寫完,不再讓階段收尾時補一筆總結——拖到那時候,耗時、token 數與困難點都已經散掉了。 3. 一輪只嘗試沒改到檔案的留言修正照樣要寫一筆:它燒掉的時間就是值得留的事實。 4. 全部條目附加在同一頁 `LOG_{HASH}` 的文末,既有條目不動;每筆的標題要寫清楚是哪一個工作包、哪一輪或哪一個提交。 5. 暫存區的清除改成綁在 wiki 寫入結果上:成功才 `commit`,失敗就 `abort` 並保住暫存重跑。舊的 `add`、`list`、`cat`、`clear` 子指令都還在,沒有拿掉。 - **暫存不等於已寫入。** `tools/stage-report.sh --pending-file` park 起來的內容只是接住「還沒完成任何任務就停下」的階段,它會在下一次真的寫入時併進同一次寫入;在那之前不能當成寫過的日誌。 - **升級後使用者會立刻感受到的差異。** - 日誌變密:以前一個實作階段大概一筆,升級後一個工作包加五輪留言修正就是六筆,每筆各自帶自己的耗時與 token 數。 - R3 分支階梯(`jsc-git` 0.0.8):**越級的 PR 會被擋下來**,base 一律由 `jsc-git/tools/base-branch.sh --derive` 推導。 - R4 工作包隔離(`jsc-hooks` 0.2.3、`jsc-sdlc` 0.1.9):**不是自己領的那一包的 PR 會被擋**,查無歸屬才放行只提醒。逃生門是 `JSC_WP_GATE=off`。 - 相關紀錄:工作日誌在 <https://gitea.jsc.idv.tw/knowledges/LOG/wiki/LOG_FB8DF0B5>,決策紀錄在 <https://gitea.jsc.idv.tw/knowledges/QUESTION/wiki/QUESTION_FB8DF0B5> 的 2026-08-27 一節。 ## 測試結果 - `git log --oneline origin/master..origin/develop`:6 個 commit,最上面是已合併的 `plugins/log#17`,其下是 `#16` 與四個實作提交,沒有夾帶別批的內容。 - `git diff --stat origin/master origin/develop`:7 個檔案、135 行新增、28 行刪除,與上表逐項對得上,沒有預期外的檔案。 - 本次放行不含任何新的程式碼變更,內容與已合併的 `plugins/log#16`、`plugins/log#17` 完全相同。`worklog-pending.sh` 三段式的測試在那兩支 PR 已經跑過,**這支 PR 沒有重跑**。 ## 前置 Push Request - 無
jiantw83 added 6 commits 2026-08-27 04:00:46 +00:00
What:`tools/worklog-pending.sh` 新增 `merge {hash} {本次條目檔}`、`commit {hash} {併入清單}`、`abort {hash} {併入清單}` 三個子命令。`merge` 合成「暫存內容在前、本次條目在後」的檔案並印出 `MERGED=`、`CLAIM=`、`PENDING=`;`commit` 只刪併入清單上那幾個檔;`abort` 暫存一個都不刪,只丟掉合併檔與清單。原本的 `clear` 保留,改為清掉全部暫存。

Why:暫存只能在 wiki 寫入成功之後才清,但原本只有一個 `clear`,呼叫端要嘛先清再寫(寫失敗就兩邊都沒有),要嘛寫完清全部(把 `merge` 之後才存進來的內容一起刪掉)。兩種都會弄丟工作紀錄。

How:`merge` 只讀不刪,刪檔一律等 `commit`,也就是等 wiki 回報成功。只刪清單上的檔案,是為了保住 `merge` 之後、`commit` 之前另一個工作階段新存進來的內容。`commit` 只認 `merge` 產出的清單,而且清單上的路徑必須落在該 hash 的暫存目錄底下,不然當用法錯誤擋下來——這道護欄擋的是拿別處的清單來刪檔。`merge` 在沒有暫存時仍然回 `0`,合併檔至少有本次條目,呼叫端不必分兩條路走。

Who:`jsc-log:worklog` 寫日誌那一步,以及用 `stage-report.sh --pending-file` 暫存過內容的 SDLC 階段。
What:`worklog` 技能改成一個任務一筆條目,任務有三種——一個工作包、一輪 PR 留言修正、一個獨立的修正提交,並新增「What counts as one task」一表寫明各自何時結束;寫入步驟改走 `merge`、`commit`、`abort` 三段式,十項資訊裡的花費時間、token 用量、任務狀態、執行細節四項改成只算這一個任務。`templates/log-entry.md` 的頁首說明同步改寫。

Why:原本一個階段只寫一筆,同一個工作包跑五輪留言修正也只留下一筆。花費時間與 token 用量被攤成一個總數,看不出哪一輪花掉多少;連「試了卻沒改到檔案」的那一輪也整段消失,而那段時間正是最該被看見的。

How:下一個任務開始前先把這一筆寫完,五輪就是五筆,各自帶自己的花費時間與 token 用量,一律附加到同一頁 `LOG_{HASH}`,既有條目不動。每筆的標題要寫清楚是哪一個任務(工作包代號、第幾輪、或提交標題),五筆並排才讀得下去。花費時間在任務結束的當下讀,token 用量傳同一個 session id,兩個數字才描述同一件事。

Who:`jsc-sdlc:implement` 與 `jsc-sdlc:maintain` 收尾時呼叫日誌的每一個工作階段。
What:README 的 `worklog` 技能說明改寫成「每完成一個任務就寫一筆」並列出三種任務,工具表的 `worklog-pending.sh` 一列補上 `merge`、`commit`、`abort` 三個子命令與各自的時機。

Why:粒度與暫存流程都變了,README 是對外說明。說明沒跟上,使用者會照舊以為一個階段寫一筆、清暫存用 `clear`。

How:技能說明拆成兩段,第一段講粒度、第二段講十項資訊與寫入流程;工具表那一列把「寫進 wiki 成功之後才清」這句留著,因為三段式要守的正是這一條。

Who:讀 `jsc-log` 說明的人,以及要接 `worklog-pending.sh` 的 `jsc-sdlc`。
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.0 改為 0.1.1。

Why:本次改了日誌粒度並新增三個暫存子命令,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。

How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。

Who:`jsc-log` 外掛的套件描述檔。
Reviewed-on: #16
admin approved these changes 2026-08-27 04:14:19 +00:00
admin merged commit 5ae9d869db into master 2026-08-27 04:14:22 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/log#18