Latch / Docs
guides

Simulate

Dry-run a request through the real pipeline, without calling upstream.

Simulate runs a request through a latch's real pipeline and shows you every filter's decision, without calling the upstream and without using the credential.

Use it before you hand a latch to anyone. A policy you have not simulated is a policy you are guessing about.

Using it

Pick a latch, then either:

  • Scenarios. Pre-built requests that match the selected latch: the kind of call it is meant to allow, and the kind it is meant to refuse.
  • Custom request. Your own method, path, and JSON body.

The pipeline then evaluates filter by filter, and you see exactly where a request is stopped and why. It is the same evaluation the proxy performs, not an approximation.

On a multi-mount latch, scenarios are built per mount, so you can exercise each service's pipeline independently.

What it will not tell you

Stateful filters are skipped, with an advisory note. A rate_limit cannot be meaningfully replayed in a dry run: the whole point of it is the requests that came before, and a simulation has no before. The same is true of spend_limit, which is metered against live daily spend.

So a simulation that says "allow" is telling you the declarative filters allow it. It is not a promise that you are under your rate limit or your budget.

  • The pipeline: what the evaluation order actually is.
  • Activity: the same filter trace, for requests that really happened.