{"record":{"id":"1614f885dce1641a","repo":"sgl-project/sglang","slug":"unsupported-task-alias-mapping-alias-r-targe","errorCode":null,"errorMessage":"unsupported task alias mapping {alias!r} -> {target!r}","messagePattern":"unsupported task alias mapping (.+?) -> (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py","lineNumber":116,"sourceCode":"            video_sigma_shift=video_sigma,\n            audio_sigma_shift=audio_sigma,\n        )\n        for task in metadata.tasks:\n            if canonical_minimax_h3_task(task) != task:\n                raise ValueError(\n                    f\"tasks must contain canonical task names, got {task!r}\"\n                )\n            if partition_for_task(task) != partition:\n                raise ValueError(\n                    f\"task {task!r} does not belong to partition {partition!r}\"\n                )\n        for alias, target in metadata.task_aliases.items():\n            if target not in metadata.tasks:\n                raise ValueError(\n                    f\"task alias {alias!r} targets undeclared task {target!r}\"\n                )\n            if canonical_minimax_h3_task(alias) != target:\n                raise ValueError(\n                    f\"unsupported task alias mapping {alias!r} -> {target!r}\"\n                )\n        return metadata\n\n    @property\n    def sigma_shift_scales(self) -> dict[str, float]:\n        return {\"video\": self.video_sigma_shift, \"audio\": self.audio_sigma_shift}\n\n    def canonical_task(self, task: str) -> str:\n        normalized = task.strip().lower()\n        canonical = self.task_aliases.get(normalized, normalized)\n        if canonical not in self.tasks:\n            raise ValueError(\n                f\"task {task!r} is not served by MiniMax H3 partition {self.partition!r}; \"\n                f\"supported tasks: {list(self.tasks)!r}\"\n            )\n        if partition_for_task(canonical) != self.partition:\n            raise ValueError(","sourceCodeStart":98,"sourceCodeEnd":134,"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#L98-L134","documentation":"An alias is only valid if canonical_minimax_h3_task(alias) equals the alias's declared target. This prevents arbitrary renames: aliases must be the officially recognized spellings that the canonicalizer already knows.","triggerScenarios":"task_aliases: {\"my_video\": \"text_to_video\"} where canonical_minimax_h3_task(\"my_video\") returns \"my_video\" (not \"text_to_video\") — an invented alias.","commonSituations":"Teams adding friendly local aliases to model_index.json expecting them to work; only the built-in alias table is honored.","solutions":["Use only the built-in recognized alias spellings from the canonicalizer","Pass the canonical task name in requests instead of inventing aliases","Update the canonical alias table in code if a new alias is genuinely required"],"exampleFix":"// before\n\"task_aliases\": {\"my_video\": \"text_to_video\"}\n// after\n\"task_aliases\": {\"t2v\": \"text_to_video\"}  // recognized alias only","handlingStrategy":"validation","validationCode":"assert all(canonical_minimax_h3_task(a) == t for a, t in aliases.items()), \"invented alias\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only use built-in aliases","Pass canonical names from clients instead of custom aliases"],"tags":["minimax-h3","task-aliases","canonicalization","model-index"],"backgroundTag":"schema-validation-failed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}