Repository navigation
Expose runner identity in orchestrator discovery - #1
mikezupper wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
runner_id is on the orchestrator GET /discovery record, and standalone discovery keeps the raw JSON, so that path is fine. The pinned Python client does not read that response. TestPinnedPythonSignerDiscovery calls discover_runners(signer_url=...), and GET /discover-orchestrators rebuilds each runner as discoveredRunner, which has no runner_id and no raw-record passthrough. The identity is gone before the client that is supposed to bind admission can see it.
The new test only marshals Registry.Discovery() for a non-proxy single-shot runner (/apps/gpu-runner/app), so it stays green when the signer drops the field and when the advertised URL is a proxy host.
Sent by Cursor Automation: build-track code reviews
|
There was a problem hiding this comment.
runner_id now survives both hops a client actually reads.
Orchestrator GET /discovery emits the registry key on discoveryRunner. For a single-shot proxy runner that key is independent of the advertised URL: discoveryURL uses proxyURL(id), and TestRunnerGPUIsPreservedForPythonDiscovery registers gpu-runner with proxy:true and https://{proxy}.example, then checks the JSON for runner_id gpu-runner and URL https://gpu-runner.example.
Signer discoveredRunner keeps runner_id, and GET /discover-orchestrators re-encodes that struct. TestSignerDiscovery advertises that same identity and proxy-shaped URL (direct source and the standalone discovery cache, which still returns the raw record) and requires both fields on the response. Duplicate selection is unchanged: DiscoveryIdentity is still URL, app, and observed_at.
go test ./orchestrator/ ./signer/ -run 'TestRunnerGPUIsPreservedForPythonDiscovery|TestSignerDiscovery$|TestDiscoveryLocalInventory|TestRunnerProxyRoutingMatrix|TestDomainProxyRunnerIDs' passed. No Co-Authored-By on dfcf033..e75e5b6.
Sent by Cursor Automation: build-track code reviews





Native gateway admission binds approvals to a runner ID, but discovery omitted that ID and every candidate was rejected. Include the registered
runner_idin each discovery record so clients can match identity without deriving it from a proxy URL or confusing it with the app name.Validation: JSON serialization regression;
go test -race ./...(umask 022); live RTX 5090 acceptance with vLLM, SGLang and Ollama through the corrected node image, including paid request/error/disconnect accounting. On-chain redemption finality is tracked separately.Follow-up: runner identity now also survives the signer discovery collector and
/discover-orchestrators. Regression coverage uses a single-shot proxy hostname and explicitly checks runner_id in both direct and signer discovery. Fullgo test -race ./...passes. Commite75e5b6is published asregistry.livepeer.tools/ne-build-track/inference-node:native-vllm-20261027, manifestsha256:6042f62ea94213c700c57e4d7e1ae1fab8bfb07f4055a140552708e6eedd4561; the binary embeds that commit. The final candidate passes vLLM cancellation/recovery and sequential requests. Live signer-path acceptance remains distinct from the covered HTTP regression tests.