-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Skill publish slugs still collide globally despite publisher scoping #2363
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.bugSomething isn't workingSomething isn't workingclawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:not-repro-on-mainClawSweeper found high-confidence evidence that this issue no longer reproduces on main.ClawSweeper found high-confidence evidence that this issue no longer reproduces on main.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.Thin issue quality; more reproduction proof or environment detail is needed.
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.bugSomething isn't workingSomething isn't workingclawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:not-repro-on-mainClawSweeper found high-confidence evidence that this issue no longer reproduces on main.ClawSweeper found high-confidence evidence that this issue no longer reproduces on main.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.Thin issue quality; more reproduction proof or environment detail is needed.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
StatusShow more project fields
In progress
Problem
Skill publishing still treats
slugas globally unique in the write path, even though the schema now has publisher-scoped ownership/indexing.A user publishing
baoyu-diagramunder their own publisher can be blocked by an existing/other-owner/baoyu-diagramrow with:Current behavior
In
convex/skills.ts,insertVersionfirst resolves the incoming slug with the globalskills.by_slugindex:If that row belongs to a different
ownerPublisherId, the code enters the owner-migration path and throws slug-taken unless the caller has source authority plusmigrateOwner: true.Why this matters
Publisher-scoped URLs imply that these should be separate publish targets:
/alice/example-skill/bob/example-skillBut today, the first publisher to claim
example-skillcan block everyone else from publishing the same slug under their own publisher. This also creates a squatting problem for copied skills.Expected behavior
Publishing should look up existing skills by
(ownerPublisherId, slug)for normal version creation. A same-slug row owned by another publisher should not block publishing unless the caller is explicitly trying to reclaim/migrate that existing row.Code pointers
convex/schema.tshasby_owner_publisher_slugonskills.convex/skills.tsstill uses globalby_slugduringinsertVersion.