Skip to content

S25-G: boat sandbox provider for Harbor (N10.8) - #275

Draft
michaellchung wants to merge 2 commits into
s25-n10-harborfrom
s25-n108-boat
Draft

michaellchung wants to merge 2 commits into
s25-n10-harborfrom
s25-n108-boat

Conversation

@michaellchung

Copy link
Copy Markdown
Contributor
  • Harbor BaseEnvironment on boat VMs (boat-sdk), docker run task image + docker exec; VM deleted on every failure/cancel path.
  • Real run: 6 TB2 tasks, oracle 6/6 reward 1, nop 6/6 reward 0.

Testing: Full remote test suite on the stack tip: 0 failures. Not validated on PPU/NPU hardware (machines busy).

Part of the S25 stack (NPU+PPU heterogeneous GLM5.3-Flash full-param RL). Draft; do not merge before the S24 stack (#262–#268).

🤖 Generated with Claude Code

chowhsu and others added 2 commits October 19, 2026 09:34
BoatEnvironment implements Harbor's BaseEnvironment (pinned
harbor-miles-v0.20.0) and loads through EnvironmentConfig.import_path,
so Harbor stays unchanged. One boat VM per environment runs the task's
prebuilt image as container main; exec goes through boat's detached
command API, files through signed URLs and docker cp. The VM is deleted
on stop, on any start failure and after cancellation. A per-process
quota holds the plan's active-sandbox and starts-per-minute caps.

Verified on boat with Harbor's oracle and nop agents on 6 TB2 tasks:
oracle reward 1 and nop reward 0 on all 6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A cancel during the create thread lost the new sandbox id, and a cancel
during the usage read in close() skipped the delete; both left a billed
VM until its TTL. Wait for the create thread on cancel and shield the
usage read and delete as one step. Add CPU tests for both paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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