The reactor was inserting the run record first, then creating the K8s Job, then updating the record with the job name. If the update failed (SQLITE_BUSY), the run would be stuck in 'running' with no job name, making it invisible to the poller. Now: create K8s Job first, then insert the run record with job name already set in a single atomic write. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>