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

  1. Set "schema_version": 1 (integer) in the _minimax_h3 block
  2. If the release genuinely uses a newer schema, upgrade sglang to the matching version
  3. 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

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


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/db2a0426ac25fb5a. Report an issue: GitHub.