pub fn render_explore(r: &ExploreReport, budget_bytes: usize) -> StringExpand description
Render an ExploreReport in no more than budget_bytes.
The context digest, then the blast radius under an impact: heading, then
the owner — in that order, because it is the order a reader stops at: what
this is, what it touches, who to ask. The co-change partners are not printed
again here: render_context has already listed them on its co-change
line, and ExploreReport::partners carries them for a caller reading the
report rather than the digest.
The budget is spent on whole lines (cap_bytes), so a path is never cut
in half — a half path still reads as a path, and a caller acts on it. The
header line is the one exception: rather than answer nothing at all, a
budget too small to hold it gets it cut to fit, on a character boundary.
Every budget the tool schema admits (200 tokens, 800 bytes) is many times a
real header, so that path is for a pathological target, not a small budget.