The catalog's version is strictly newer than what is installed.
The two versions differ and cannot be ordered — one of them is not a version this can
parse (lib/phone/semver.ts). Surfaced rather than swallowed: an operator who publishes
nightly still republished something, and silently calling that "up to date" is the
failure that ticket is about. It is shown as a mismatch, never as "newer".
The Store renders the update rows;
useAppRegistry()is what produces them. Only the type crosses the boundary here — the list itself comes from the permission-gated facet.