Repository navigation
Drain deployments saved before sandbox specifications - #114
Merged
Merged
Conversation
A Web-selected Docker or microsandbox deployment saved before #95 keeps the empty specification default after migration. Current Core could neither load its provider nor authenticate its retained nodes, so its sandboxes could not be archived or cleaned up, and the specification could never be replaced. Load such a deployment for draining only: retained nodes that never recorded a specification digest or generation reconnect, fresh hosted sandboxes are refused, and node configuration and enrollment stay closed. The existing maintenance, archive and PUT sequence then records a specification and retires those nodes. E2B deployments from that period remain out of scope.
Address blind-review follow-ups: an unspecified deployment cannot issue a node enrollment token that would always fail, the drain rule applies only to Web-managed selections, and the contract notes that GET omits the missing specification.
SaladDay
added a commit
that referenced
this pull request
Sep 25, 2026
* Move node transport to /api/v1 and stop forwarding machine traffic through Web
Sandbox node enrollment, configuration, identity and the node WebSocket move
from /core/v1/sandbox/{enroll,node/*} to /api/v1/sandbox-node/*, beside the
existing /api/v1/agent-daemon routes. Authentication is unchanged: an
enrollment token or the node credential. The old paths are removed.
The console no longer forwards node or daemon transport and returns 404 for
/v1 and /api/v1 whatever the credential; the TLS reverse proxy sends both
directly to Core. make openapi now writes /api/v1 routes to
contracts/agents-api/runtime.openapi.yaml; the public openapi.yaml is
unchanged. Docs describe the routing table and that older nodes cannot
connect to this Core, so upgrades follow the drain and re-enrollment workflow.
* Document the proxy upgrade step and name failures on the machine routes
Address the blind review of the /api/v1 node transport move:
- The upgrade steps now say to route /api/v1/*, including WebSocket upgrades,
directly to Core when the release goes live; the old routing breaks every
Runtime daemon connection, not only node enrollment.
- The pre-specification drain needs a Core built from a commit with #114 that
still serves the old node paths (for example 7b66be2); drain there, then
upgrade. Re-enrollment stops the old node service and moves its identity
directory aside first.
- CONTRIBUTING notes the executor-credential routes that still go to Core.
- The node installer reports 404 as a routing problem, 409 as maintenance or a
deployment conflict and keeps the proxy hint for connection errors; the
self-hosted connection check reports 404 as a routing problem.
- openapi-split keeps only the security schemes each non-public document uses;
the public openapi.yaml is unchanged.
- Console tests cover encoded and doubled separators toward /api/v1.
This was referenced Sep 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Drain sandbox deployments that were saved before deployment specifications existed (#95), so they can be upgraded through the supported path.
Problem
Migration
000069leaves a Web-selected Docker or microsandbox deployment withspecification = '{}'and its nodes with an empty digest and generation 0. Current Core then:The existing PUT replacement requires zero retained resources, and the old release has no administrator archive. As a result, such a deployment can neither be drained nor upgraded.
Change
docs/getting-started/operations.md; the contract is incontracts/agents-api/sandbox-deployment.md.Validation
TestUnspecifiedNodeDeploymentDrainsBeforeReplacement. It fails without the fix and passes with it.make check(server mode) passed on0654e977, including the PostgreSQL suite, 610 client tests and 329 Web unit tests. Playwright browser cases were skipped on the server (Chrome unavailable; user-approved skip). No Web code changed.0654e977and verified by focused tests and the gate, not by a second review:Need help on this PR? Tag
@codesmithwith what you need. Autofix is disabled.