update_filename() still skipped to the next free run number on every edit and refresh, so the name was always free by the time Run was clicked and the guard never fired. The name is now exactly what the fields say (label turns red on a clash); on Run, an existing target pops "File already exists", bumps the run number by one and does nothing else. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>