Pipeline failure surfaces only first 100 chars; non-missing-model errors are opaque #23

Open
opened 2026-09-18 07:03:42 +00:00 by Mark · 0 comments
Owner

Reproduction

  1. Open AuraFrame, load any image.
  2. Trigger any pipeline whose failure is NOT a missing-model error — for example, run face restore against an image that fails GFPGAN inference (e.g. an unsupported dtype, an OOM during the ONNX session, or a CPU/CUDA provider mismatch mid-run).
  3. Observe the status panel and the optional popup.

Observed

  • MainWindow._on_pipeline_failed (auraframe/gui/main_window.py) calls self.progress_panel.set_status(f"Failed: {error[:100]}") — the user sees only the first 100 chars of an error message that may include a multi-line traceback from PipelineEngine.run (pipeline/pipeline_engine.py:109 emits f"Pipeline failed: {e}\n{traceback.format_exc()}").
  • The "Open Model Manager" popup (line 820, 823-843) only fires when "not downloaded" in error.lower() or "is not available" in error.lower(). All other failure categories — compute errors, image dtype mismatches, Numpy/OpenCV version skew, transient CUDA OOM — fall through to the truncated status line with no popup, no log path, no "Show details" affordance.

Root cause

  • auraframe/gui/main_window.py:813-821 — single 100-char truncation + substring-match gate.
  • auraframe/pipeline/pipeline_engine.py:107-110 — the engine already produces a fully-formatted traceback; the GUI drops it.

Expected

  • A user-visible error that distinguishes categories ("model missing", "compute error", "image invalid", "internal") and exposes the full message via either a copy-to-clipboard button or a "Show details" expansion.
  • The progress panel's status line should not silently truncate the full error string — at minimum, the leading sentence and error category should be visible without a click.

Severity

Medium — fails silently for any failure mode outside the missing-model path. Users cannot diagnose or report these failures without re-running with verbose logging enabled.

## Reproduction 1. Open AuraFrame, load any image. 2. Trigger any pipeline whose failure is NOT a missing-model error — for example, run face restore against an image that fails GFPGAN inference (e.g. an unsupported dtype, an OOM during the ONNX session, or a CPU/CUDA provider mismatch mid-run). 3. Observe the status panel and the optional popup. ## Observed - `MainWindow._on_pipeline_failed` (auraframe/gui/main_window.py) calls `self.progress_panel.set_status(f"Failed: {error[:100]}")` — the user sees only the first 100 chars of an error message that may include a multi-line traceback from `PipelineEngine.run` (pipeline/pipeline_engine.py:109 emits `f"Pipeline failed: {e}\n{traceback.format_exc()}"`). - The "Open Model Manager" popup (line 820, 823-843) only fires when `"not downloaded" in error.lower() or "is not available" in error.lower()`. All other failure categories — compute errors, image dtype mismatches, Numpy/OpenCV version skew, transient CUDA OOM — fall through to the truncated status line with no popup, no log path, no "Show details" affordance. ## Root cause - `auraframe/gui/main_window.py:813-821` — single 100-char truncation + substring-match gate. - `auraframe/pipeline/pipeline_engine.py:107-110` — the engine already produces a fully-formatted traceback; the GUI drops it. ## Expected - A user-visible error that distinguishes categories ("model missing", "compute error", "image invalid", "internal") and exposes the full message via either a copy-to-clipboard button or a "Show details" expansion. - The progress panel's status line should not silently truncate the full error string — at minimum, the leading sentence and error category should be visible without a click. ## Severity Medium — fails silently for any failure mode outside the missing-model path. Users cannot diagnose or report these failures without re-running with verbose logging enabled.
Sign in to join this conversation.
No description provided.