A failed kvstore write no longer ends the continuation chain.
The continuation's number came from the store alone, and the store is written after the schedule is registered. A kvstore write that failed left the note one number behind while the schedule under the new number was live, so the next continuation asked for that same number and Navidrome refused it with "already exists", because the running schedule id stays in the host's map until the callback returns. One failed write ended the chain one call later, and the rest of that night's mixes were never built.
Continue now takes the id of the callback that is asking and numbers the successor from both the note and the running id, so the collision cannot happen whatever the store says. It also no longer cancels the id it is running under. Three new tests cover a store that fails every write, the running id never being cancelled, and a running id that is not a continuation.
Upgrade: replace the .ndp in your plugins folder and restart Navidrome. Nothing in the settings changes.