The error message if the run errored or was rate-limited (an error /
turn.failed event), else null. CRITICAL for the eval tier: an errored turn
must NOT be scored as a clean "skill didn't fire" miss — dogfooding hit a Codex
usage limit ("You've hit your usage limit…") whose error event left an empty
trace that codexSkillFired read as recall 0. A caller should skip/retry an
errored run, not count it. (The Claude path has isRateLimited + backoff; this
is the Codex equivalent detector.)
The error message if the run errored or was rate-limited (an
error/turn.failedevent), else null. CRITICAL for the eval tier: an errored turn must NOT be scored as a clean "skill didn't fire" miss — dogfooding hit a Codex usage limit ("You've hit your usage limit…") whoseerrorevent left an empty trace thatcodexSkillFiredread as recall 0. A caller should skip/retry an errored run, not count it. (The Claude path hasisRateLimited+ backoff; this is the Codex equivalent detector.)