feat(狀態回報): 收尾寫一筆 skill-end 事件
現行紀錄只記「被叫用」,沒有成敗也沒有結束碼。跑完整輪的技能與開場就 中止的技能,在紀錄裡長得一模一樣。 start 由技能用量 hook 順手發,不必改技能文件。end 只能由技能自己在收尾 步驟寫——hook 接在技能工具呼叫上,而實際工作發生在之後的模型輪次,它在 原理上看不到成敗。有 start 沒有配對的 end,就是那一輪中止了。 status 五選一,每支技能各自寫明什麼情況選哪一個。找不到回報腳本就安靜 跳過,回報失敗一律不改變技能自己的結論。
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
# 階段回報 — 四個階段收尾都要交的東西
|
||||
|
||||
規劃、分析、實作、維護跑完,最後一件事一定是階段回報。彙整由 `tools/stage-report.sh` 產出,
|
||||
技能只負責把事實餵進去:寫過哪些 wiki 頁、有沒有寫工作日誌、實作階段的工作目錄與三條分支。
|
||||
規劃、分析、實作、維護跑完,最後兩件事固定是這兩筆:先給使用者看的階段回報,再給機器看的
|
||||
結束事件。階段回報由 `tools/stage-report.sh` 彙整產出,技能只負責把事實餵進去:寫過哪些
|
||||
wiki 頁、有沒有寫工作日誌、實作階段的工作目錄與三條分支。結束事件見本頁最後一節。
|
||||
|
||||
## 什麼時候回報
|
||||
|
||||
@@ -61,3 +62,22 @@
|
||||
| 1 | 有警告(缺工作日誌、實作階段沒有 PR、或清單裡有連不到的連結) | 一樣把輸出貼給使用者,連不到的連結照著修。**這是警告不是阻擋**,階段的工作已經做完了 |
|
||||
| 2 | 用法錯誤 | 修正參數重跑 |
|
||||
| 3 | 找不到 `gitea.sh` 或 `sdlc-gate.sh` | 修好相依關係再重跑 |
|
||||
|
||||
## 結束事件 — 階段回報之後那一筆
|
||||
|
||||
階段回報是給人看的,結束事件是給機器看的。跑完階段回報,緊接著跑
|
||||
`jsc-hooks/tools/report-status.sh skill-end jsc-sdlc:{技能名} {status} {結束碼} [detail]`,
|
||||
一筆寫進 `$JSC_HOME/usage/events.jsonl`。腳本名怎麼寫,比照各技能既有寫
|
||||
`jsc-hooks/hooks/sdlc-gate.sh` 的方式,不另立一套。
|
||||
|
||||
為什麼非得由技能自己寫:配對的 `skill-start` 由 jsc-hooks 自己記,但那個 hook 接在技能工具
|
||||
呼叫之後就觸發,實際工作還在後面的模型輪次,所以**沒有任何 hook 看得到階段怎麼結束**。
|
||||
有 `start` 沒有配對的 `end`,在紀錄裡就是中止;收尾少寫這一筆,跑完的階段每一次都會被算成中止。
|
||||
|
||||
| 項目 | 規則 |
|
||||
| --- | --- |
|
||||
| `status` | `ok`、`blocked`、`failed`、`degraded`、`aborted` 五選一。哪一種情況選哪一個,各技能 SKILL.md 的收尾步驟有自己的對應表,那張表是唯一判準 |
|
||||
| 模型閘門擋下 | 一律 `blocked`,不是 `failed`。閘門擋下不合格的模型是閘門在做事,記成失敗會讓下一手去找一個不存在的缺陷 |
|
||||
| `{結束碼}` | 判定該狀態的那支腳本的結束碼;沒有任何腳本回非 0 就填 `0`,`ok` 與 `aborted` 都是這種 |
|
||||
| `[detail]` | 選填,繁體中文單行,講清楚是什麼決定了這個狀態。腳本截到 200 字元,長內容不要塞 |
|
||||
| 失敗怎麼辦 | **這一步失敗不改變本次階段的結論。** 找不到腳本就安靜跳過,不回報也不重跑任何步驟。三個記錄子命令本來就設計成寫檔失敗也回 0,所以回非 0 只代表呼叫本身寫錯了(`2` 是用法錯誤),修一次參數就好 |
|
||||
|
||||
Reference in New Issue
Block a user