LykosAI/StabilityMatrix · error · ValidationException

No Clip Model Selected

Error message

No Clip Model Selected

What it means

When building the Wan workflow's text-encoder stage, the card requires a CLIP/umt5 text-encoder model selection. If SelectedClipModel is null, SelectedClipModel?.RelativePath is null and the builder throws 'No Clip Model Selected' rather than creating a CLIPLoader with an empty name. This validates that every required loader node has a concrete file.

Solutions

  1. Select a CLIP text encoder (e.g. umt5-xxl) in the Wan model card's clip dropdown before generating.
  2. Ensure the encoder .safetensors/.gguf is placed in the shared text_encoders (clip) folder and rescan if missing.
  3. Re-pick the encoder after moving/restoring files, then save the workflow.

Example fix

// before
var clipName = SelectedClipModel?.RelativePath ?? throw new ValidationException("No Clip Model Selected");
// after
if (SelectedClipModel is null)
    throw new ValidationException("No Clip Model Selected");
var clipName = SelectedClipModel.RelativePath;
Defensive patterns

Strategy: validation

Validate before calling

if (card.SelectedClipModel is null)
    throw new ValidationException("No Clip Model Selected");

Type guard

bool HasClip(WanModelCardViewModel c) => c.SelectedClipModel != null && !string.IsNullOrEmpty(c.SelectedClipModel.RelativePath);

Try / catch

try { card.ApplyStep(e); }
catch (ValidationException ex) when (ex.Message == "No Clip Model Selected")
{ /* prompt user to choose a text encoder */ }

Prevention

When it happens

Trigger: Generating a Wan workflow without selecting a CLIP/umt5 text encoder in the model card, hitting WanModelCardViewModel.cs:211.

Common situations: User picked the unet and VAE but skipped the text-encoder dropdown; the umt5 t5 encoder file is not in the shared clip/text_encoders folder; saved workflow's clip path no longer resolves after a file move.

Understand the failure class

Background: "Must pass :limit option" / "Missing required option" — required option errors explained — this error's family across 41 libraries.

Related errors


AI-assisted analysis of LykosAI/StabilityMatrix@af93d6ef57 (2026-09-12). Data as JSON: /api/errors/05ec8291267f6b4f. Report an issue: GitHub.

Appendix: source

Thrown at StabilityMatrix.Avalonia/ViewModels/Inference/WanModelCardViewModel.cs:211

                        SelectedModel?.RelativePath ?? throw new ValidationException("Model not selected"),
                    WeightDtype = SelectedDType ?? "fp8_e4m3fn_fast",
                }
            );
        }
        
        var modelSamplingSd3 = e.Nodes.AddTypedNode(
            new ComfyNodeBuilder.ModelSamplingSD3
            {
                Name = e.Nodes.GetUniqueName(nameof(ComfyNodeBuilder.ModelSamplingSD3)),
                Model = modelLoader.Output,
                Shift = Shift,
            }
        );

        e.Builder.Connections.Base.Model = modelSamplingSd3.Output;
        
        var clipName =
            SelectedClipModel?.RelativePath ?? throw new ValidationException("No Clip Model Selected");

        // The GGUF loader variant can also load .safetensors encoders
        var clipOutput = SelectedClipModel is { IsGguf: true }
            ? e
                .Nodes.AddTypedNode(
                    new ComfyNodeBuilder.CLIPLoaderGGUF
                    {
                        Name = e.Nodes.GetUniqueName(nameof(ComfyNodeBuilder.CLIPLoaderGGUF)),
                        ClipName = clipName,
                        Type = "wan",
                    }
                )
                .Output
            : e
                .Nodes.AddTypedNode(
                    new ComfyNodeBuilder.CLIPLoader
                    {
                        Name = e.Nodes.GetUniqueName(nameof(ComfyNodeBuilder.CLIPLoader)),

View on GitHub (pinned to af93d6ef57)