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
- Ensure requests flow through the MiniMax H3 prequeue stage before queueing
- Regenerate the plan with the current SGLang version so geometry is resolved as 'resolved_v2'
- 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
- Always pass requests through the prequeue stage in custom pipelines
- Add a pipeline assertion that geometry=='resolved_v2' before scheduling
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
- queued MiniMax H3 jobs require pre-queue resolved temporal d
- MiniMax H3 latent preparation requires pre-queue resolved_v2
- fl2va requires first_frame, last_frame, or both
- ref2va requires at least one of reference_image, reference_v
- t2va takes no conditioning inputs; pick another task
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/f5aba379e9dc3cc4.
Report an issue: GitHub.