{"record":{"id":"703dc49468eac002","repo":"sgl-project/sglang","slug":"minimax-h3-diffgenerator-requires-save-output-true","errorCode":null,"errorMessage":"MiniMax H3 DiffGenerator requires save_output=True and a non-empty output_path for validated file delivery","messagePattern":"MiniMax H3 DiffGenerator requires save_output=True and a non-empty output_path for validated file delivery","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py","lineNumber":243,"sourceCode":"        \"\"\"Apply the HTTP task/delivery gate to offline requests as well.\"\"\"\n\n        task = getattr(sampling_params, \"task\", None)\n        self.validate_task_gate(task, provided=task is not None)\n        sampling_params.task = canonical_minimax_h3_task(task)\n        if getattr(sampling_params, \"enable_frame_interpolation\", False):\n            raise ValueError(\n                \"MiniMax H3 does not support enable_frame_interpolation: the \"\n                \"accepted delivery contract is the canonical 24 fps output\"\n            )\n        if getattr(sampling_params, \"enable_upscaling\", False):\n            raise ValueError(\n                \"MiniMax H3 does not support enable_upscaling: the accepted \"\n                \"delivery contract is the resolved target canvas\"\n            )\n        if not bool(getattr(sampling_params, \"save_output\", False)) or not getattr(\n            sampling_params, \"output_path\", None\n        ):\n            raise ValueError(\n                \"MiniMax H3 DiffGenerator requires save_output=True and a non-empty \"\n                \"output_path for validated file delivery\"\n            )\n        output_mode = getattr(sampling_params, \"output_mode\", None)\n        if output_mode not in (None, \"decoded_files\"):\n            raise ValueError(\n                \"MiniMax H3 SGLang backend only supports \"\n                f\"output_mode='decoded_files', got {output_mode!r}\"\n            )\n\n    def prepare_for_queue_sync(self, batch: Req) -> None:\n        from sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.minimax_h3.prequeue import (\n            minimax_h3_prepare_for_queue,\n        )\n\n        minimax_h3_prepare_for_queue(batch)\n\n    def cleanup_request_sync(self, batch: Req) -> None:","sourceCodeStart":225,"sourceCodeEnd":261,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py#L225-L261","documentation":"MiniMax H3 generation in SGLang requires that outputs be persisted: the DiffGenerator path needs save_output=True and a non-empty output_path so it can return validated file paths (the only supported output_mode is decoded_files). Omitting either makes delivery impossible to validate.","triggerScenarios":"validate_sampling_params called on SamplingParams where save_output is falsy or output_path is None/empty, for a MiniMax H3 video model.","commonSituations":"Default SamplingParams (save_output defaults to False); reusing LLM-style params that expect in-memory returns; forgetting to set output_path in batch scripts.","solutions":["Set sampling_params.save_output = True","Set sampling_params.output_path to a writable file or directory path","Verify the process has write permissions on that path"],"exampleFix":"// before\nsp = SamplingParams(temperature=0.7)\n// after\nsp = SamplingParams(temperature=0.7, save_output=True, output_path=\"/data/out.mp4\")","handlingStrategy":"validation","validationCode":"assert sp.save_output and sp.output_path, \"set save_output=True and output_path\"\nimport os; assert os.access(os.path.dirname(sp.output_path) or \".\", os.W_OK)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass save_output/output_path for MiniMax H3 offline calls","Pre-create the output directory"],"tags":["minimax-h3","sampling-params","save-output","validation"],"backgroundTag":"missing-required-parameter","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}