pub fn render(messages: &[Message], live: bool) -> RenderedExpand description
Fold a conversation into where its turns sit in the message list, and the task endings it holds.
One walk serves both: a second boundary rule over the messages is how the two would come to disagree about where a turn begins, and the page is cut on the answer.
live is the session’s own turn state at this read, carried by the
CALLER rather than read off a frame: the frame that would say it
(system/session_state_changed) is emitted only behind an environment
variable forge never sets and appears in no capture, so the transport that
holds the seat’s frames derives the delivered rule instead (a turn is open
until its Result, or the error the CLI gives up with) and hands the
answer in. The settled reads - a transcript on disk, a span page - pass
false or the seat’s own flag where that is at hand.