Skip to content

Generic error strings hide actionable causes #294

Closed

Description

@thcp

Location: runner.py:201
Severity: LOW

“Audio processing failed. Please try again.” is shown for OOM, bad file, GPU fault, and disk-full alike. The stderr tail is already captured in separate() — it just never reaches the user or the error record.
Store the classified cause in Job.error_detail (shown behind a “details” disclosure — error reporting, not a feature). Classify at least: out-of-memory, unsupported-device, disk-full, bad-input.
Any failure is answerable from disk, after the fact, without a reproduction: rotating stemdeck.log (server) + non-truncating backend.log (desktop) + jobs/failed/<id>/error.txt with device, model, timings, and stderr tail.
StemDeck runs htdemucs_6s, fixed, with default settings (no --shifts, default overlap). Assessment of where that sits in 2026:
Verdict: yes — and your instinct about the architecture is exactly what the field converged on. No single model splits a full mix into lead + backing well; the established approach is a second pass over the vocals stem with a “karaoke” (backing-vocal extraction) model:
Phases 1–3 are pure hardening — no feature surface changes, immediately shippable one PR per finding. Phase 4 is the state-of-the-art jump, and lands on infrastructure phases 1–2 make debuggable.

From the health report. Part of #272 (Phase 1 — Evidence).

Activity

  1. added a commit that references this issue on Jul 17, 2026
    378c64f
  2. self-assigned this
    on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

observabilityLogging, monitoring, diagnosability

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions