26b79312f9
Adds `RuntimeThreadManager::fork_at_user_message(id, depth_from_tail)` — a sibling of the existing `fork_thread` that drops every turn from the Nth-from-tail user message onward and returns the dropped user input so the caller can pre-populate the composer. The existing `fork_thread` is left untouched. The new helper mirrors its copy loop but stops short of the cutoff turn, emitting a `thread.forked` event with backtrack provenance fields. Includes unit tests covering depth=0, depth=1, out-of-range error, and source-thread non-mutation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>