Ship the release
Run tests and update changelog until both pass without altering the public API.
Use this when
You are cutting a release and the definition of done is mechanical — tests green and changelog current — but you do not want the agent fixing things by changing the public API along the way.
Done when
✓ Exit requires both success conditions to hold at once. Still check the diff for API-surface changes — the constraint is an instruction, not a type-checker. Keep the actual publish/tag/deploy step for a human.
Why it works
/goal encodes both the success condition (tests pass and changelog updated) and a constraint (do not touch the public API), so the loop can iterate on failures without widening its own scope. --mode ordered makes it get tests green before touching the changelog.
Source: willytop8 ↗graded C · 60/100 — how grades work →
More testing loops
Ralph a test backlog
Iterate over a prioritized list of untested modules with fresh context each pass, writing real behavioral tests for one module at a time and banking lessons in a guardrails file.
Test all endpoints
Run tests against every API endpoint until coverage is complete or you hit 30 iterations.
Ship avatar endpoint to spec
Build and test a new /users/:id/avatar route until it passes tests, lint, and matches the OpenAPI schema.