Skip to content

A killed separation can come back as a finished song with a truncated or missing file #969

Closed

Description

@thcp

Problem

ffmpeg wrote original.wav and mix.wav straight to their final names, and the Lead + Backing split did the same for lead_vocals.wav and backing_vocals.wav. A failed split also left a lone lead_vocals.wav behind. When the app was killed part way and the song was rebuilt from its folder (the registry said it was still running, or had lost it), any folder with one stem counted as a finished song. The result was a "done" song with a truncated original, a missing mix, or a lead vocal without its backing.

Who is affected: everyone, after a kill or a power loss during a separation. Narrow, but the song looks finished when it is not.

Where

  • app/pipeline/collect.py:83 write to a dot temp name, then os.replace (:91)
  • app/pipeline/vocal_split.py:103 the split pair moved in, removed whole on failure (:107)
  • app/core/registry.py:796 STEMS_COMPLETE, :799 mark_stems_complete, :859 the rebuild check

Current state

Fixed in PR #898 and PR #901 (merged into big-release, ships with 0.21.0).

Proposed fix

What the merged fixes do:

Verification

  • pytest tests/test_pipeline_vocal_split.py -k test_a_failed_split_leaves_no_lead_vocals
  • pytest tests/test_pipeline_collect_mix.py
  • pytest tests/test_stem_completeness.py, in particular test_a_song_killed_part_way_is_never_rebuilt_as_done

Activity

  1. added
    bugSomething isn't working
    reliabilityStability, resource management, race conditions
    on Nov 3, 2026
  2. thcp commented on Nov 3, 2026

    @thcp
    CollaboratorAuthor

    This is fixed in PRs #898 and #901, merged into big-release. It ships with 0.21.0, so I am closing this issue now.

    This comment was written with the help of AI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingreliabilityStability, resource management, race conditions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions