sgl-project/sglang · critical · ValueError
model_index.json._minimax_h3.schema_version must be 1
Error message
model_index.json._minimax_h3.schema_version must be 1
What it means
The _minimax_h3 metadata block in model_index.json must declare schema_version exactly equal to 1. Any other value (including missing, which becomes None) is rejected so that future format changes fail closed rather than being misparsed.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py:62
@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):
raise ValueError("model_index.json._minimax_h3 must be an object")
if raw.get("schema_version") != 1:
raise ValueError("model_index.json._minimax_h3.schema_version must be 1")
partition = raw.get("partition")
if partition not in {"fl2va", "ref2va"}:
raise ValueError(
"model_index.json._minimax_h3.partition must be one of " "fl2va, ref2va"
)
tasks = _string_list(raw.get("tasks"), "model_index.json._minimax_h3.tasks")
aliases = raw.get("task_aliases", {})
if not isinstance(aliases, Mapping) or any(
not isinstance(key, str)
or not key
or not isinstance(value, str)
or not value
for key, value in aliases.items()
):
raise ValueError(
"model_index.json._minimax_h3.task_aliases must map strings to strings"
)
scales = raw.get("sigma_shift_scales")View on GitHub (pinned to 0132848349)
Solutions
- Set "schema_version": 1 (integer) in the _minimax_h3 block
- If the release genuinely uses a newer schema, upgrade sglang to the matching version
- Regenerate model_index.json with the tooling matching your sglang version
Example fix
// before
"_minimax_h3": {"schema_version": 2, ...}
// after
"_minimax_h3": {"schema_version": 1, "partition": "fl2va", "tasks": ["t2v"]} Defensive patterns
Strategy: try-catch
Validate before calling
def schema_version_ok(idx) -> bool:
return isinstance(idx.get("_minimax_h3", {}).get("schema_version"), int) and idx["_minimax_h3"]["schema_version"] == 1 Try / catch
try:
meta = MiniMaxH3ReleaseMetadata.from_model_index(idx)
except ValueError as e:
if 'schema_version' in str(e):
upgrade_or_repackage()
raise Prevention
- Match sglang version to the release that produced the checkpoint
- Pin the metadata schema version in packaging scripts
When it happens
Trigger: schema_version set to 2, "1" (string), 1.0 mismatch handling, or omitted; raised during from_model_index/_load_config.
Common situations: Metadata written by a newer/older release format, or hand-authored without the version field.
Related errors
- unsupported tar material header schema: {header.get('schema'
- 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
- {path} must not contain duplicates
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/db2a0426ac25fb5a.
Report an issue: GitHub.