Review findings:
- The teardown makes the API refuse new previews before it detaches the
monitor's callbacks: an image in hand that already read the preview
queue no longer starts a preview worker during exit (Python 3.12+
refuses that thread and logs a traceback). New
refuse_auto_thumbnails().
- The teardown imports its bounds inside each step and falls back to the
standard logger, so a failing import never skips the other steps.
- The exit child keeps its library and log in its own folder
(PROMPT_MANAGER_DATA_DIR), reports watchdog's threads too, fails with
the child's output on a hang, and rejects "Error while stopping".
- TESTING.md: "Background threads at exit".