Skip to content

Coordinator flakiness family: transient 5xx / dropped writes on lease-create, run-history-finish, and census registration #1561

Description

@excelsier

Symptom 1: lease-create 500 (two occurrences)

crabbox run (managed Azure lease creation) occasionally fails before any
box is usably created, with the coordinator's POST /v1/leases returning
HTTP 500.

  • Occurrence 1: ref 5llfol70h8qko73rc38qsti0. Response attributed to a
    Durable Object storage reset. No box was created, no lease was left
    dangling, and our independent leak-alarm (which cross-checks Azure
    directly, not just the coordinator's own bookkeeping) reported clean
    for that window — so whatever happened inside the DO, it failed before
    committing any state that could leak.
  • Occurrence 2: box cbx_bb7fb1dce94b, witnessed directly in one of our own
    gate runs: coordinator lease create returned uncertain result for cbx_bb7fb1dce94b; repeating token-bound POST: coordinator POST /v1/leases: http 500: error code: 1101, followed by abandoning uncertain coordinator create cbx_bb7fb1dce94b; recording durable cancellation. Same endpoint and HTTP status as occurrence 1. This one's
    client-side log surfaces Cloudflare error code 1101 rather than the
    "Durable Object storage reset" wording occurrence 1's response carried, so
    we can't independently confirm both share the identical proximate cause —
    but both are transient 500s on the same write path with no lasting side
    effect: this occurrence's client treated the create as uncertain and
    recorded a durable cancellation rather than leaving a dangling lease.

Neither occurrence left the underlying system in a bad state — in both
cases the failure was caught before anything a caller would need to clean
up got committed. Occurrence 2's "repeating token-bound POST" before giving
up shows there is already some retry happening client-side ahead of the
durable-cancellation fallback; we don't have visibility into whether the
coordinator itself also retries this failure shape before returning the
500, or what the client-side retry ceiling is before it gives up (see "What
we're asking" below — if that ceiling is low, raising it might be enough on
its own).

Symptom 2: run-history "finish" returning HTTP 500 (one occurrence, cross-verified)

On box cbx_aced84636bf1 (2026-08-27, ~14:30Z), a routine gate run's client
accepted the coordinator's release response, but the separate run-history
"finish" write failed:

warning: coordinator accepted release for cbx_aced84636bf1; remote
cleanup remains pending and local claim/SSH artifacts were preserved
run history finish failed … http 500

The run's own timing record shows leaseStopped: true — the lease itself
was released; only the run-history bookkeeping write failed. We
independently verified the box's Azure resources tore down cleanly within
~15 minutes of this (zero residue), so nothing leaked. Net effect: "release
succeeded, history write didn't" — the same shape as Symptom 1 (a
transient 500 on a coordinator write), just on the finish path instead of
lease-create, and benign in outcome only because the underlying operation
had already completed before the write that failed.

Symptom 3: coordinator census gaps — provider-side resources with no coordinator record

During routine reconciliation work cross-checking the coordinator's own
inventory against live Azure-side resource state, two resources turned up
with no coordinator record at all: run_3b5a7e618a22 and
cbx_2b400af9b810. Both were real, live provider-side artifacts the
coordinator's bookkeeping had zero visibility into — not stale, absent, as
if the registering write never landed or was lost outright. Observed the
same day as symptoms 1 and 2. We have not verified whether this shares a
root cause with the DO-storage-reset pattern above landing on a different
write path, or is a distinct defect — flagging it as observed, not asserting
a shared cause we haven't proven.

What we're asking

All three symptoms share a shape: a coordinator write (lease-create,
run-history-finish, or whatever write should have produced a census-visible
registration) transiently fails or silently drops state, without the
underlying operation actually being unsafe — in every case we could verify,
the real-world resource state ended up correct or was independently
recoverable. Durable Object storage resets are a known, transient,
Cloudflare-platform-level event — not a permanent failure, and not something
a caller can fix by changing what it sends. If these write paths don't
already retry internally on this failure signature before surfacing a 5xx
(or silently dropping the write, for Symptom 3) to the client, closing that
gap would remove a class of "gate reported something alarming for no reason
a human can act on" incidents for anyone relying on the managed coordinator
path. If retry already exists and we're seeing its exhausted-budget tail,
knowing the ceiling would help us decide whether to add our own outer retry
— today we recover via an external ~5-minute cooldown + relaunch (Symptom 1)
or by independently re-deriving true state (Symptoms 2-3), both of which
cost real wall-clock on every occurrence.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:data-lossThis issue is about lost, corrupted, or silently dropped user/session/config data.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions