# Refuse deleting a lineup end a live link still names · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/49386270827dc090e34f321f25db27aacb31ef06)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: 49386270827dc090e34f321f25db27aacb31ef06

Requested commit: 49386270827dc090e34f321f25db27aacb31ef06

Commit: 49386270827dc090e34f321f25db27aacb31ef06

Tree: 90f47d18b0be434308b96973adf0209ba86ac82b

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Refuse deleting a lineup end a live link still names

A teammate's new lineup from a shared origin could land first; deleting a
lineup on a canvas that had not drawn it yet took the origin with it, and
the server accepted that delete. The teammate's link was left without its
origin, so hydration dropped the lineup for everyone while the chip said
synced.

- Server: with the new opt-in applyBatch flag checkLineupEndDeletes, an
  origin or landing delete fails with LINEUP_END_IN_USE while a live link
  on its page names it. Links deleted earlier in the batch are already
  tombstones. Clients without the flag (shipped builds, the web build that
  sends only checkLineupLinkEnds) keep today's behavior.
- Client: sends the flag; the outbox claims link deletes first and holds an
  origin or landing delete while a link delete on its page is still unsent
  (restart key order, batch cap, another client id, backoff).
- The refusal lands in attention with a plain message. Keep mine asks
  again; use theirs brings back the origin with the teammate's lineup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

```

## Parents

- [5b0abd0b7a161fdd95f1dc27d244f980efb32436](https://git.cafe/dara/icarus/commit/5b0abd0b7a161fdd95f1dc27d244f980efb32436?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/49386270827dc090e34f321f25db27aacb31ef06?format=markdown)
