sgl-project/sglang · critical · ValueError

{path} must not contain duplicates

Error message

{path} must not contain duplicates

What it means

_string_list rejects list fields in model_index.json that contain duplicate entries. Duplicate task names would make routing ambiguous, so config load fails closed.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py:41

    "task": "t2va",
    "width": 1344,
    "height": 768,
    "fps": 24,
    "frame_count": 124,
    "num_inference_steps": 50,
    "flow_shift": 12.0,
    "audio_flow_shift": 3.0,
}


def _string_list(value: Any, path: str) -> tuple[str, ...]:
    if not isinstance(value, list) or not value:
        raise ValueError(f"{path} must be a non-empty list")
    values = tuple(value)
    if any(not isinstance(item, str) or not item for item in values):
        raise ValueError(f"{path} must contain non-empty strings")
    if len(set(values)) != len(values):
        raise ValueError(f"{path} must not contain duplicates")
    return values


@dataclass(frozen=True)
class MiniMaxH3ReleaseMetadata:
    schema_version: int
    partition: str
    tasks: tuple[str, ...]
    task_aliases: Mapping[str, str]
    video_sigma_shift: float
    audio_sigma_shift: float

    @classmethod
    def from_model_index(
        cls, model_index: Mapping[str, Any]
    ) -> MiniMaxH3ReleaseMetadata:
        raw = model_index.get("_minimax_h3")
        if not isinstance(raw, Mapping):

View on GitHub (pinned to 0132848349)

Solutions

  1. De-duplicate the list while preserving one copy of each task
  2. Regenerate model_index.json from official tooling after any merge
  3. Diff against the upstream release file to spot unintended merges

Example fix

// before
"tasks": ["ref2v", "ref2v"]

// after
"tasks": ["ref2v"]
Defensive patterns

Strategy: validation

Validate before calling

def no_duplicates(v) -> bool:
    return isinstance(v, list) and len(set(v)) == len(v)

Prevention

When it happens

Trigger: _minimax_h3.tasks (or another validated list) containing the same string twice, e.g. after merging two configs.

Common situations: Merging model_index.json files from two releases, or copy-paste duplication while hand editing.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/bcd09b2b4b3c1e14. Report an issue: GitHub.