Reports

Every conversion result exposes output and a ConversionReport. Treat the report as a migration work list, not as optional logging.

<?php
$status = $result->status();
$complete = $result->isComplete();
$lossless = $result->isLossless();
$exact = $result->isExact();
$counts = $result->report->countsByKindAndConstruct();
Issue kind Meaning Status
unsupported No supported target representation exists. Blocked
lossy Output exists but source information was discarded. Review
approximated Output preserves intent through a different construct. Tracked

isComplete() excludes unsupported mappings. isLossless() also excludes lossy mappings. isExact() requires an empty report.

Project results aggregate all file reports and keep parser, effective reference, and project-reference problems separate. Review those diagnostics even when conversion itself is exact.