The cache judge #refuseRetype runs before every admission; the unresolved-type
throw in the load is replaced by the foreign list; writtenOwns moves to
store-format.ts as the one predicate of both judges.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Probed at b7a68884: only the C# cache arm retypes a key (cache {A,B}
replaces B's record with A); cacheless writes already refuse. TS, Rust
and Python key records by (type, key), so two types coexist at one key
and no leaf has a retype path; leaf parity needs key identity first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>