{"record":{"id":"2194940ce3017546","repo":"sgl-project/sglang","slug":"path-must-be-a-non-empty-list","errorCode":null,"errorMessage":"{path} must be a non-empty list","messagePattern":"(.+?) must be a non-empty list","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py","lineNumber":36,"sourceCode":"    partition_for_task,\n)\nfrom sglang.multimodal_gen.runtime.server_args import ServerArgs\n\n_MINIMAX_H3_QUALITY_WORKLOAD = {\n    \"task\": \"t2va\",\n    \"width\": 1344,\n    \"height\": 768,\n    \"fps\": 24,\n    \"frame_count\": 124,\n    \"num_inference_steps\": 50,\n    \"flow_shift\": 12.0,\n    \"audio_flow_shift\": 3.0,\n}\n\n\ndef _string_list(value: Any, path: str) -> tuple[str, ...]:\n    if not isinstance(value, list) or not value:\n        raise ValueError(f\"{path} must be a non-empty list\")\n    values = tuple(value)\n    if any(not isinstance(item, str) or not item for item in values):\n        raise ValueError(f\"{path} must contain non-empty strings\")\n    if len(set(values)) != len(values):\n        raise ValueError(f\"{path} must not contain duplicates\")\n    return values\n\n\n@dataclass(frozen=True)\nclass MiniMaxH3ReleaseMetadata:\n    schema_version: int\n    partition: str\n    tasks: tuple[str, ...]\n    task_aliases: Mapping[str, str]\n    video_sigma_shift: float\n    audio_sigma_shift: float\n\n    @classmethod","sourceCodeStart":18,"sourceCodeEnd":54,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py#L18-L54","documentation":"from_model_index uses _string_list to validate list-of-string fields in model_index.json (e.g. _minimax_h3.tasks). The value must be a non-empty Python list; None, a missing field coerced to None, a string, an empty list, or a tuple all fail.","triggerScenarios":"_minimax_h3.tasks missing from model_index.json, set to null, \"\", or an empty array during config load.","commonSituations":"Minimal hand-written model_index.json for a local fine-tune, or a schema migration that dropped the field.","solutions":["Add the required non-empty list, e.g. \"tasks\": [\"ref2v\"], under _minimax_h3","Copy the model_index.json from the official release and edit only what you must","Validate your model_index.json against the release schema before deploying"],"exampleFix":"// before\n\"_minimax_h3\": {\"schema_version\": 1, \"partition\": \"ref2va\"}\n\n// after\n\"_minimax_h3\": {\"schema_version\": 1, \"partition\": \"ref2va\", \"tasks\": [\"ref2v\"]}","handlingStrategy":"validation","validationCode":"def valid_string_list(v) -> bool:\n    return isinstance(v, list) and len(v) > 0 and all(isinstance(s, str) and s for s in v)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Schema-validate model_index.json before deployment","Start from the official release file when packaging fine-tunes"],"tags":["minimax-h3","model-index","config-validation"],"backgroundTag":"config-schema-validation-failed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}