Repository navigation
fix: preserve existing workspace and skill destinations - #44
Merged
Merged
Conversation
This was referenced Oct 2, 2026
ts-76
marked this pull request as ready for review
October 3, 2026 09:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Protect existing workspace and skill destinations during sync. Only recorded owned symlinks can be replaced or retired; real files/directories and unrelated links are preserved. Atomically retire a leaf before inspecting it, keep recovery data, and stop if a competing writer replaced it. Serialize managed repository/skill-link sync with an exclusive lease, probe case sensitivity on the actual workspace volume, and retain the observed target when a desired repository is unavailable.
Closes #40. Recovery directories are retained for manual inspection. Relative links must be restored to their original parent before use. The lease covers managed links; resources, generated workspace/AGENTS files and arbitrary external writers are outside it. Concurrent replacement of ancestor directories is not claimed safe; this limitation and recovery steps are documented.
Latest audited main (#39) is merged forward. Automatic tags/releases and npm publication remain disabled. Existing Copilot findings are fixed and all threads resolved; fresh review remains unavailable from the earlier quota limit.
Validation at
e0fa42742406a8a53e0a59dd46c692f85d2824a8: frozen root/UI installs, lint, root/UI TypeScript, 79 tests, full CLI/UI build and real package tarball checks pass. Root Bun, UI Bun and root npm audits: 0 vulnerabilities. Final-head CI37118177218 and Security37118177211 (audit + CodeQL) both succeed. Earlier independent sync review and built CLI lifecycle results remain documented.