The archive_title single-flight in the harness ended before a title job stored its title, so a freeze in that gap ran a second model call and, when it failed, froze the list untitled while the job's title was then rejected. A title job now holds the service's titling lock shared from reading the list to storing its title, and Freeze holds it exclusively from reading the list to freezing it: a freeze waits for in-flight titles to be stored or fail, and no title job calls the model while a freeze runs. Adds controlled tests for both start orders, each paused after archive_title returns and before its title is stored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>