Opened a PR for a conversation_metadata race that's been biting self-hosted:
the selected repo gets wiped from running conversations (UI flips to "no repo
connected"). Root cause is the conversation-start webhook racing the create,
reading a stub, and writing the metadata row back with the git fields nulled.
Fix makes selected_repository / selected_branch / git_provider write-once
(COALESCE), and folds in the duplicate-key insert-race recovery too. Same race
as #14476, but the data-loss symptom the open retry PRs (#14579, #14940) don't
cover.
Green CI + regression tests, reproduced ~40% before / 0 after on a self-hosted
SQLite box. Would appreciate a review 🙏
github.com/OpenHands/OpenHands/pull/15015