Upstream OIDC remote.updateUser does:
1. users.save(user) — basic fields, cache.companies unset
2. companies.setUserRole(company, user) — fetches fresh user, pushes
company id into cache.companies, users.save() that fresh user
3. users.save(user) — saves the LOCAL stale user, overwriting (2)
Step 3 is what breaks: cache.companies ends up empty in DB, the user
search index loses the companies field, and the share-picker can't
find users from the same Company.
Removing step 3 fixes it: setUserRole's save is the authoritative one.