Verification

"Done" is a result, not a claim.

A model can only tell you what it believes it did. Grace finishes a task by running something and reading the result — and when nothing can be run, it says that too.

The three states

VERIFIED_PASS

At least one check ran against this change and passed, and every required check that ran passed. This is the only state that may be reported as done.

VERIFIED_FAIL

A check ran and did not pass. The change is not accepted. This is where an escalation to a frontier model starts.

NOT_VERIFIED

No executable check covered this change. Nothing failed — but nothing proved anything either, and Grace will not call that done.

Four outcomes that are not the same thing

"I could not find the thing I was supposed to change" and "the change is already in place" look alike from the outside and mean opposite things. Grace keeps them apart, and only the last rung counts as evidence:

TARGET_NOT_FOUND
What was supposed to change was not found at all.
NO_EFFECT
Something was written, but it changed nothing observable.
ALREADY_SATISFIED
The condition already held before the change. Nothing was proven about the change itself.
VERIFIED
The change was made and an executed check confirmed the effect.

What verification cannot do today

This section exists because the claim above is only worth something if its limits are written down next to it.

  • A change with no check is not proven. If a project declares no test, no typecheck and no build, an edit to it will end in NOT_VERIFIED — correctly.
  • Passing checks are not correctness. A verified change is one whose declared checks passed. If the test suite does not cover the behaviour you care about, neither does the verification.
  • Visual observation is not visual judgement. Browser observation can confirm that an element exists, appears, or changed. It does not decide whether a design is good.
  • Verification says nothing about intent. A change can pass every check and still not be the change you wanted. That is a review, and a review is yours.
  • A passed check is not a finished task. Coverage asks “is every changed file covered by a check that passed?” — not “was the task fulfilled?”. Those are different questions, and closing the gap between them is what the current work is about. Until it is closed, treat VERIFIED_PASS as “the checks ran and passed”, not as “the job is done”.

Questions

What does Grace actually run to verify a change?

The checks the project already declares — typecheck, lint, test and build — plus browser observation for changes that show up in a page, and structural checks on the change itself.

What happens when nothing can prove a change?

Grace reports NOT_VERIFIED. That state can never be reported as done, and it is not treated as a success anywhere in the pipeline.

Does the model decide whether a task is finished?

No. The decision comes from the executed checks. A model claim without a passed check does not produce a done state.

How this is measured →