Skip to content

fix(dotnet-reversing): install deps under home now the workspace mount is gone - #136

Open
monoxgas wants to merge 1 commit into
mainfrom
fix/dotnet-reversing-deps-dir
Open

fix(dotnet-reversing): install deps under home now the workspace mount is gone#136
monoxgas wants to merge 1 commit into
mainfrom
fix/dotnet-reversing-deps-dir

Conversation

@monoxgas

@monoxgas monoxgas commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Found while reviewing dreadnode-tiger#2400 (ENG-8273, remove E2B workspace mount).

What was wrong

dotnet_agent/bootstrap.py picked its dependency directory by probing /home/user/workspace:

if SANDBOX_WORKSPACE.is_mount():
    return SANDBOX_WORKSPACE / ".dreadnode" / "deps"
if (SANDBOX_WORKSPACE / ".dreadnode").exists() or os.environ.get("DREADNODE_SANDBOX"):
    return SANDBOX_WORKSPACE / ".dreadnode" / "deps"
return LOCAL_FALLBACK

With the platform's object-storage FUSE mount removed, every one of those branches is dead:

  • is_mount() is now always false — the workspace is an ordinary local directory.
  • DREADNODE_SANDBOX is set nowhere in the platform (no hits across the API, the SDK, or the deployment config).
  • A fresh sandbox has no /home/user/workspace/.dreadnode, and nothing creates one now that deps resolve to the fallback.

So the probe already resolved to ~/.dreadnode/deps in every environment. This installs there directly and deletes the dead branch.

The false claims

Two comments told the agent something that is no longer true, in a file the agent reads:

  • "Dependencies are installed to the workspace directory so they persist across sandbox restarts."
  • "/home/user/workspace is S3-mounted and survives sandbox recreation."

Both are corrected. The behavioural consequence — .NET and ILSpy are re-downloaded on a new sandbox rather than reused from object storage — is inherent to the mount removal, not to this change; this only stops the code and its documentation from claiming otherwise.

Verification

No behaviour change in any reachable environment: the fallback branch is what already ran. ruff check --select F401,F821 clean (os is still used for the DOTNET_ROOT/PATH exports).

🤖 Generated with Claude Code

https://claude.ai/code/session_01GDDm7JrA7K5N1CLeWnFdyr

…t is gone

The deps directory was chosen by probing /home/user/workspace for a mount
point, falling back to ~/.dreadnode/deps. The platform has removed the E2B
object-storage FUSE mount, so is_mount() is now always false, the sibling
DREADNODE_SANDBOX escape hatch is set nowhere, and a fresh sandbox has no
/home/user/workspace/.dreadnode - every branch already resolved to the
fallback. Install there directly and drop the dead probe.

The module also told the agent that /home/user/workspace is S3-mounted and
that dependencies survive sandbox recreation. Neither is true any more; the
workspace is an ordinary local directory for the life of the sandbox.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GDDm7JrA7K5N1CLeWnFdyr
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.

1 participant