Summary
An install that fails on a later file conflict leaves earlier managed files written to the workspace, producing a partial installation.
Verified on main at 3048fb73910a0a8944f74fb2e70abd5752a60b2f.
Reproduction
-
Create a temporary workspace.
-
Pre-create a user-owned .vscode/mcp.json without the Evolver managed marker.
-
Run:
node scripts/install.js --install --workspace <temporary-workspace>
Actual result
The command exits 1 and correctly refuses to overwrite .vscode/mcp.json, but it has already written:
- managed
.github/copilot-instructions.md
- all eight managed
.github/prompts/*.md files
The runtime directories are not installed yet, leaving an inconsistent half-installed workspace.
Expected result
Either preflight every destination before writing, or roll back files written by the failed invocation.
Cause
scripts/install.js:196-212 writes instructions and prompts immediately. The MCP conflict is not checked until lines 214-216, and there is no transaction or rollback.
Impact
An installation reported as failed still mutates the workspace and requires cleanup before retrying.
Summary
An install that fails on a later file conflict leaves earlier managed files written to the workspace, producing a partial installation.
Verified on
mainat3048fb73910a0a8944f74fb2e70abd5752a60b2f.Reproduction
Create a temporary workspace.
Pre-create a user-owned
.vscode/mcp.jsonwithout the Evolver managed marker.Run:
Actual result
The command exits
1and correctly refuses to overwrite.vscode/mcp.json, but it has already written:.github/copilot-instructions.md.github/prompts/*.mdfilesThe runtime directories are not installed yet, leaving an inconsistent half-installed workspace.
Expected result
Either preflight every destination before writing, or roll back files written by the failed invocation.
Cause
scripts/install.js:196-212writes instructions and prompts immediately. The MCP conflict is not checked until lines 214-216, and there is no transaction or rollback.Impact
An installation reported as failed still mutates the workspace and requires cleanup before retrying.