Final-review findings on convert_treeless_checkout:
- A local tag that the --tags refetch would clobber made git exit non-zero
after the objects had landed, and check=True raised before the
completeness check ran, so every update warned and stayed tree:0. The
offline history check is now the verdict, not the fetch's exit status.
- Git older than 2.36 has no --refetch; such a checkout is left as it is
instead of printing git's usage text as a warning on every update.