mirror of
https://github.com/jason5ng32/MyIP.git
synced 2026-11-04 08:55:47 +00:00
publish took the combined signal (caller timeout + lock loss) and treated any abort as a lost lock, so a scheduled or boot timeout firing between renames skipped the rollback and cleanup while this process still held the lock, leaving a mixed set and .next / .bak files. The combined signal still cancels, but only the lock's own signal now stops rollback and cleanup. Once every rename is done, only a lost lock keeps the version from being recorded, so a timeout landing after a complete publish no longer forces a re-download. The lock-loss test now trips the engine's real onCompromised handler; a new test covers the timeout path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CauPFca6bYL9qpuYEmsU9H