7dc796463d
Both steer sites now build the row through one helper, prompt_builder.steer_user_row: a role:user row with display_kind="steer" and no leading blank lines. The alternation repair (_merge_consecutive_users) skips a steer-typed prev row, so a run that ended right after a steered batch (Ctrl-C, interrupt) does not get the next real prompt merged INTO the already-persisted steer row — which would have rewritten it in place and re-broken live≠replay parity, the exact class this PR fixes. TUI/desktop history projects the steer row as the user's own words instead of the model-facing marker wrapper; 'steer' joins the display_kind union. The compression anchor scan keeps its tool-row branch for transcripts persisted before this change and its docstring says so.