fix: Unblock `watch` loop so interruptible persistent tasks restart on file changes (#12509)
## Summary
Fixes #12505
- **Cause**: The fire-and-forget change (PR #12449) moved a
`TaskTracker` into a detached `tokio::spawn` for persistent tasks. Since
persistent processes run forever, the tracker's `mpsc::Sender` clone is
never dropped, which blocks `ExecutionTracker::finish()` indefinitely.
This prevents `Run::run()` from returning, starving the watch loop of
the ability to process any subsequent file-change events.
- **Fix**: Use a no-op `TaskTracker` (throwaway channel) for
fire-and-forget persistent tasks so the real execution tracker can
complete.
- **Observability**: Adds `debug!` traces at key decision points in the
watch loop (event receipt, run processing, task stopping, run
completion) to make future watch-mode issues diagnosable with `-vv`.