Unbranded iterables (a generator a macro returned, find()'s iterator) are materialized —
capped — before dispatch, so a bare iterator still renders as whatever its members are.
Branded kinds never take this path: getRegions returns a branded collection that happens to
be iterable, and flattening it would lose the features it carries.
Calculation settles here, not in the renderers. A report read before the engine drains is wrong in quiet ways — formula results absent, used ranges short, every name reported unused — which is why the workbook is the FIRST parameter rather than an option a caller can forget. One settle covers every kind (all of a book's sheets, names and formulas share its engine), and it is the whole async surface: the renderers themselves are synchronous, and a caller invoking one directly is responsible for settling first.
Renders any renderable SDK object as its markdown report.