Files
approved-plan-continuity-ha…/README.md

120 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Approved Plan Continuity Hard Gate
## 中文說明
這個 repo 是從較大的 OpenClaw workspace 中抽出的焦點工作流成果,主題是:
- **approved plan continuity hard-gate**
- **dispatch receipt binding**
- **anti-blackhole / completion-delivery watchdog groundwork**
目標是避免這種情況再次發生:
- 任務已完成
- 下一步其實已經明確
- 但沒有真的 dispatch 下一個 task
- 最後流程卻還是收尾,造成 **auto-next break / continuity failure**
## 目前已完成
目前這個 repo 已經包含並驗證以下能力:
1. **continuity evaluator**
- task 完成、next action 已知、但沒有 next dispatch receipt且 closure 狀態又不是 `waiting_user` / `blocked` / `pending_verification` 時,會判定 `continuity_failure`
2. **dispatch receipt binding groundwork**
- 已有 continuity receipt storage 定義
- 已有最小 dispatch receipt writer
- 已有 continuity gate / dispatch binding 對應測試
3. **`derivedAction``nextDerivedAction` 一致納入 continuity 判定**
- 不再只有 `nextDerivedAction` 才受 gate 約束。
4. **`dry_run_dispatch` 不得冒充真 receipt**
- planner 的 dry-run 結果不再被 handler fallback 當成真實 dispatch receipt。
5. **fake receipt authority 已補強**
- continuity gate 不再接受任意 non-null `dispatchReceipt`
- 現在至少要求最小 receipt 欄位:
- `planId`
- `currentTask`
- `nextDerivedAction`
- `dispatchedAt`
6. **hook integration 已接入**
- continuity gate 已接進 `hooks/force-recall/handler.ts`
- 目前會透過 `[APPROVED_PLAN_CONTINUITY_GATE]` block 注入現行 flow
## 目前限制
這條線雖然已經接入現行 flow但目前仍偏向 **prompt-level hard-gate integration**,而不是 engine-level abort。也就是說
- 已經不是只有規則文件
- 已經不是只有獨立腳本測試
- 但也還不是最底層 runtime/core 的絕對阻斷器
## 下一步建議
下一階段最合理的方向有兩條:
1. **把 continuity hard-gate 再往更硬的 runtime enforcement 推進**
2. **回頭補完 anti-blackhole / completion-delivery watchdog recovery 閉環**
---
## English Description
This repository is a focused export from a larger OpenClaw workspace. It captures a workflow hardening workstream around:
- **approved plan continuity hard-gate**
- **dispatch receipt binding**
- **anti-blackhole / completion-delivery watchdog groundwork**
The goal is to prevent this failure mode:
- a task is completed,
- the next step is already known,
- but the next task is never actually dispatched,
- and the flow still closes out as if continuity were preserved.
## Current State
The repo now includes and validates the following capabilities:
1. **Continuity evaluator**
- When a task is complete, the next action is known, and there is no next dispatch receipt, and the closure state is not `waiting_user`, `blocked`, or `pending_verification`, the flow is classified as `continuity_failure`.
2. **Dispatch receipt binding groundwork**
- continuity receipt storage shape
- minimal dispatch receipt writer
- continuity gate / dispatch binding tests
3. **`derivedAction` is treated as a real next-action source**
- The gate no longer depends only on `nextDerivedAction`.
4. **`dry_run_dispatch` is no longer accepted as a real receipt**
- Planner dry-run output is no longer promoted into a real dispatch receipt by handler fallback logic.
5. **Fake receipt authority has been tightened**
- The continuity gate no longer accepts any arbitrary non-null `dispatchReceipt`
- It now requires at least these minimum fields:
- `planId`
- `currentTask`
- `nextDerivedAction`
- `dispatchedAt`
6. **Hook integration is now present**
- The continuity gate is integrated into `hooks/force-recall/handler.ts`
- It currently enters the live flow through the `[APPROVED_PLAN_CONTINUITY_GATE]` injected block
## Current Limitation
This workstream is now beyond pure documentation and beyond isolated script-level testing, but it still behaves more like a **prompt-level hard-gate integration** than a true engine-level abort mechanism.
## Suggested Next Steps
Two reasonable follow-up directions remain:
1. **push continuity hard-gate further toward stronger runtime enforcement**
2. **return to anti-blackhole / completion-delivery watchdog recovery closure**