- Rename AGENT.md -> .agent.md, RULES.md -> .rules.md, ONBOARDING.md -> .onboarding.md - Rename BUG_REPORT.md -> .bug_report.md, ADVERSARIAL_BUG_REPORT.md -> .adversarial_bug_report.md, VERDICT.md -> .verdict.md - Fix onboarding.md references to use new .onboarding.md path - Fix stop-hook-pattern.md reference to use .onboarding.md - Update README.md, config.md, install.sh, update.sh, prompts/*, references/* - VRAM detection script validated and working
59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
# Stop-Hook Pattern (How to Enforce Task Completion)
|
|
|
|
This pattern prevents the agent from ending a session until the contract is satisfied, matching the article's recommendation.
|
|
|
|
## Core Idea
|
|
Instead of relying on the agent to voluntarily output "CONTRACT_MET", the orchestration layer (you or a thin wrapper) only allows the session to terminate when the stop condition is met.
|
|
|
|
## Implementation Options
|
|
|
|
### Option 1: Explicit Stop Condition in Every Prompt (Recommended)
|
|
Add this block to the end of `implement.md`, `research.md`, and any other phase that produces a deliverable:
|
|
|
|
```
|
|
## Stop Condition (MANDATORY)
|
|
You are not allowed to end this session until one of the following is true:
|
|
- You have produced the required output file(s) AND output the exact phrase "CONTRACT_MET"
|
|
- You have explicitly stated that the contract cannot be met and explained why
|
|
|
|
Until then, continue working or ask clarifying questions.
|
|
```
|
|
|
|
### Option 2: Contract File as Gate
|
|
Every task folder must contain a `{task-name}_CONTRACT.md`.
|
|
|
|
The agent is instructed:
|
|
- Read the contract at the start of the session
|
|
- Only output "CONTRACT_MET" after every item in the contract has been verified (tests pass, files exist, acceptance criteria checked)
|
|
|
|
### Option 3: External Orchestrator Hook (Strongest)
|
|
If using a thin wrapper script around the agent CLI:
|
|
|
|
```bash
|
|
# Example pseudo-wrapper
|
|
while true; do
|
|
agent run --prompt "$(render_prompt implement.md)"
|
|
if grep -q "CONTRACT_MET" last_output.txt; then
|
|
break
|
|
fi
|
|
# Otherwise feed the failure back into the same session or new one
|
|
done
|
|
```
|
|
|
|
## Recommended Addition to referee.md and implement.md
|
|
After the verdict or implementation, add:
|
|
|
|
```
|
|
## Final Gate
|
|
Before finishing, re-read the CONTRACT.md (if present) and confirm every line item is satisfied.
|
|
Only then output "CONTRACT_MET".
|
|
```
|
|
|
|
## Files to Update
|
|
- Add the stop condition block to:
|
|
- prompts/implement.md
|
|
- prompts/research.md
|
|
- prompts/bug_finder.md (optional)
|
|
- Update .onboarding.md to document this pattern under "Define Clear End States"
|
|
|
|
This turns the voluntary "CONTRACT_MET" into a hard mechanical requirement. |