053f8b1b17
Harden the cherry-picked fix (#42858, credit @PINKIIILQWQ; #100613 by @moon2sun covers the same gap) per the sweeper review on #42858: - Snapshot status/pid/claim INSIDE the archive txn so the kill only happens when this caller wins the archive transition; a losing concurrent archiver returns False without signalling anything. - Signal only tasks that were actually running (never-claimed tasks skip the no-op helper call entirely). - Kill runs post-commit: _poll_worker_exit can block ~5s and must not hold the SQLite write lock. Safe because archived is terminal — no dispatcher can respawn off the released claim. - Termination outcome lands as its own archive_worker_termination event so the archived event stays atomic with the status flip. - 2 invariant tests (running task -> signalled + audited; non-running -> no signal, no event), live E2E: worker survived archive on main, terminated (<0.3s, clean SIGTERM) with the fix. Port trigger: lobehub PR scout; same bug class as lobehub#19220's "failed verify cannot disarm the schedule" family (lifecycle actions must reach the live process, not just the DB row).