## ADDED Requirements ### Requirement: Отказ учёта доставки называет класс причины Система SHALL логировать отказ, случившийся **после** того, как тело легло в архив, но до появления учётной записи, так, чтобы владелец отличал **занятость базы** от прочих причин. Различается именно занятость: у неё уже есть доменная ошибка, и она означает конкуренцию за запись, которая будет повторяться. Расширять признак до «обстоятельств вообще» система MUST NOT, хотя предикат с таким смыслом в проекте есть: он включает ещё и отмену работы снаружи, а на этом пути отмена невозможна по построению — учёт ведётся на контексте, переживающем обрыв соединения. Назвать отменённую работу занятостью базы значило бы отправить владельца искать конкуренцию там, где её нет. Уровень при этом остаётся `ERROR` независимо от класса: тело лежит в архиве без учётной записи, то есть осиротело, и вернуть его в журнал может только пересборка. Занятость базы этого не отменяет — она объясняет причину, а не снимает работу. Смысл различения в другом: занятость означает конкуренцию за запись, которая будет повторяться и лечится не тем же, чем лечится сбой диска или испорченная база. #### Scenario: Занятая база при учёте доставки видна как отдельный класс - **WHEN** запись учёта доставки не проходит из-за занятости базы - **THEN** отказ логируется на уровне `ERROR` вместе с путём тела в архиве - **AND** запись отличает занятость базы от прочих причин отказа - **AND** тот же отказ по другой причине этого признака не несёт