<!-- Общий фрагмент для каждой роли, которая делает коммит в общем дереве. Правьте здесь. -->

## Замок посадки — что он даёт и чего не даёт

<!-- beadloom:carries=landing-lock -->

Две вещи удерживают параллельных агентов от столкновения, и это разные вещи. **От
одновременной правки одного ФАЙЛА защищают непересекающиеся области**, которые
`beadloom waves` вывела для бидов волны. **От чередования коммитов защищает merge-slot** —
и только в той форме вызова, которая это даёт.

Различие не педантичное. Смешение этих двух гарантий обнаружили дважды и независимо, с
разницей в девять дней, два агента, которые не пересекались; между этими датами трижды шли
параллельные волны в уверенности, что держат замок, который не давал ни одной из них. Те
коммиты не столкнулись потому, что наборы файлов не пересекались, — а это ровно то свойство,
ради которого замок и существует.

Измерено на bd 1.0.4: сам примитив исправен. `acquire` на занятом слоте возвращает код 1, и
из 32 одновременных попыток в четырёх раундах побеждала ровно одна за раунд. Ничего не давал
способ, которым этот поток его запрашивал.

- **Называйте владельца, и называйте его идентификатором своего бида.** По умолчанию
  владелец — актор трекера (`$BEADS_ACTOR`, затем `git user.name`, затем `$USER`), то есть
  ОДНА личность для всех ролей на одной машине: слот не отличит захват соседа от вашего
  собственного. С `--holder <bead-id>` владельцем становится бид, а у бида есть статус,
  который можно проверить.
- **Читайте код возврата, читать больше нечего.** Ненулевой код означает, что слот НЕ ваш.
  Повторите попытку или садитесь позже, но не коммитьте.
- **Не просите его ждать.** Флаг `--wait` дописывает вас в очередь, которую никто не
  разбирает, и возвращает управление сразу. Ожидающих оттуда тоже никто не удаляет, поэтому
  очередь копит личности из давно закончившихся сессий. Нужно ждать — напишите цикл и
  ограничьте его.
- **Освобождайте с указанием владельца.** Освобождение без владельца снимает чужой захват,
  в том числе живого соседа, и рапортует об успехе. bd сверяет владельца только тогда,
  когда вы его передали.

```bash
bd merge-slot acquire --holder <bead-id>   # 0 — слот ваш; любой другой код — не ваш
# ... добавьте в индекс только свои файлы по путям, затем коммит ...
bd merge-slot release --holder <bead-id>   # единственная форма освобождения, которую bd сверяет
```

**И говорите, на какую из двух гарантий вы опираетесь.** Если вы делаете коммит, пока сосед
правит, слот упорядочил ваши коммиты и ничто не упорядочило ваши правки. Это задача плана
волн, и `beadloom waves` сообщает её как среду `landing-order` в каждом плане любого размера.
