3.2 KiB
Auto-Next Obligation Gate
Purpose
This runbook defines the approved-plan continuity rule that a workflow may not stop at a completed-task boundary when the next task in the same approved plan is already known and continuation is still allowed.
When auto-next is obligatory
Auto-next is obligatory when all of the following are true:
- the current workflow is inside the same approved plan
- the current task is complete
- the next task is known
- the system is attempting a task-boundary stop instead of continuing execution
- reply closure state is not
waiting_user - reply closure state is not
blocked - reply closure state is not
pending_verification highRiskStopis not active
In this state, the system must auto-dispatch the next task and record a real dispatch receipt. A dry-run planner result or stated intent to continue is not enough.
Legal non-auto-next closures
The following are legal non-auto-next closures even when a next task exists:
waiting_userblockedpending_verification
These states are the only normal closure states that can stop without auto-next dispatch.
Allowed non-closure exception
The following explicit exception may bypass auto-next obligation without using the normal legal terminal closure states:
highRiskStop
highRiskStop means the workflow is intentionally stopping at an explicit high-risk stop point and therefore does not have to auto-dispatch the next task yet.
Forbidden behavior
The following behavior is forbidden:
- completed task
- next task known
- same approved plan
- normal closeout or handoff language
- no real dispatch receipt for the next task
- no legal closure state
- no
highRiskStop
A completed task in the same approved plan must not end with “I can continue with the next task” style closeout unless the next task has actually been dispatched.
Canonical failure condition
If all of the following are true:
- task is complete
- next task is known
- next task belongs to the same approved plan
- the system is stopping at a task boundary
- no valid dispatch receipt exists
- closure is not
waiting_user,blocked, orpending_verification highRiskStopis false
Then the continuity gate must fail and treat the stop as an auto-next obligation violation.
Canonical failure table
| Task complete | Next task known | Same approved plan | Boundary stop | Receipt | Closure / exception | Expected |
|---|---|---|---|---|---|---|
| yes | yes | yes | yes | no | completed closure | FAIL |
| yes | yes | yes | yes | valid receipt | completed closure | PASS |
| yes | yes | yes | yes | no | waiting_user |
PASS |
| yes | yes | yes | yes | no | blocked |
PASS |
| yes | yes | yes | yes | no | pending_verification |
PASS |
| yes | yes | yes | yes | no | highRiskStop |
PASS |
Notes for implementation
- The obligation applies only when the next task is known within the same approved plan.
- A generic next action is not enough unless it proves the same approved plan task transition.
- A real dispatch receipt remains the source of truth for whether auto-next actually happened.
- This rule is intentionally minimal so it can later move into the continuity plugin without changing the behavior contract.