Always "extract", so JSON consumers can identify the command
Whether this was a dry run, so no files were touched
Error messages, one per failure
Markdown files whose content was rewritten (empty in a dry run)
Number of markdown files examined
Image files created (empty in a dry run)
Number of inline data URIs rewritten to file links
Whether the run completed without errors
Warning messages
Summary of an extract run, in the shape emitted by
--json.