sgl-project/sglang · critical · ValueError

queued MiniMax H3 jobs require pre-queue resolved_v2 geometr

Error message

queued MiniMax H3 jobs require pre-queue resolved_v2 geometry

What it means

When a queued MiniMax H3 job is projected or its final outputs validated, the adapter reads the pre-queue generation plan and requires its shape['geometry'] to be 'resolved_v2'. This marker guarantees the prompt's spatial geometry (resolution/canvas) was resolved by the dedicated pre-queue stage before scheduling; if it is missing or a different geometry version, the queue invariant is broken.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py:285

    @staticmethod
    def _resolved_shape(batch: Req) -> dict[str, Any] | None:
        canonical = getattr(batch, "extra", {}).get("minimax_h3_canonical_request")
        if not isinstance(canonical, dict) or not all(
            key in canonical
            for key in ("schema", "task", "prompt", "conditions", "target")
        ):
            return None
        from sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.minimax_h3.resolved_plan import (
            minimax_h3_plan_from_batch,
        )

        plan = minimax_h3_plan_from_batch(batch)
        if plan is None:
            return None
        shape = plan.shape
        if str(shape.get("geometry") or "") != "resolved_v2":
            raise ValueError(
                "queued MiniMax H3 jobs require pre-queue resolved_v2 geometry"
            )
        if shape.get("frame_count") is None:
            raise ValueError(
                "queued MiniMax H3 jobs require pre-queue resolved temporal dimensions"
            )
        return shape

    def project_queued_job_fields(self, batch: Req) -> dict[str, str]:
        shape = self._resolved_shape(batch)
        if shape is None:
            return {}
        fields: dict[str, str] = {}
        if shape.get("width") is not None and shape.get("height") is not None:
            fields["size"] = f"{int(shape['width'])}x{int(shape['height'])}"
        queued_frame_count = shape.get("frame_count")
        if queued_frame_count is not None:
            fields["seconds"] = _format_video_seconds(

View on GitHub (pinned to 0132848349)

Solutions

  1. Ensure requests flow through the MiniMax H3 prequeue stage before queueing
  2. Regenerate the plan with the current SGLang version so geometry is resolved as 'resolved_v2'
  3. Inspect minimax_h3_plan_from_batch(batch).shape to see the actual geometry value
Defensive patterns

Strategy: try-catch

Validate before calling

plan = minimax_h3_plan_from_batch(batch)
if plan is None or str(plan.shape.get("geometry") or "") != "resolved_v2":
    # re-run prequeue resolution before queueing
    ...

Try / catch

try:
    fields = adapter.project_queued_job_fields(batch)
except ValueError as e:
    if "resolved_v2 geometry" in str(e):
        batch = run_prequeue_resolution(batch)  # then retry
    else:
        raise

Prevention

When it happens

Trigger: A batch/Req reaching project_queued_job_fields or validate_final_outputs_sync whose embedded minimax_h3 plan has shape.geometry absent or not equal to 'resolved_v2' — e.g. bypassing the prequeue stage, or a stale plan from an older geometry schema version.

Common situations: Custom pipelines that skip the MiniMax H3 prequeue resolution stage; upgrading SGLang where the geometry schema version changed; hand-crafted Req objects in tests.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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