Skip to content

A claim is a work lock

Resolving from anywhereDashboardHTTPSDKCLIMCPclaimassigned_toassigned_until

A claim names a holder and a window. While the window is live nobody else can resolve the row, and when it lapses the row is back in the pool.

The situation

Two reviewers open the same row. The first to start working should hold it, and the second should see that immediately, without the lock outliving a reviewer who walks away.

The recipe

Claim for 30 minutes, then extend
ltc esc claim $ID --duration 30
ltc esc claim $ID --duration 30 # same holder: extends, isExtension true
services/review-desk.ts
const res = await lt.escalations.claim({ id, durationMinutes: 30 });

A claim sets assigned_to and assigned_until. The status stays pending; the lock exists only while the window is active.

Row state Resolve by id
Unclaimed Allowed
Live window, held by the caller Allowed
Live window, held by someone else 409
Caller’s own window, lapsed 409, re-claim to resolve
Someone else’s window, lapsed Allowed

The guarantee

The rule applies to every principal, superadmins included: a claim is a work lock, not an authorization scope. It is checked again inside the guarded resolve statement, so a lock that lapses mid-request cannot land a stale resolution. Claiming a row already held by someone else answers 409. See Faceted routing.