84 lines
3.4 KiB
Markdown
84 lines
3.4 KiB
Markdown
# DGR-009 — Integrate the native worker with Meshnet: evidence
|
|
|
|
Status: done
|
|
Date: 2026-07-15
|
|
Evidence kind: **python-unit + repo-hygiene**. No model download, no GPU, no API
|
|
credit.
|
|
|
|
## Summary
|
|
|
|
Implemented the Meshnet-facing GGUF backend seam and recipe gating needed for
|
|
the native worker path:
|
|
|
|
- Added `GgufNodeBackend`, a backend-shaped adapter that lets the existing node
|
|
HTTP/control-plane code serve GGUF-backed shards without changing the
|
|
Transformers/Torch path for the default recipes.
|
|
- Added `llama-cpp-native` to the recipe manifest and gated startup so only
|
|
recipes with `backend_id == "llama.cpp"` build the GGUF backend.
|
|
- Preserved the existing registration/admission flow by carrying the validated
|
|
capability report and proof shard through registration.
|
|
- Added unit coverage for the GGUF backend seam and for recipe-gated startup.
|
|
- Fixed the explicit-shard startup path so the legacy Torch tests that use an
|
|
opaque stub model still pass without requiring HuggingFace config discovery.
|
|
|
|
## Files changed
|
|
|
|
- `packages/node/meshnet_node/gguf_backend.py` - new GGUF backend adapter and
|
|
worker-transport boundary.
|
|
- `packages/node/meshnet_node/startup.py` - recipe-gated GGUF backend injection
|
|
and explicit-shard startup fix.
|
|
- `packages/node/meshnet_node/recipes.json` - added `llama-cpp-native`.
|
|
- `tests/test_gguf_backend.py` - backend delegation and recipe-selection tests.
|
|
- `.ralph-tui/progress.md` - appended DGR-009 progress note.
|
|
- `.scratch/distributed-gguf-runtime/issues/09-integrate-the-native-worker-with-meshnet.md`
|
|
- marked `Status: done`.
|
|
|
|
## Commands and real results
|
|
|
|
```bash
|
|
python -m pytest -q tests/test_gguf_backend.py
|
|
# -> 2 passed in 0.05s
|
|
|
|
python -m pytest -q tests/test_node_admission.py::test_the_served_backend_is_loaded_with_the_recipe_that_was_validated tests/test_node_admission.py::test_backend_validation_failure_registers_nothing
|
|
# -> 2 passed in 0.07s
|
|
|
|
python -m compileall -q packages tests
|
|
# -> exit 0
|
|
|
|
git diff --check
|
|
# -> exit 0
|
|
|
|
python -m pytest -q
|
|
# -> 222 failed, 463 passed, 13 skipped, 86 errors in 135.65s
|
|
```
|
|
|
|
## Limitations
|
|
|
|
- `python -m pytest -q` is still not clean in this sandbox. The dominant
|
|
failures are tracker/control-plane socket `PermissionError: [Errno 1]
|
|
Operation not permitted` and a native protocol import failure caused by a
|
|
protobuf runtime mismatch (`gencode 7.35.0` vs runtime `6.33.6`).
|
|
- `tests/test_native_shard_protocol.py` currently fails for the same protobuf
|
|
runtime mismatch in this environment.
|
|
- `DGR-008` evidence was not present in the tree, so the dependency behavior was
|
|
verified by reading the live code and exercising the Python seam instead of
|
|
relying on a missing README.
|
|
|
|
## Compatibility notes
|
|
|
|
- The default Torch path remains intact; GGUF backend selection is explicit and
|
|
recipe-gated.
|
|
- `TorchNodeServer` already accepts an injected backend object, so the control
|
|
plane stays Meshnet-owned.
|
|
- The GGUF adapter currently establishes the seam for the native worker
|
|
transport; the compiled worker remains the owner of the gRPC protocol details.
|
|
|
|
## Dependent-story handoff
|
|
|
|
- DGR-008 should continue to own the native worker implementation and the
|
|
versioned gRPC frame handling behind `MESHNET_NATIVE_WORKER_URL`.
|
|
- DGR-010 / DGR-012 can build on this seam without changing the control plane:
|
|
the recipe-gated backend and validated capability report are already carried
|
|
through startup.
|
|
|