← ClaudeAtlas

ai-executor-zero-job-contractlisted

讀或修改 starledger canonical prompt 的 step 3、診斷任何 zero-job run 的報告文字、或有人(含 executor 本身)提議「backlog 排空了/停用 routine/P3 完成」時載入。這是 zero-job 結論的權威邊界與逐字報告契約。
F-e-u-e-r/opus-pack · ★ 2 · AI & Automation · score 68
Install: claude install-skill F-e-u-e-r/opus-pack
# starledger:executor zero-job 契約(3a–3e) (驗證日 2026-07-30,starledger HEAD `55ae7b2`。權威文本= `docs/routines/starledger-ai-classification.md` canonical prompt 的 step 3;本 skill 是導讀與 邊界,不是替代品——兩者衝突時以 repo 文本為準。) ## 事故背景(為什麼這份契約長這樣) 2026-07-26:一次 zero-job run 把「當下正確的 668/668 快照」升格為常設宣稱——「fully drained」「disable this routine」「P3 完成閘達成」——34 分鐘後 daily sync +17 顆星就全數否證 (PR #205 修正;starledger git 歷史可重建時間軸)。兩個教訓都寫進了契約: 1. **快照結論不得升格為常設結論**。star 語單持續成長,「排空」本質上是暫時狀態。 2. **planner 是 budget-limited 的**(`config/ai.yaml` 的 `max_retry_per_run`/ `max_refresh_per_run` 現值 0):zero-job manifest 在邏輯上**無法**證明「所有 annotation 都在 當前 fingerprint」——refresh/retry 候選被 ceiling 靜默丟棄。所以合法的最強宣稱只有 「snapshot-local manifest is empty **under this base and config**」。 ## 協定地圖(依序、遇第一個失敗即停) 前置條件:step-2 `plan` 指令本身 exit 0 且本輪確實寫出 `.ai-runs/manifest.json`;否則報該失敗 指令、exit 0、no conclusion。 | 步 | 檢查 | 通過 | 失敗(全部 fail-closed、exit 0) | |---|---|---|---| | 3a | `git fetch --no-tags origin main` 後 `git diff --quiet "$BASE_SHA" origin/main -- stars.json dataset-meta.json ai-annotations.json ai-annotations-meta.json`(`BASE_SHA`=run 開始時記錄的 commit;step 11 前 HEAD 不得移動,故可 `git rev-parse HEAD` 重導出) | diff exit 0 → 3b | fetch 失敗→`zero jobs; base freshness unverifiable (fetch failed); no conclusion`;diff exit 1→逐字 `empty manifest on stale base; base advanced during run; re-run` + 兩個 SHA;其他 exit→`… (git diff failed) …` + exit 碼 | | 3b | `config/ai.yaml`:結構檢查**先**(檔可讀+`ai.enabled`/`ai.executor_kind`/四個 budget ceiling——`max_new_p