Skip to content

feat(bindings): content-aware collision + project unregister verb - #116

Merged
arcaven merged 1 commit into
mainfrom
feat/content-aware-collision-unregister
Aug 1, 2026
Merged

feat(bindings): content-aware collision + project unregister verb#116
arcaven merged 1 commit into
mainfrom
feat/content-aware-collision-unregister

Conversation

@arcaven

@arcaven arcaven commented Aug 1, 2026

Copy link
Copy Markdown
Member

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:

  • Content-aware collision: byte-identical duplicates serve one copy with a note; differing content refuses naming both repos and the remedy. A duplicate that diverges mid-edit flips to refusal exactly when the ambiguity becomes real.
  • 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.

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)
@arcaven
arcaven merged commit e658ee6 into main Aug 1, 2026
1 check passed
@arcaven
arcaven deleted the feat/content-aware-collision-unregister branch August 1, 2026 23:49
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