{"record":{"id":"512e2cb601ffec9f","repo":"sgl-project/sglang","slug":"the-checksums-format-is-deprecated-please-regen","errorCode":null,"errorMessage":"The 'checksums' format is deprecated. Please regenerate with the latest version to use the new 'files' format.","messagePattern":"The 'checksums' format is deprecated\\. Please regenerate with the latest version to use the new 'files' format\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"python/sglang/srt/utils/model_file_verifier.py","lineNumber":39,"sourceCode":"from typing import Dict, List, Optional, Tuple\n\n# ======== Data Format ========\n\n\n@dataclass\nclass FileInfo:\n    sha256: str\n    size: int\n\n\n@dataclass\nclass Manifest:\n    files: Dict[str, FileInfo]\n\n    @classmethod\n    def from_dict(cls, data: dict) -> \"Manifest\":\n        if \"checksums\" in data:\n            warnings.warn(\n                \"The 'checksums' format is deprecated. \"\n                \"Please regenerate with the latest version to use the new 'files' format.\",\n                DeprecationWarning,\n                stacklevel=3,\n            )\n            return cls(\n                files={\n                    k: FileInfo(sha256=v, size=-1) for k, v in data[\"checksums\"].items()\n                }\n            )\n        return cls(files={k: FileInfo(**v) for k, v in data[\"files\"].items()})\n\n    def to_dict(self) -> dict:\n        return asdict(self)\n\n\n# ======== Constants ========\n","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/utils/model_file_verifier.py#L21-L57","documentation":"The model file verifier's Manifest.from_dict detects the legacy 'checksums' key in a manifest JSON instead of the current 'files' format, and emits a DeprecationWarning before parsing the old layout. Manifests generated by older SGLang tooling will still verify but should be regenerated with the new format.","triggerScenarios":"Calling Manifest.from_dict (via _load_checksums during model-file integrity verification) on a manifest file produced by an older generator version whose top-level key is 'checksums' rather than 'files'.","commonSituations":"Reusing an old verification manifest after upgrading SGLang; CI artifact manifests pinned to a previous release; mixed-version pipelines where one job generates and another verifies.","solutions":["Regenerate the manifest with the current SGLang tooling (the model-file verifier generation command in your version) so it emits the 'files' format","If regeneration is impossible short-term, keep the old manifest — it still works, only warns","Ensure generating and verifying jobs run the same SGLang version"],"exampleFix":"# before (manifest.json)\n{\"checksums\": {\"a.safetensors\": \"sha256...\"}}\n# after\n{\"files\": {\"a.safetensors\": {\"sha256\": \"...\", \"size\": 123}}}\n# regenerate with the current generator instead of hand-editing","handlingStrategy":"validation","validationCode":"data = json.load(open(\"manifest.json\"))\nif \"checksums\" in data:\n    warnings.simplefilter(\"once\", DeprecationWarning)  # expect legacy manifest","typeGuard":"is_legacy = isinstance(data, dict) and \"checksums\" in data and \"files\" not in data","tryCatchPattern":null,"preventionTips":["Regenerate manifests with the same SGLang version that verifies them","Store the generator version inside the manifest for auditing"],"tags":["model-verification","manifest","deprecation","checksums"],"backgroundTag":"deprecated-manifest-format","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}