Skip to main content

Results and recovery

Every awaited action returns the same outer shape:

{
status = "succeeded", -- "failed" or "cancelled"
ok = true,
code = "ok",
retryable = false,
message = "...",
data = {},
}

Read ok first. If it is false, use retryable to decide whether a new observation and a bounded retry make sense.

local result = hexis.await(handle, {timeout = 60})
if result.ok then
return true
end

if result.retryable then
hexis.sleep(1)
return false
end

return nil

Common meanings

CodeWhat it tells Lua
okThe action reached its documented success condition.
busyA required control resource was owned by another action.
timeoutThe caller's bounded wait ended. Do not assume the world changed.
world_changedEvidence and work from the previous world are invalid.
authority_lostThe run no longer had permission to continue controlling the client.
unreachableA complete search proved the destination unreachable.
navigation_failedNavigation stopped without a complete unreachable proof.
terrain_incompleteRequired resident terrain was unavailable.
target_lostThe exact target could no longer be validated.
gui_precondition_failedScreen, target, or guard evidence changed. Observe again.
cancelledCancellation won before the action's irreversible boundary.

The API registry lists every stable code. Action-specific guides explain what data contains and what success means for that action.

Retry from new evidence

Never retry an old GUI slot reference, entity reference, world generation, or block observation blindly. Observe again, check that the goal is still useful, then start a new bounded action.