Skip to content

fix(typegate): unlink node_modules junctions before worktree removal - #1

Merged
maxymlyskov merged 1 commit into
mainfrom
fix/typegate-junction-cleanup
Sep 30, 2026
Merged

maxymlyskov merged 1 commit into
mainfrom
fix/typegate-junction-cleanup

Conversation

@maxymlyskov

Copy link
Copy Markdown
Owner

On Windows, typegate deleted the repository's real node_modules. It links
node_modules into the base worktree with a junction, and Git for Windows'
git worktree remove --force deletes through junctions. Found on the first
real run, against the MCP TypeScript SDK: 307 installed packages gone after
one G1 run, so every later gate failed on missing modules.

typegate now records each junction it creates and unlinks it in the finally
block before git removes the worktree. fs.unlinkSync on a junction removes
only the link. The input that used to pass wrongly is any Windows repo with a
node_modules directory in a typecheck root; the new test fails on it before
this change.

On Windows, typegate deleted the repository's real node_modules. It links
node_modules into the base worktree with a junction, and Git for Windows'
`git worktree remove --force` deletes through junctions. Found on the first
real run, against the MCP TypeScript SDK: 307 installed packages gone after
one G1 run, so every later gate failed on missing modules.

typegate now records each junction it creates and unlinks it in the finally
block before git removes the worktree. fs.unlinkSync on a junction removes
only the link. The input that used to pass wrongly is any Windows repo with a
node_modules directory in a typecheck root; the new test fails on it before
this change.
@maxymlyskov
maxymlyskov merged commit 200ef39 into main Sep 30, 2026
1 check passed
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