diff --git a/.scratch/distributed-gguf-runtime/issues/024-implement-real-generated-grpc-protocol-harness.md b/.scratch/distributed-gguf-runtime/issues/024-implement-real-generated-grpc-protocol-harness.md new file mode 100644 index 0000000..24ef287 --- /dev/null +++ b/.scratch/distributed-gguf-runtime/issues/024-implement-real-generated-grpc-protocol-harness.md @@ -0,0 +1,39 @@ + +# DGR-024: Implement real generated-gRPC protocol harness + +- **Status / triage:** specification only; `ready-for-agent`; `passes: false` +- **Execution mode:** `AFK` +- **Milestone:** `M1` +- **Dependencies:** `DGR-022`, `DGR-023` +- **Blocks (derived):** `DGR-033`, `DGR-042` +- **Labels:** `area:protocol`, `area:testing`, `type:vertical-slice`, `priority:p0`, `ready-for-agent` +- **Evidence class:** `model-free` +- **Hardware:** `none` +- **Model:** `none` +- **Upstream:** `no` + +## Objective / description + +Build a real generated-gRPC protocol harness around the versioned shard_runtime.proto contract. Use generated Python and C++ stubs over an actual localhost transport and real process lifecycle; exercise captured deterministic protocol vectors and serialized protobuf bytes before a real model worker exists. Do not implement an in-memory fake transport, synthetic model outputs, or a production-looking stub/demo service. + +## Acceptance criteria + +- [ ] Start a real localhost gRPC server process using generated bindings and connect to it with a generated client; no in-memory fake channel or direct method-only seam. +- [ ] Exercise prefill fragments, decode frames, release, cancel, flow-control, deadlines, malformed input, checksum failure, duplicates, and stale epochs using serialized protocol messages and captured deterministic vectors. +- [ ] Prove direct and opaque-relay paths preserve identical protobuf bytes by recording and comparing actual wire frames at both boundaries. +- [ ] Use real process/socket lifecycle and fail closed on transport, schema, epoch, size, cache, and deadline violations; do not claim model or accelerator behavior that is not exercised. +- [ ] Applicable shared quality gates pass, and evidence records exact commands, raw outputs, generated artifact identities, wire-frame hashes, changed files, limitations, and dependency handoff. + +## Shared quality gates + +- Targeted deterministic tests pass; Python changes also pass `python -m compileall packages tests`. +- `git diff --check` passes. +- Default tests are model-download-free, API-credit-free, and GPU-free. +- Evidence README records exact changed files, commands/results, limitations, and dependency handoff; no fabricated evidence or inherited completion credit. +- Native changes pass focused out-of-tree CMake build and CTest; patch changes verify clean apply/check/reverse against the exact llama.cpp pin. +- Runs are opt-in and record exact artifact/split hashes, runtime/upstream pin, backend/driver, hardware, network, commands, and raw metrics. Model artifacts use configured mounted-drive storage and never `/home`. +- Preserve existing Transformers behavior and backend-agnostic Tracker routing/load balancing/billing/relay semantics unless an explicit versioned contract says otherwise. One scoped story commit is expected during execution, but this specification-materialization change is not committed. + +## Evidence handoff + +Write and verify `.scratch/distributed-gguf-runtime/evidence/DGR-024/README.md`. Until every criterion and applicable gate has real evidence, this story remains `passes: false`. Legacy evidence is provenance only, not completion credit. diff --git a/.scratch/distributed-gguf-runtime/prd.json b/.scratch/distributed-gguf-runtime/prd.json index 441e446..155b45c 100644 --- a/.scratch/distributed-gguf-runtime/prd.json +++ b/.scratch/distributed-gguf-runtime/prd.json @@ -532,7 +532,7 @@ }, { "id": "DGR-024", - "title": "Implement in-memory fake gRPC seam transport", + "title": "Implement real generated-gRPC protocol harness", "priority": 8, "milestone": "M1", "executionMode": "AFK", @@ -543,26 +543,26 @@ "priority:p0", "ready-for-agent" ], - "evidenceClass": "fixture", + "evidenceClass": "model-free", "evidencePath": ".scratch/distributed-gguf-runtime/evidence/DGR-024/README.md", "hardware": "none", - "model": "fake", + "model": "none", "upstream": "no", "dependsOn": [ "DGR-022", "DGR-023" ], "triage": "ready-for-agent", - "description": "Fresh Ralph session: read `.scratch/distributed-gguf-runtime/RALPH-CONTEXT.md`, source issue `.scratch/distributed-gguf-runtime/issues/024-implement-in-memory-fake-grpc-seam-transport.md`, and evidence READMEs for dependencies (DGR-022, DGR-023) before changing code. Inspect live source/tests rather than trusting legacy pass states. Objective: Exercise the complete streaming protocol deterministically before a real model or worker exists.", + "description": "Build a real generated-gRPC protocol harness around the versioned shard_runtime.proto contract. Use generated Python and C++ stubs over an actual localhost transport and real process lifecycle; exercise captured deterministic protocol vectors and serialized protobuf bytes before a real model worker exists. Do not implement an in-memory fake transport, synthetic model outputs, or a production-looking stub/demo service.", "acceptanceCriteria": [ - "Provide a fake bidirectional stream supporting prefill fragments, decode fast-path frames, release, cancel, and structured errors.", - "Test flow-control blocking, deadlines, malformed fragments, checksum failure, duplicates, and stale epochs.", - "Verify direct and opaque-relay framing preserve identical protobuf bytes.", - "Tests require no sockets outside localhost, model downloads, or native accelerator.", - "Applicable shared quality gates in `prd.json` pass, and the evidence handoff records exact commands/results, changed files, limitations, and dependency handoff." + "Start a real localhost gRPC server process using generated bindings and connect to it with a generated client; no in-memory fake channel or direct method-only seam.", + "Exercise prefill fragments, decode frames, release, cancel, flow-control, deadlines, malformed input, checksum failure, duplicates, and stale epochs using serialized protocol messages and captured deterministic vectors.", + "Prove direct and opaque-relay paths preserve identical protobuf bytes by recording and comparing actual wire frames at both boundaries.", + "Use real process/socket lifecycle and fail closed on transport, schema, epoch, size, cache, and deadline violations; do not claim model or accelerator behavior that is not exercised.", + "Applicable shared quality gates pass, and evidence records exact commands, raw outputs, generated artifact identities, wire-frame hashes, changed files, limitations, and dependency handoff." ], "passes": false, - "notes": "Implementation repaired after full-scope review; awaiting final independent re-review of same-epoch isolation, response payload/cache semantics, waiter wakeups, structured acknowledgements, and generated stream-call compatibility.", + "notes": "Revised by policy audit: the former in-memory fake/stub seam task was invalid under the no-fake-data/no-demo-implementation rule. Existing fake-seam work is preserved as unaccepted historical material and must not be integrated.", "blocks": [ "DGR-033", "DGR-042"