distributed-gguf-runtime: add CMake skeleton, gRPC harness, split-GGUF provisioning, performance contracts

DGR-019  Lock alpha/beta performance contracts (evidence + contract framework)
DGR-020  Run controlled whole-model GGUF baseline (benchmark results & contracts)
DGR-024  Real generated-gRPC protocol harness (shard_runtime_server.py + tests)
DGR-026  split-GGUF provisioning outside /home (provision script + manifest + tests)
DGR-028  Numbered patch-stack apply & verify (llama_cpp_dependency.py + UPSTREAM_LOCK.json)
DGR-029  Native CMake skeleton + deterministic CPU lane (UPSTREAM_LOCK.json + cmake gating)

New modules:
  packages/node/meshnet_node/dgr_performance/  — performance contract framework
  packages/node/meshnet_node/split_gguf/        — split-GGUF manifest & provisioning
  scripts/provision_split_gguf.py               — artifact provisioning CLI
  tests/test_dgr_performance_contract.py        — contract validation tests
  tests/test_split_gguf_manifest.py             — manifest tests
  tests/test_split_gguf_provision.py            — provisioning tests
  tests/test_shard_runtime_harness.py           — gRPC harness tests
This commit is contained in:
Dobromir Popov
2026-07-23 09:55:00 +03:00
parent 47bad0b7e1
commit 966aa10854
36 changed files with 7225 additions and 374 deletions

View File

@@ -0,0 +1,216 @@
"""DGR-026 — exact split-GGUF artifact manifest.
Deterministic, offline, GPU-free, and download-free: every manifest here is a
tiny in-memory fixture, never a real model artifact.
"""
from __future__ import annotations
import copy
import hashlib
import pytest
from meshnet_node.split_gguf.manifest import (
SplitArtifactManifestError,
SplitFile,
canonical_sha256,
parse_split_artifact_manifest,
)
def _sha(label: str) -> str:
return hashlib.sha256(label.encode()).hexdigest()
def _rev(label: str) -> str:
# a syntactically valid 40-hex "revision" derived from a human label
return hashlib.sha1(label.encode()).hexdigest()
def _manifest_doc() -> dict:
return {
"schema_version": 1,
"manifest_id": "deepseek-v4-flash-q4_k_m-2way",
"manifest_version": "2026-07-22.1",
"quantization": "Q4_K_M",
"source": {
"artifact_id": "deepseek-v4-flash",
"repo_id": "example/deepseek-v4-flash-gguf",
"revision": _rev("source-revision"),
"sha256": _sha("whole-model-artifact"),
"size_bytes": 2000,
},
"tokenizer": {
"repo_id": "example/deepseek-v4-flash",
"revision": _rev("tokenizer-revision"),
"sha256": _sha("tokenizer-bytes"),
},
"total_bytes": 1200,
"splits": [
{
"name": "model-00001-of-00002.gguf",
"size_bytes": 700,
"sha256": _sha("split-1"),
"role": "layers-0-20",
"url": "https://example.invalid/model-00001-of-00002.gguf",
"shard_start": 0,
"shard_end": 20,
},
{
"name": "model-00002-of-00002.gguf",
"size_bytes": 500,
"sha256": _sha("split-2"),
"role": "layers-20-43",
"url": "https://example.invalid/model-00002-of-00002.gguf",
"shard_start": 20,
"shard_end": 43,
},
],
}
@pytest.fixture
def manifest_doc() -> dict:
return _manifest_doc()
@pytest.fixture
def manifest(manifest_doc):
return parse_split_artifact_manifest(manifest_doc, origin="<fixture>")
def test_manifest_resolves_source_tokenizer_and_both_splits(manifest):
assert manifest.source.artifact_id == "deepseek-v4-flash"
assert manifest.source.sha256 == _sha("whole-model-artifact")
assert manifest.tokenizer.repo_id == "example/deepseek-v4-flash"
assert [s.name for s in manifest.splits] == [
"model-00001-of-00002.gguf",
"model-00002-of-00002.gguf",
]
assert manifest.split("model-00001-of-00002.gguf").role == "layers-0-20"
assert manifest.split("model-00001-of-00002.gguf").shard_start == 0
assert manifest.split("model-00001-of-00002.gguf").shard_end == 20
def test_manifest_aggregate_bytes_are_exact_and_self_consistent(manifest):
assert manifest.total_bytes == sum(s.size_bytes for s in manifest.splits) == 1200
def test_quantization_and_topology_are_manifest_data_not_constants(manifest_doc):
# A manifest with a different quantization label and a different split
# count must parse just as validly — nothing in this module hardcodes
# either.
doc = copy.deepcopy(manifest_doc)
doc["quantization"] = "IQ2_XS"
doc["manifest_id"] = "single-split-example"
doc["total_bytes"] = 2000
doc["splits"] = [
{
"name": "model-00001-of-00001.gguf",
"size_bytes": 2000,
"sha256": _sha("single-split"),
"role": "whole",
}
]
manifest = parse_split_artifact_manifest(doc, origin="<fixture>")
assert manifest.quantization == "IQ2_XS"
assert len(manifest.splits) == 1
assert manifest.splits[0].has_range is False
def test_manifest_digest_is_stable_canonical_json(manifest, manifest_doc):
assert manifest.digest == canonical_sha256(manifest_doc)
def test_split_with_only_shard_start_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
del doc["splits"][0]["shard_end"]
with pytest.raises(SplitArtifactManifestError, match="both shard_start and shard_end"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_split_with_empty_range_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"][0]["shard_end"] = doc["splits"][0]["shard_start"]
with pytest.raises(SplitArtifactManifestError, match="shard_end"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_missing_split_field_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
del doc["splits"][0]["role"]
with pytest.raises(SplitArtifactManifestError, match="role"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_duplicate_split_name_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"][1]["name"] = doc["splits"][0]["name"]
with pytest.raises(SplitArtifactManifestError, match="duplicate split name"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_two_splits_claiming_the_same_content_digest_are_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"][1]["sha256"] = doc["splits"][0]["sha256"]
with pytest.raises(SplitArtifactManifestError, match="repeats SHA-256"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_an_inconsistent_aggregate_byte_total_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["total_bytes"] = 999999
with pytest.raises(SplitArtifactManifestError, match="does not equal the sum"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_split_size_edited_to_make_the_artifact_look_smaller_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"][0]["size_bytes"] = 1
with pytest.raises(SplitArtifactManifestError, match="does not equal the sum"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_truncated_sha256_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"][0]["sha256"] = doc["splits"][0]["sha256"][:10]
with pytest.raises(SplitArtifactManifestError, match="64-character hex SHA-256"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_branch_name_is_not_an_acceptable_source_revision_pin(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["source"]["revision"] = "main"
with pytest.raises(SplitArtifactManifestError, match="40-character commit revision"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_a_branch_name_is_not_an_acceptable_tokenizer_revision_pin(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["tokenizer"]["revision"] = "main"
with pytest.raises(SplitArtifactManifestError, match="40-character commit revision"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_an_unsupported_schema_version_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["schema_version"] = 2
with pytest.raises(SplitArtifactManifestError, match="schema version"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_an_empty_splits_array_is_rejected(manifest_doc):
doc = copy.deepcopy(manifest_doc)
doc["splits"] = []
with pytest.raises(SplitArtifactManifestError, match="non-empty JSON array"):
parse_split_artifact_manifest(doc, origin="<fixture>")
def test_split_file_is_a_plain_frozen_dataclass_round_trip():
split = SplitFile(
name="a.gguf", size_bytes=10, sha256=_sha("a"), role="whole", url="file:///a.gguf"
)
assert split.has_range is False
assert split.to_dict()["name"] == "a.gguf"
assert "shard_start" not in split.to_dict()