Repository navigation
lab: dependency build step (deps installed from scratch, index-only network) - #26
Open
AdvayMonga wants to merge 5 commits into
Open
AdvayMonga wants to merge 5 commits into
AdvayMonga wants to merge 5 commits into
Conversation
…etwork) The target names its dependency files (deps) and the command that installs them (build). The agent may change them; a pyproject.toml only in its dependency tables (checked by the audit; test and lint config stay protected). A tree whose change touched them gets a venv built for it in a no-GPU, --network none container whose only way out is a host-side CONNECT proxy to the package-index hosts, cached by the files' hash; an unchanged tree keeps the engine's venv, so base and candidate run identically. Jobs run under engine.using(build.python_for(tree)); a failed build is a recorded failure. Tool descriptions now state the fact: only the change reaches the engine, and it runs offline. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From the dry run (Nebius H200, LAB_WORKER=ssh): - cli.sh removes the tunnel's stale socket before forwarding (the SDK launches the CLI more than once; that sshd does not unlink an existing socket), with `ssh -n` so that call does not swallow the SDK's first message. - A non-root login (Nebius, Crusoe) runs the worker side through sudo, keeping HOME: the workbench is root inside, measurement rooms drop to uid 10001, rsync via sudo, and the proxy's socket dir is handed to the login user for sshd. - Profiler jails mount the instrument's install root (nsys needs host-linux-x64's importer). - vm-setup.sh caches the target's model and the tokenizers its tests read (new target key `hub`), world-readable: every jail is offline. - vm.push excludes lab/runs explicitly: --delete otherwise reached the worker cache and the agent's live workspaces. From the review: - The API proxy charges in a finally; an incomplete response is charged its input and all of max_tokens; each request reserves its worst-case output first, so concurrent requests cannot pass the cap. - When the workbench shares the lab's host, it is frozen for every lab tool call (container.paused), closing the swap-a-file-for-a-link race on snapshot, restore and copies; quiet() nests in it. - Scratch (outside the write surface, not a base file) is left out whatever it is: a venv's links and large files no longer end the run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Stacked on the remote-agent PR. Built to the decision that dependency changes reach a measurement only through the agent's change, and that measurement stays offline.
deps(pyproject.toml,uv.lock) andbuildkeys. For inference-server,buildis vm-setup.sh's recipe: a locked sync, then the CUDA torch wheel at the locked version.depsfiles. Apyproject.tomlonly in its dependency tables; the audit compares the rest, so test and lint config stay protected, and deleting a dependency file is a violation.build.python_for(tree).--network nonecontainer whose only way out is a host-side CONNECT proxy to the package-index hosts, cached by the files' hash.🤖 Generated with Claude Code