Skip to main content
This is the tool Reticle exists for. It does the act, observe and assert steps in one round trip, and it makes you name the expected consequence before the action runs. That ordering is not a convenience. An agent that acts first and then decides what counts as success will always find something that counts. Naming the consequence up front is the difference between a check and a rationalisation.

Example

Real response, trimmed:

The predicate grammar

until takes { kind, ...fields }. The kinds:

Predicates that catch real bugs

Exactly one request. Double-submit fails this at two, and no screenshot will ever tell you.
The action completed and logged nothing. “It worked but threw a warning” stops passing.
The app itself declared success. This is the highest grade of evidence, and it requires instrumenting your app. Which is the main reason to bother.

Reading verified

yes

The named consequence happened, with evidence attached.

no

It did not. A finding, with a source pointer.

unknown

Reticle could not tell. Not a pass. Report it as unknown.

The honesty block

grade is how strong the evidence was. A fired signal outranks an element appearing. coverage.partial: true means Reticle did not observe the whole window. integrity.clean: false means something interfered with the capture and the verdict deserves less trust. A verification tool that cannot describe the quality of its own evidence is asking you to take its word for it, which is precisely the problem we started with.

Arguments

Last modified on August 14, 2026