A run stays running
Coding trials can take several minutes. Poll every two seconds and check for new trajectory events. If no cell advances, inspect server logs and provider status.
A server restart does not resume active work. The reconciler marks abandoned runs failed after six hours by default.
A trial is void
The trial lacks evidence for a verdict. Check voidFields and the trial trajectory. Common causes are a missing verifier, a verifier that could not execute, or a test runner that found zero tests.
Void trials do not affect pass rate. Fix the evidence before interpreting the cell.
A cell is incomparable
The baseline or candidate has no scored trials. comparison.reason identifies the missing side. Check provider failures, verifier output, and voidFields.
A cell cannot be rerun
evals.rerunCell needs a run id and cell key from the same evals.get response. Older cells without a workspace snapshot cannot be rerun. Start a new run from the original case instead.
No models are returned
evals.models({ harness: "codex" }) reads the server’s Codex model cache. Open the Codex model picker on the server to populate it, then check the configured account’s model access.
MissingApiKey
Set ANPORD_API_KEY before creating the client, or pass apiKey to new Anpord().
A prompt returns fallback or stale
fallback means the API was unavailable, no cached value existed, and the caller supplied a fallback. Without one, the SDK throws. stale means an awaited refresh failed and the SDK returned the last good value. prompt.anpord.reason contains the original failure.
Create one client at module scope so requests share its memory cache.
A prompt change is not visible
Updating adds a version but does not move a channel. Promote the version. Cached readers may receive the old version while a refresh runs after the TTL.Prompt variable types are wrong
Runanpord generate after adding, removing, or renaming a variable. Commit the updated anpord-env.d.ts with the calling code.