The tests exercise blocked and busy reports, scope names, debugger pauses,
summary-before-sampling, input event counts, idle suppression, contributors and
report retention. They drive UiTrail directly and run with an injectable clock.
HangWatchdog watches UI phase timestamps and writes a report when a non-idle
phase exceeds its threshold. It records the phase, handled input count and open
scope trail, samples every thread through StackTrace, and classifies the UI as
blocked, busy or waiting repeatedly. Reports support follow-ups, recovery,
custom contributors and retention.
The scope trail is private to Diagnostics. The default report directory is
HOME/<process>/hangs, overridable with MODULES_HANG_DIR, so the module needs no
AppStorage dependency.