fix(control): disable broken sandbox idle timeout - #191
Merged
Conversation
Co-Authored-By: GPT-5.6 Sol <noreply@pi.dev> Generated-By: pi 0.85.1 (https://pi.dev)
Co-Authored-By: GPT-5.6 Sol <noreply@pi.dev> Generated-By: pi 0.85.1 (https://pi.dev)
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.
Summary
A running Hugging Face Sandbox command can be stopped when the configured idle timeout expires because the deployed Sandbox server does not count a foreground command as active.
This change sets Harbor's native
environment.kwargs.job_timeouttononefor every reviewed preset and new direct job until the upstream correction is merged and deployed.Harbor phase timeouts, Sandbox cleanup, and the Hugging Face 24-hour Job limit still bound the work.
What Changed
The change uses Harbor's existing configuration and adds no timer, keepalive loop, or replacement lifecycle state.
The restriction applies to all Hugging Face Sandbox runs without checking the model, provider, agent, or benchmark.
job_timeout: "none".none.The pinned Harbor revision is
dcd0a7ac74b7bd417780d9cb27cd819c7ec82e4e.I checked
src/harbor/environments/hf_sandbox.py, includingHFSandboxEnvironment.start()and_parse_idle_timeout().Harbor already forwards
job_timeouttoSandbox.create(idle_timeout=...), and the native valuenonedisables that idle timer.I also checked
src/exec.rsandsrc/main.rsinhuggingface/sandbox-serverata8ac9cf6e3f5622b5083f53ffaa2b4f21e9fd5b1.The foreground
/execpath is absent from the process registry that the idle watchdog checks.Testing
The unit, type, format, build, generated-file, privacy, audit, and repository checks pass.
npx vitest run packages/contracts/test/contracts.test.ts packages/control-core/test/direct-config.test.ts packages/control-core/test/control.test.ts apps/control-web/test/launch.test.tsx apps/control-web/test/App.test.tsx— 95 passednpm run format:checknpm run lint— passed with two existing warnings outside this changenpm run typechecknpm test— 456 passednpm run buildnpm run check:generatednpm audit --audit-level=lowuv run python scripts/check_public_privacy.py .uv run ruff check .uv run ruff format --check .uv run ty checkuv run pytest --cov=src/harbor_hf --cov-fail-under=85— 46 passed, 87.98% coverageuv run pip-audituv run slophammer-py dry .uv run slophammer-py check .uv run --directory packages/harbor-hf-agents ruff check .uv run --directory packages/harbor-hf-agents ruff format --check .uv run --directory packages/harbor-hf-agents ty checkuv run --directory packages/harbor-hf-agents pytest— 111 passedgit diff --checknpm run test:e2efails locally because every page fails to render its first expected element. The unchangedmainbranch has the same first-test failure in this environment.Both local
linux/amd64Docker builds reachexec format errorbecause the Docker host is ARM64. Pull request CI must run the browser suite and both Docker builds on AMD64.SimpleDoc reports the same four existing filename migrations on
main.Risks
A Sandbox orphan can now remain until the Hugging Face 24-hour Job limit instead of the shorter idle limit.
Normal Harbor cleanup and phase timeouts still apply, and Harbor-HF still requires Sandbox deletion after execution.
This is a temporary stopgap.
Remove it only after huggingface/sandbox-server#21 is merged, the fixed server binary is deployed, and a foreground command runs for more than 30 minutes in a canary.