class documentation

Strategy that renders an ordered list of Change instances.

A renderer is the presentation half of the report pipeline: the structural diff and semantic annotation upstream are format-agnostic, and each concrete renderer turns the single sorted Change sequence into one output format. build_change_report selects the renderer for the requested fmt and is the only caller; renderers hold no state between calls.

Return type intentionally varies by format (str for text, list[dict] for records) — the contract is "produce the report in my format", and each concrete subclass narrows the return type in its own docstring.

Method render Render changes (already sorted) into this renderer's output format.
@abstractmethod
def render(self, changes: list[Change]) -> str | list[dict]:

Render changes (already sorted) into this renderer's output format.