Skip to content

feat(supervisor): advertise accepted application route installations - #4940

Draft
TaylorMutch wants to merge 1 commit into
feat/4666-supervisor-app-endpoints/TaylorMutchfrom
feat/4939-service-advertisements/TaylorMutch
Draft

TaylorMutch wants to merge 1 commit into
feat/4666-supervisor-app-endpoints/TaylorMutchfrom
feat/4939-service-advertisements/TaylorMutch

Conversation

@TaylorMutch

@TaylorMutch TaylorMutch commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Persist validated, expiring evidence of application routes installed by supervisors. Integrate the shared-supervisor ownership authority merged in #4864 so dedicated and shared installations can be advertised safely.

Based on main at d7b616895. Stacked on feat/4666-supervisor-app-endpoints/TaylorMutch.

Related Issue

Closes #4939. Part of RFC 0017.

Changes

  • Resolve trusted application endpoints through the optional ComputeDriverAppEndpoints.ResolveSupervisorAppEndpoint extension RPC, independently of GetSandbox. The baseline ComputeDriver service and existing factories remain compatible. In-process factories register the optional resolver during build; unsupported drivers withhold publication; resolution failures cannot fail ordinary sandbox observations.
  • Fence installation reports and discovery eligibility by runtime, configuration, session, credential epoch, current acknowledged pool owner, and process/member readiness.
  • Resolve shared application endpoints from trusted Kubernetes membership and Pod state, independently of runtime control addresses.
  • Revalidate durable authority before each serving lease; enforce absolute lease expiry and a shared listener serving-authority bound of at most 15 seconds, closing stale streams.
  • Preserve workload identity across owner changes; keep gateway-session identity independent of supervisor takeover identity.

Release Notes

Testing

  • 40 focused combined-stack Rust regression tests cover listener routing, route-limit concurrency, shutdown fencing, advertisements, discovery, and proxy behavior.
  • Local k3d validated the Service removal with dedicated push/poll, abrupt shared-owner takeover, HTTP/WebSockets, network-policy denial, freshness/withdrawal, outage recovery, and disabled-listener gateway access. Workload identity and memory survived owner changes.
  • Real Go SDK snapshots/watches and workspace-restricted discovery credentials drove two proxy replicas; both followed Pod-IP endpoints, graceful owner handover, and route withdrawal without per-sandbox app Services.
  • Helm lint/unit/parser/coherence/scaling checks, Python lint/format/type checks, and topology assertions passed.

Live Kubernetes validation preceded integration of the latest listener hardening;
focused Rust regressions validate that final integration. New-head CI is pending.

Qualification limits

Live HA validation exercised supervisor process/Pod loss on a local k3d cluster. Whole-node failure, real network partitions, metric-driven HPA, sustained production load, and published release artifacts remain unqualified. Grant-file projection contributes to revocation propagation time. Main now includes #4842 for gateway-mediated hashed hostnames. Direct application-listener/discovery hostnames remain readable; extending hashed naming to that path and installation-status presentation (#4670) remain separate work.

The example Kubernetes HTTPRoute controller is a deferred compatibility POC outside this stack.

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Relevant implementation, configuration, and API documentation updated

PR dependency order: #4936 → #4940 → #4941 → #4956 → #4963 → #4964 → #4957 → #4958.

@copy-pr-bot

copy-pr-bot Bot commented Oct 26, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown

@TaylorMutch
TaylorMutch added this pull request to stack #4942 October 26, 2026 22:35
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from 04a0ed7 to b89eaa2 Compare October 27, 2026 03:15
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from b89eaa2 to c011626 Compare October 27, 2026 05:42
@TaylorMutch
TaylorMutch removed this pull request from stack #4942 October 27, 2026 05:45
@TaylorMutch
TaylorMutch added this pull request to stack #4965 October 27, 2026 05:46
@TaylorMutch
TaylorMutch removed this pull request from stack #4965 October 27, 2026 05:47
@TaylorMutch
TaylorMutch added this pull request to stack #4966 October 27, 2026 06:24
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch 3 times, most recently from 40b3c69 to e1f8b17 Compare October 27, 2026 06:46
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from e1f8b17 to 600d3d3 Compare October 27, 2026 21:06
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch 2 times, most recently from 0ce10f0 to 0686cd7 Compare October 28, 2026 22:52
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from 0686cd7 to bbfccda Compare October 29, 2026 01:16
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from bbfccda to 73e1bed Compare October 30, 2026 17:57
Signed-off-by: Taylor Mutch <taylormutch@gmail.com>
@TaylorMutch
TaylorMutch force-pushed the feat/4939-service-advertisements/TaylorMutch branch from 73e1bed to d3c89a2 Compare October 30, 2026 21:11

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(supervisor): advertise accepted application route installations

1 participant