mirror of
https://github.com/stablyai/orca.git
synced 2026-10-22 16:03:47 +00:00
SshPane calls recordSshRepoReadoptions on every Manage-pane importConfig(), often with []. The publisher always rebuilt projects and projectHostSetups via projectCompatibilityFromRepos then mergeProjectHostSetupCompatibility and spread the new objects into set(), so WeakMap and Object.is selectors missed even when nothing was re-adopted. Fetch paths already reconcile through mergeFetchedProjectCompatibilityForHost, but that helper is host-scoped and this write is all-repos. Reconcile the merged rows against the previous catalog with the same identity keys, omit unchanged keys from set(), and skip the work entirely when both the incoming and pending readoption lists are empty. Tests reuse the production-shaped nested repo fixture and the structuredClone fetch path. A pending-only readoption stays identity-stable, and removing the two reconcile calls turns that case red. Co-authored-by: Orca <help@stably.ai>