ENGINE_ERROR
The compiler or solver failed in a way that is not a fault in the request. HTTP 500. Retry once; if it persists, report the versions block.
Something inside the service failed — the compiler or the solver raised where it should have answered. This is not a fault in your source or your claim dictionary; a fault there is COMPILE_FAILED or VALIDATION_REJECTED.
The envelope
{"ok": false,
"error": {"code": "ENGINE_ERROR",
"message": "the solver process stopped before it answered; retry once",
"docs": "https://docs.agents.jaxon.ai/errors/engine-error.md"},
"versions": {"service_version": "...", "engine_version": "...", "wire_version": "..."}}
What to do
- Retry once. A solver process that stopped mid-request is replaced for the next one. A request that ran out of solver time is not this error — it is
BUDGET_EXCEEDEDnamingsolver_timeout_ms— and a busy solver isENGINE_BUSY. - Do not change the source or the claims to work around it. A ruleset that compiled clean and a claim dictionary that validated are correct as they are; altering them to dodge a service fault trades a visible error for a silent wrong answer.
- If it persists, report it with the
versionsblock and themessage. The service logs record the failure without your policy text — document content and extracted values never reach a log at any level — so the report is what lets Jaxon correlate it.
UNKNOWN is never an ENGINE_ERROR in disguise: an unbound program and a broken engine both answer UNKNOWN, which is why the service's health check requires a bound program to answer TRUE.
See also: Error codes.