No more fake “done” from your agents.
Every task gets a contract. An independent check, not the agent, decides when it is finished.
Same task, two real Claude Code runs, 31 Oct 2026
Without DonegateAgent: "Done."
Test file: missingFAILED · $0.66
With DonegateStop blocked once, test written
2 of 2 checks passVERIFIED · $0.95
task: Set ANSWER to 42, with a test
budget: {minutes: 10, usd: 2}
scope:
allow: [app.py, test_app.py]
checks:
- name: answer is 42
run: python -c "import app; print(app.ANSWER)"
expect: "42"
- name: test passes
run: python -m pytest -q test_app.py