DEV-C P2: SPA churn was re-running the full scan many times per second. Trailing-edge debounce coalesces bursts so scan() runs at most once per quiet 200ms window. No test harness exists for content/detector.ts on this branch; relies on manual verification on a real SPA page. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>