SELECT in get_messages_as_conversation() was missing finish_reason, so assistant messages round-tripped through replay (including /branch copies) silently dropped the provider's stop signal. Adds it to the SELECT, restores it on assistant rows, and locks it in with a round-trip test.