feat(bindings): content-aware collision + project unregister verb - #116
Merged
Conversation
Amends the #110 refusal so it does not break the duplicate-checkout pattern: worktrees, run/ variants, and second clones of one project auto-register on sync and declare identical skills, which the name-only check refused even though nothing was ambiguous. A name collision now compares content: byte-identical duplicates serve one copy with a note; differing content refuses naming both repos and the unregister remedy. A duplicate that diverges mid-edit flips to refusal at that moment, which is when the ambiguity becomes real. sideshow project unregister <pack> [--repo <path>] is the escape hatch registration never had: project init and sync auto-register, and until now the only exits were deleting the directory or hand-editing custom-sources.yaml. The next sync withdraws the source's served skills via the ownership reconcile. Output notes that a repo still carrying _<pack>-custom/skills/ re-registers if synced from within. Verified live: unregistered the two scratch repos today's #109 testing had auto-registered; repeat unregister is a clean no-op. Refs: #110, aae-orc#154 (round report named both the bleed and the missing unregister verb)
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.
The #110 refusal as shipped breaks a routine pattern: worktrees and second checkouts of one project auto-register on sync, declare identical skills, and the name-only check refuses even though nothing is ambiguous (verified: today's scratch repos sat permanently in custom-sources.yaml with no removal verb). Two amendments, both ruled:
sideshow project unregister <pack> [--repo]: the escape hatch registration never had (the aae-orc#154 report called out the gap). Next sync withdraws the source's skills via the existing ownership reconcile; output warns that syncing from inside a repo that still carries custom skills re-registers it.Tests: identical-duplicate serves exactly one copy then refuses after divergence; refusal names the unregister remedy; unregister round trip with no-op repeat and pack-mismatch cases. Verified live by unregistering today's scratch-repo pollution.