fn boundary_candidates(held: &Conversation) -> Vec<TranscriptAnchor>Expand description
The rows a walk below the window may start from, the walk’s own stop first and the rest of the window behind it.
Every candidate passes every rule that can be checked without the
file - has_a_row for the forged, the dispatch check for sub-agents -
and the file has the last word: frames the CLI streams
and never writes pass every rule and still have no row, so a walk tries
these in turn rather than trusting the first (#2280). Answer one empty
and the client reads cursor: null as the end of the history.
A stop never lands on a result without its call. The page below a stop serves rows strictly older than it, so the row just beneath the stop is that page’s newest: a result there whose call sits beneath it would reach the fold without its call, drawn with its output nowhere - so the walk steps past result rows to the first row that is not one. A window holding nothing but results still names the last of them rather than nothing: a stop on a result serves it whole, and an unnamed window answers as the end of the history.