“Fix the typo.”
It also refactored the auth module.
What does the check report?
- Finding
- Changed files in the auth module fall outside the agreed scope.
- Result
- DRIFT
Your agent says it is done. ChangeClause checks the claim. It checks the finished change against the spec you agreed before the agent started: changed files, criteria, and boundaries.
Early CLI from source today. Homebrew, curl, and npm installs are coming soon.
Requested change
Validate an email and store the subscription.
The signup module must not depend on authentication. Keep the existing health API unchanged.
forbids:
- id: no-auth-boundary
match:
kind: dependency
file: src/newsletter.ts
to: src/auth.ts
typeOnly: false
The change adds import { sessionTag } from './auth.js'. That crosses the forbidden dependency boundary.
TypeScript analysis · src/newsletter.ts:1
Successful signup, invalid email, and storage failure all pass. Passing tests do not cancel the boundary finding.
Executed Vitest results · imported evidence
Read the code, contract, and full results ↗
A reproducible synthetic example, not a customer incident.
You ask a coding agent for a change. It returns a large PR. The tests pass. You still cannot tell:
Review bots give an opinion. They read the diff and comment on it. They do not hold the change to what was agreed.
Before coding, the agent drafts a short spec: outcome, acceptance criteria, allowed areas, non-goals, and what must stay unchanged. A person approves it. The person approves; the person does not author.
The agent works as usual. The spec stays the reference.
ChangeClause compares the finished change with the agreed spec, mechanically:
PASS · INCOMPLETE · DRIFT · UNKNOWN · ERROR
Local and deterministic. No LLM in the check, no account.
Evidence has edges. A passing check supports a claim only within its scope. Untested behavior stays unknown.
Three illustrative scenarios. Recognize one? Send us a similar change and tell us what made it difficult to review.
It also refactored the auth module.
One acceptance criterion has no test.
It added a dependency that nobody approved.
We looked at 16 plan-linked PRs in a production Astro and Cloudflare app built mostly by coding agents.
One project, one sample. These numbers describe one codebase. They show the pattern ChangeClause checks for; they do not measure every team.
Get updates
We will write when there is something to try: new releases, install options as they ship, and results from real changes. No other use of your address.
Help choose the next check
What did you ask the agent for? What did it change? What was hard to confirm? A few sentences about a real review help us decide what to build next.
Share a changeA short form. Email is optional. A public link or sanitized description is enough.