Authorize project members, reject direct project_shared creates, and cover idempotent client_key plus revision-state after register. Co-authored-by: Cursor <cursoragent@cursor.com>