Skip to content

undo_plan_stale

The plan_digest you sent isn’t the plan Deedglass builds now: the rows, the catalog or the evidence changed since you previewed.

HTTP 409 · invalid_request_error · not retryable

The plan_digest you sent isn’t the plan Deedglass builds now: the rows, the catalog or the evidence changed since you previewed. The Gate’s undo executor checks the digest again right before it runs, so a stale plan never runs; that failure is recorded as the undo action’s execution.error_code.

Preview the undo again and use the new plan_digest.

HTTP 409 · undo_plan_stale
{
"error": {
"type": "invalid_request_error",
"code": "undo_plan_stale",
"message": "The rows changed since you previewed this undo. Preview it again and use the new plan.",
"param": "plan_digest",
"request_id": "req_01j9zr3m5k8q2w7x4t6v0b1c9d",
"doc_url": "https://docs.deedglass.com/errors/undo_plan_stale"
}
}

The message is for a person and can get more exact over time: branch on type and code, never on the message.

SDK Raised as
TypeScript (@deedglass/sdk) InvalidRequestError with code === "undo_plan_stale"
Python (deedglass) deedglass.InvalidRequestError with .code == "undo_plan_stale"