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
- De-duplicate the list while preserving one copy of each task
- Regenerate model_index.json from official tooling after any merge
- 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
- Diff merged model_index.json against upstream
- De-duplicate task lists after any config merge
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
- task {task!r} is not served by MiniMax H3 partition {self.pa
- {path} must be a non-empty list
- {path} must contain non-empty strings
- model_index.json._minimax_h3 must be an object
- model_index.json._minimax_h3.partition must be one of fl2va,
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/bcd09b2b4b3c1e14.
Report an issue: GitHub.