Skip to main content
NiceEval automatically retries transient failures that clearly did not reach the Agent, such as rate limits and some network errors. If a failure guarantees that later Attempts in the same Experiment or Eval will fail, you can stop them immediately.

Understand automatic retries first

Automatic retries require no configuration. While a retry waits, the Attempt’s active row shows a message like this:
After a retry succeeds, the Verdict and event stream retain only the successful Turn. When the retries run out, the Attempt becomes errored and its error includes a summary:
Without that summary, NiceEval did not retry the error. Requests the Agent has already accepted, or whose acceptance status is uncertain, are never retried automatically because repeating them might duplicate side effects.

Declare the scope when you discover a failure

When you inspect a shared service or a Fixture yourself, throw an error with a scope directly:
  • ExperimentFatalError stops unstarted Attempts in the same Experiment. Use it for shared services, shared credentials, and Experiment-level configuration failures.
  • EvalFatalError stops only unstarted Attempts in the current Eval. Use it for a deterministically missing Fixture or a prerequisite that belongs only to that Eval.
This Eval stops its remaining Attempts when its Fixture is missing:
When a shared service is unavailable, make that check inside a real Eval’s test(t) callback. Replace serviceHealthUrl with your service’s health endpoint, then use ExperimentFatalError to stop the Experiment’s remaining Attempts:
The error message appears in the terminal and the run record. State what happened and what the reader should do next.

Identify shared services that disconnect during a run

Some shared services work when an Experiment begins but disconnect later. An SDK, CLI, or network library usually throws that failure. Use an Experiment’s classifyFailure to recognize your own service address:
Recognize only services whose scope you can determine. Do not treat every ECONNREFUSED as an Experiment-level failure: the Agent can see the same error while reaching another site.

Resume the run after fixing it

After stopping work, failed Attempts are recorded as errored. Attempts that never began are unstarted, and the run status shows incomplete. After you fix the service, credentials, or Fixture, rerun the original command. NiceEval keeps the passed results and runs the parts that were previously errored or unstarted.
To inspect an Attempt’s raw error and retry summary, use the locator printed by the terminal:
A custom Adapter can provide classifySendFailure when it has a dedicated pre-acceptance rejection signal. See its type and boundaries in the defineSandboxAgent reference.