Skip to content

investigate: migrate agent-almanac repo to WSL2 ext4 filesystem for git performance #210

@pjt222

Description

@pjt222

Summary

Git operations (git status, git diff, git stash, git push) are significantly slow on the current NTFS-mounted path (/mnt/d/dev/p/agent-almanac/). With ~850 tracked .webp icon files, every git status requires ~850 stat() calls across the WSL2 9P bridge, causing multi-minute hangs. Moving the repo to the native WSL2 ext4 filesystem (~/dev/ or similar) would provide 10-50x faster I/O for all git operations.

This is a filesystem-level change that requires careful investigation before execution. Data loss or broken symlinks are real risks.

Findings

  1. [HIGH] git status takes 30-60+ seconds on NTFS due to stat() overhead across 850+ icon files
  2. [HIGH] git stash / git checkout hang for minutes because they write binary files to NTFS
  3. [MEDIUM] git push with large changesets (100+ files) is unpredictably slow
  4. [LOW] Git LFS was considered but would only help stash/push, not the core stat() bottleneck

Investigation Items (do before any migration)

  • Audit all hardcoded paths referencing /mnt/d/dev/p/agent-almanac/ — CLAUDE.md files, symlinks, scripts, hooks, MCP server configs
  • Inventory cross-project references from the parent /mnt/d/dev/p/ directory (20+ sibling projects may reference agent-almanac)
  • Check global symlinks: ~/.claude/agents/ and ~/.claude/skills/* currently point to /mnt/d/dev/p/agent-almanac/...
  • Verify ext4 storage capacity — the repo with icons is ~500MB+; check available space on WSL2 vhdx
  • Test IDE access — VS Code/JetBrains accessing files on ext4 vs NTFS (WSL remote extensions handle this, but verify)
  • Test MCP server paths — r-mcptools and hf-mcp-server configs may reference NTFS paths
  • Evaluate hybrid approach: repo on ext4, symlink from /mnt/d/dev/p/agent-almanac for compatibility
  • Check if Windows-side tools (GitHub Desktop, Explorer) need NTFS access to the repo
  • Document rollback procedure before attempting any migration

Acceptance Criteria

  • All investigation items above are completed and documented
  • A migration plan is written with explicit steps, rollback procedure, and verification checklist
  • No migration is attempted until the plan is reviewed and approved
  • After migration (if approved): git status completes in <2 seconds, all symlinks work, all MCP servers connect, all hooks fire

Risk Assessment

Risk Severity Mitigation
Broken global symlinks (~267 skill + agent symlinks) HIGH Audit and rebuild script ready before migration
Broken MCP server paths HIGH Update configs in ~/.claude/settings.json and claude_desktop_config.json
Lost uncommitted work CRITICAL Ensure clean working tree, full backup before any move
Parent CLAUDE.md references break MEDIUM Update /mnt/d/dev/p/CLAUDE.md paths
Windows-side tool access lost LOW Evaluate if any Windows tools need direct NTFS access
WSL2 vhdx disk space MEDIUM Check available space first

Context

Discovered during icon pipeline audit and team-based bugfix session on 2026-04-01. Multiple git operations ran to background or hung during the session. The repo has grown from a docs-only project to include ~850 rendered icon files across 9 palettes.

Related: #168 (renv hangs on WSL/NTFS — same root cause)

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitecture and designinvestigationResearch and investigation task

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions