Skip to content

fix: EROFS on cache volumes, Claude Code native install, dynamic workdir#56

Merged
dean0x merged 2 commits intomainfrom
fix/cache-erofs-and-claude-install
Mar 18, 2026
Merged

fix: EROFS on cache volumes, Claude Code native install, dynamic workdir#56
dean0x merged 2 commits intomainfrom
fix/cache-erofs-and-claude-install

Conversation

@dean0x
Copy link
Copy Markdown
Owner

@dean0x dean0x commented Mar 18, 2026

Summary

Three post-v1.5.0 fixes:

  • EROFS fix: Remove read-only (:ro) mount enforcement on Complete cache volumes. The Complete → :ro design blocked legitimate operations like npm install -g (bootstrap), npx (runtime), and cargo install. Content-addressing (same lockfile = same volume) is the real protection — :ro added no security value inside a sandboxed container.

  • Claude Code native installer: Replace npm install -g @anthropic-ai/claude-code with the official native installer (curl -fsSL https://claude.ai/install.sh | bash). Adds ~/.claude/bin to PATH, /etc/skel, and bootstrap skeleton.

  • Dynamic workdir: Derive container workdir from project folder name (e.g., ~/Sandbox/minotaur/minotaur) instead of always /workspace. Blocklist prevents overlay on system dirs. Custom container.workdir config is respected.

Test plan

  • 500 tests passing (487 unit + 13 integration)
  • cargo clippy -- -D warnings clean
  • cargo fmt --check clean
  • CI passes
  • Manual: mino run → no EROFS during bootstrap or npx
  • Manual: claude doctor shows native install
  • Manual: terminal prompt shows /{project_name}

Dean Sharon added 2 commits March 18, 2026 16:35
… dynamic workdir

Remove EROFS-causing read-only mount enforcement on complete cache
volumes -- all cache states now mount read-write, eliminating the
`readonly` field from CacheMount and `is_readonly()` from CacheState.

Replace npm-based Claude Code install with the native curl installer
(claude.ai/install.sh) so Claude manages its own updates independently
of nvm/Node. Add ~/.claude to skel and bootstrap skeleton list.

Derive container workdir from the project folder name (e.g. /my-app
instead of /workspace), with a blocklist for system directory names.

Simplify setup_cache_for_lockfile to return a plain bool instead of
an unused (CacheState, bool) tuple.
Add ssh-agent to blocked workdir names to prevent mount conflict when
project directory is named ssh-agent (overlays the SSH agent socket
mount point at /ssh-agent).
@dean0x dean0x merged commit 8e8a6dd into main Mar 18, 2026
6 of 7 checks passed
@dean0x dean0x deleted the fix/cache-erofs-and-claude-install branch March 18, 2026 15:21
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