Add-selection-to-project, shared by Library and Graph. Partial-failure contract: never throw — resolve with the failed ids, re-select exactly those and report the count, so a retry can't re-add what already landed.
Add-selection-to-project, shared by Library and Graph. Partial-failure contract: never throw — resolve with the failed ids, re-select exactly those and report the count, so a retry can't re-add what already landed.