Skip to content

chore(core): track v0.1.8-pre.5 - #28

Merged
pimlock merged 1 commit into
mainfrom
core/v0.1.8-pre.5
Nov 10, 2026
Merged

pimlock merged 1 commit into
mainfrom
core/v0.1.8-pre.5

Conversation

@ai-openshell-sdk-python

Copy link
Copy Markdown
Contributor

Move the core pin from v0.1.7 to v0.1.8-pre.5 (prerelease).

  • Core changes: v0.1.7...v0.1.8-pre.5
  • Regenerated bindings: 2 files changed, 248 insertions(+), 214 deletions(-)
  • E2E runs against ghcr.io/nvidia/openshell/gateway:0.1.8-pre.5
  • Files copied from core:
    • none changed

Proto changes

diff --git a/proto/README.md b/proto/README.md
index f029280..7dd67c6 100644
--- a/proto/README.md
+++ b/proto/README.md
@@ -86,6 +86,18 @@ identifies the service being exposed.
   Run `mise run pre-commit`, the affected SDK checks, and relevant server tests
   before submitting the change.
 
+## Compute-driver application endpoints
+
+`compute_driver.proto` is the internal gateway/driver contract. Ordinary
+`GetSandbox` observation does not resolve application routing endpoints.
+The optional `ComputeDriverAppEndpoints.ResolveSupervisorAppEndpoint` service
+returns the current trusted supervisor listener
+and its runtime/ownership binding for advertisement validation. Drivers without
+support return `UNIMPLEMENTED`; a successful response with no endpoint means no
+safe endpoint is currently available. Neither result authorizes publication.
+The gateway owns installation validation and the public discovery API.
+The baseline `ComputeDriver` service and generated server trait stay unchanged.
+
 ## Supervisor host protocol
 
 [`supervisor_host.proto`](supervisor_host.proto) is the private stream between
diff --git a/proto/compute_driver.proto b/proto/compute_driver.proto
index e50f41d..88d090f 100644
--- a/proto/compute_driver.proto
+++ b/proto/compute_driver.proto
@@ -74,6 +74,17 @@ service ComputeDriver {
   rpc DeleteWorkspace(DeleteWorkspaceRequest) returns (DeleteWorkspaceResponse);
 }
 
+// Optional application-endpoint resolution on the same driver endpoint.
+// Drivers without this service return UNIMPLEMENTED; the baseline trait is unchanged.
+service ComputeDriverAppEndpoints {
+  // Resolve the current supervisor application listener independently of sandbox
+  // observation. Unsupported drivers return UNIMPLEMENTED. An absent endpoint
+  // means no safe endpoint is currently available, not a sandbox lookup failure.
+  rpc ResolveSupervisorAppEndpoint(ResolveSupervisorAppEndpointRequest)
+      returns (ResolveSupervisorAppEndpointResponse);
+
+}
+
 // Optional stopped-sandbox configuration update extension on the same endpoint.
 // Baseline generated driver traits remain unchanged. Negotiate
 // openshell.compute.update-sandbox-configuration before calling this service.
@@ -450,6 +461,32 @@ message GetSandboxRequest {
 message GetSandboxResponse {
   // Platform-observed sandbox snapshot returned by the driver.
   DriverSandbox sandbox = 1;
+  reserved 2;
+  reserved "supervisor_app_endpoint";
+}
+
+message ResolveSupervisorAppEndpointRequest {
+  string sandbox_id = 1;
+  string name = 2;
+}
+
+message ResolveSupervisorAppEndpointResponse {
+  // Immutable identity echoed for gateway response-binding validation.
+  string sandbox_id = 1;
+  // Trusted, generation-bound endpoint; absent when not safely resolvable.
+  SupervisorAppEndpoint supervisor_app_endpoint = 2;
+}
+
+// Driver-owned app endpoint; absent when unsupported or not safely resolvable.
+message SupervisorAppEndpoint {
+  string host = 1;
+  uint32 port = 2;
+  string runtime_identity = 3;
+  // Shared supervisors only: the pool route and acknowledged ownership term
+  // used to resolve this member-specific endpoint. Empty/zero for dedicated
+  // supervisors. The gateway revalidates these against durable pool authority.
+  string pool_route = 4;
+  uint64 ownership_epoch = 5;
 }
 
 message ListSandboxesRequest {}
diff --git a/proto/openshell.proto b/proto/openshell.proto
index e498a84..b40ec68 100644
--- a/proto/openshell.proto
+++ b/proto/openshell.proto
@@ -3202,6 +3202,7 @@ message SupervisorMessage {
     RelayOpenResult relay_open_result = 3;
     RelayClose relay_close = 4;
     ConfigUpdateResult config_update_result = 5;
+    SupervisorServiceAdvertisement service_advertisement = 6;
   }
 }
 
@@ -3215,6 +3216,7 @@ message GatewayMessage {
     RelayClose relay_close = 5;
     SessionRedirect session_redirect = 6;
     ConfigUpdate config_update = 7;
+    ServiceRouteLease service_route_lease = 8;
   }
 }
 
@@ -3229,10 +3231,11 @@ message SupervisorHello {
   uint64 connection_epoch = 3;
   // The supervisor can report credential, policy, and launch-environment installation.
   bool supports_provider_readiness = 4;
-  // Set when this connection is the result of following a SessionRedirect. The
-  // receiving gateway serves a redirected hello locally instead of redirecting
-  // again, so a disagreement about membership cannot bounce the supervisor
-  // between replicas. A gateway that is shutting down may still redirect it.
+  // Set when this connection follows a SessionRedirect, or dials the replica
+  // serving the sandbox's shared supervisor. The receiving gateway serves a
+  // redirected hello locally instead of redirecting again, so a disagreement
+  // about membership cannot bounce the supervisor between replicas. A gateway
+  // that is shutting down may still redirect it.
   bool redirected = 5;
   // The supervisor understands SessionRedirect. Gateways never redirect a
   // supervisor that does not set this.
@@ -3242,6 +3245,7 @@ message SupervisorHello {
   // ConfigUpdate payloads, and answers each with its result and admission.
   // Gateways push configuration only to supervisors that set this.
   bool supports_config_push = 7;
+  bool supports_service_advertisements = 8;
 }
 
 // Gateway accepts the supervisor session.
@@ -4219,3 +4223,25 @@ message EndpointFailure {
   // same value in the x-openshell-request-id response header.
   string request_id = 8;
 }
+
+// Gateway lease challenge on an authenticated sandbox supervisor session.
+// Expiry is measured from gateway issuance, never report receipt.
+message ServiceRouteLease {
+  uint64 sequence = 1;
+  google.protobuf.Duration duration = 2;
+  // Absolute deadline prevents a queued challenge extending serving authority
+  // after takeover. Hosts cap this by duration and require synchronized clocks.
+  google.protobuf.Timestamp expires_at = 3;
+}
+
+// Complete installed-route replacement for a live lease challenge. The
+// supervisor reports only if its remaining serving freshness covers duration.
+// No address is accepted from the supervisor; the compute driver supplies it.
+message SupervisorServiceAdvertisement {
+  uint64 lease_sequence = 1;
+  string configuration_instance_id = 2;
+  uint64 config_revision = 3;
+  repeated openshell.sandbox.v1.SandboxServiceRoute routes = 4;
+  // Domain actually installed by the process listener, not the gateway URL.
+  string service_domain = 5;
+}
diff --git a/proto/supervisor_host.proto b/proto/supervisor_host.proto
index a9c6782..862a5e3 100644
--- a/proto/supervisor_host.proto
+++ b/proto/supervisor_host.proto
@@ -84,6 +84,10 @@ message HostAccepted {
   // Scopes every snapshot revision and status report of this stream.
   string session_id = 1;
   google.protobuf.Duration heartbeat_interval = 2;
+  // Address of the accepting gateway replica. A pool host dials its sandbox
+  // instances' sessions here so they run on the replica serving this stream.
+  // Empty when the replica has no peer endpoint.
+  string peer_endpoint = 3;
 }
 
 // The gateway refuses the host; the stream ends after this message.

Before merging

  • CI and E2E must pass. If the SDK needs changes for this core version, push them to this branch.
  • Pre-release pins are not released; a newer pre-release proposal replaces this one.

Move the core pin from v0.1.7 to v0.1.8-pre.5 and regenerate the bindings.

Signed-off-by: ai-openshell-sdk-python[bot] <354503561+ai-openshell-sdk-python[bot]@users.noreply.github.com>
@ai-openshell-sdk-python
ai-openshell-sdk-python Bot requested review from a team as code owners November 9, 2026 23:41
@ai-openshell-sdk-python ai-openshell-sdk-python Bot added core-bump Update proposal that moves the core pin to a newer NVIDIA/OpenShell release tag prerelease The core tag of this update proposal is a pre-release labels Nov 9, 2026
@pimlock
pimlock enabled auto-merge (squash) November 10, 2026 00:49
@pimlock
pimlock merged commit aa654af into main Nov 10, 2026
11 checks passed
@pimlock
pimlock deleted the core/v0.1.8-pre.5 branch November 10, 2026 00:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core-bump Update proposal that moves the core pin to a newer NVIDIA/OpenShell release tag prerelease The core tag of this update proposal is a pre-release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant