Skip to content

ateapi: Remove sandbox_class from Worker spec - #2922

Merged
Zoe Zhao (zoez7) merged 2 commits into
agent-substrate:mainfrom
shrutiyam-glitch:remove-sandbox-class
Oct 21, 2026
Merged

Zoe Zhao (zoez7) merged 2 commits into
agent-substrate:mainfrom
shrutiyam-glitch:remove-sandbox-class

Conversation

@shrutiyam-glitch

@shrutiyam-glitch Shrutiya Mohan (shrutiyam-glitch) commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Follow up after #2879

Removes sandbox_class from the Worker spec (ateapipb.Worker) and reads the worker's sandbox class from Worker.status.default_runtime.sandbox_class.

Each worker already reports its default_runtime (including sandbox_class) to WorkerService.RegisterWorker via atelet alongside its capacity before it can take any actors. Carrying sandbox_class on the Worker spec required ate-controller to copy it from the WorkerPool on CreateWorker and duplicated what the worker itself reports in WorkerStatus. Using status.default_runtime.sandbox_class as the single source of truth removes that duplication across ate-controller, ate-api-server, fake-workersync, and kubectl-ate.

Behavior changes

  • Class is fixed by the first registration. RegisterWorker records the class from the first report and refuses a later report with a different default_runtime.sandbox_class (restorable runtimes must match it too). The pool's declared class no longer cross-checks the worker's report: the pod's shape comes from the pool, and the report is the pod's own authenticated statement. The proto comments on WorkerStatus.default_runtime and RegisterWorkerRequest.default_runtime document this.

  • Before a worker registers it has no class. kubectl ate get/top workers show an empty CLASS for it and --sandbox-class filters it out;ate.workerpool.workers counts it under ate.sandbox.class=unknown (registry note updated). The scheduler never placed on such a worker, and still doesn't:Applies rejects an empty class, which also covers the "no default runtime" guard ateapi, atelet: remove sandbox_assets from Run and Restore RPCs #2879 added, so that guard is folded into the class check.

  • Tests pass

  • Appropriate changes to documentation are included in the PR

Comment thread cmd/ateapi/internal/controlapi/crash.go Resolved
@zoez7
Zoe Zhao (zoez7) added this pull request to the merge queue Oct 20, 2026
@zoez7
Zoe Zhao (zoez7) removed this pull request from the merge queue due to a manual request Oct 20, 2026
Now that each worker reports its runtime (including sandbox_class) in WorkerStatus.default_runtime via RegisterWorker, carrying sandbox_class on the Worker spec duplicated that state across CreateWorker and RegisterWorker.
Remove sandbox_class from the Worker message, stop copying the WorkerPool's default sandbox class onto Worker in ate-controller's worker syncer and fake-workersync, and read the worker's sandbox class from status.default_runtime.sandbox_class in scheduling, RegisterWorker validation, actor lifecycle logs/metrics, and kubectl-ate.
@zoez7
Zoe Zhao (zoez7) added this pull request to the merge queue Oct 21, 2026
Merged via the queue into agent-substrate:main with commit 196d317 Oct 21, 2026
15 checks passed
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.

2 participants