Nothing comes back from the type you name
The common read: satisfies X checks the value against X, so whatever X declares, readonly included, is what the value comes back holding
The type after satisfies is a test the expression takes, and the expression is unchanged by having passed it.
That is the whole operator: no modifier, no optionality, no union member, no index signature and no alias name crosses from the right-hand side to the binding, which is why satisfies Readonly<T> locks nothing, satisfies Partial<T> makes nothing optional, and satisfies SomeAlias never makes the editor show you SomeAlias on hover. The constraint interviews the value; it does not dress it.
The version that reaches a pager is a shared settings object declared against a Readonly constraint, mutated by the first request that touches it, and escalated as a cache poisoning problem because the value the second request read was written by the first and nothing in the module says who wrote it. If you want the value locked, lock the value: as const is the lever, the constraint is not.
