sgl-project/sglang · error · ValueError

full pack verification requested, but manifest has no full S

Error message

full pack verification requested, but manifest has no full SHA-256

What it means

The caller requested verify_pack_sha256=True but the manifest has no expert_pack.sha256 field, so full-file verification cannot be performed. The loader refuses to silently skip a requested integrity check.

Source

Thrown at python/sglang/srt/layers/moe/expert_pack.py:894

                    pack_offset=offset,
                    pack_nbytes=nbytes,
                    checksum="",
                    shape=logical_shape,
                    quant_scheme=str(roles[physical_role]["dtype"]),
                    transform_id="identity-v1",
                    block_size=256,
                    generation=generation,
                )

        if previous_end != self.path.stat().st_size:
            raise ValueError("Kimi expert-pack file has trailing or missing bytes")
        actual_index_sha256 = index_digest.hexdigest()
        if actual_index_sha256 != pack_manifest["index_sha256"]:
            raise ValueError("Kimi expert-pack index SHA-256 does not match manifest")
        if verify_pack_sha256:
            expected_sha256 = pack_manifest.get("sha256")
            if not expected_sha256:
                raise ValueError(
                    "full pack verification requested, but manifest has no full SHA-256"
                )
            if _sha256_file(self.path) != expected_sha256:
                raise ValueError("Kimi expert-pack SHA-256 does not match manifest")

        self.header = ExpertPackHeader(
            flags=REQUIRED_FLAGS,
            index_count=expected_entry_count,
            data_start=int(pack_manifest["data_start"]),
            alignment=int(pack_manifest["alignment"]),
            num_layers=expected_layers,
            num_experts=expected_experts,
            top_k=expected_top_k,
            role_count=len(ROLE_NAMES),
            model_identity_sha256="0" * 64,
            source_blob_sha256=str(self.manifest["source"]["inventory_sha256"]),
            config_sha256=str(model["config_sha256"]),
        )

View on GitHub (pinned to 0132848349)

Solutions

  1. Regenerate the manifest with a full sha256 of the pack included
  2. Or drop verify_pack_sha256 if index-level verification is sufficient for your workflow

Example fix

// before
loader = KimiExpertPack(path, manifest, verify_pack_sha256=True)  # manifest lacks sha256
// after
manifest['expert_pack']['sha256'] = _sha256_file(path).hex()
loader = KimiExpertPack(path, manifest, verify_pack_sha256=True)
Defensive patterns

Strategy: validation

Validate before calling

if verify_pack_sha256 and not manifest['expert_pack'].get('sha256'):
    raise RuntimeError('manifest lacks full sha256; regenerate it or disable full verification')

Prevention

When it happens

Trigger: Calling the loader/pack opener with full verification enabled while using a manifest produced by a tool that only records index_sha256.

Common situations: See trigger scenarios.

Related errors


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