{"record":{"id":"de7c9955ee65d20b","repo":"sgl-project/sglang","slug":"model-index-json-minimax-h3-must-be-an-object","errorCode":null,"errorMessage":"model_index.json._minimax_h3 must be an object","messagePattern":"model_index\\.json\\._minimax_h3 must be an object","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":60,"sourceCode":"    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\n    def from_model_index(\n        cls, model_index: Mapping[str, Any]\n    ) -> MiniMaxH3ReleaseMetadata:\n        raw = model_index.get(\"_minimax_h3\")\n        if not isinstance(raw, Mapping):\n            raise ValueError(\"model_index.json._minimax_h3 must be an object\")\n        if raw.get(\"schema_version\") != 1:\n            raise ValueError(\"model_index.json._minimax_h3.schema_version must be 1\")\n        partition = raw.get(\"partition\")\n        if partition not in {\"fl2va\", \"ref2va\"}:\n            raise ValueError(\n                \"model_index.json._minimax_h3.partition must be one of \" \"fl2va, ref2va\"\n            )\n        tasks = _string_list(raw.get(\"tasks\"), \"model_index.json._minimax_h3.tasks\")\n        aliases = raw.get(\"task_aliases\", {})\n        if not isinstance(aliases, Mapping) or any(\n            not isinstance(key, str)\n            or not key\n            or not isinstance(value, str)\n            or not value\n            for key, value in aliases.items()\n        ):\n            raise ValueError(\n                \"model_index.json._minimax_h3.task_aliases must map strings to strings\"","sourceCodeStart":42,"sourceCodeEnd":78,"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#L42-L78","documentation":"MiniMaxH3ReleaseMetadata.from_model_index requires a mapping (JSON object) under the _minimax_h3 key in model_index.json. If the key is missing (None), a string, a list, or otherwise not a Mapping, config load fails.","triggerScenarios":"Loading a checkpoint whose model_index.json lacks the _minimax_h3 section entirely, or has it as a scalar/list; raised in _load_config at startup.","commonSituations":"Using a base/upstream checkpoint repackaged without the MiniMax H3 metadata, or a partial download that truncated the JSON.","solutions":["Verify model_index.json is complete and contains an object at _minimax_h3; re-download the release if truncated","If packaging a fine-tune, copy the _minimax_h3 block from the official release","Confirm you're loading a genuine MiniMax H3 release, not the base model"],"exampleFix":"// before\n{ \"t2v\": {...} }  // no _minimax_h3\n\n// after\n{ \"t2v\": {...}, \"_minimax_h3\": {\"schema_version\": 1, \"partition\": \"fl2va\", \"tasks\": [...]} }","handlingStrategy":"try-catch","validationCode":"def has_minimax_block(idx) -> bool:\n    from collections.abc import Mapping\n    return isinstance(idx.get(\"_minimax_h3\"), Mapping)","typeGuard":null,"tryCatchPattern":"try:\n    meta = MiniMaxH3ReleaseMetadata.from_model_index(json.load(open(path)))\nexcept ValueError as e:\n    fail_deploy(f\"invalid model_index.json: {e}\")","preventionTips":["Ship model_index.json from the official release unmodified","Verify downloads completed (file size/hash) before serving"],"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"}