Implementation-wise, this looks good to me. However, when I suggested using a single MR, I mistakenly assumed we already had more complete "prototype props" tests, but it looks like we’re still missing a number of elements there.
These changes to object descriptors make it easy to make subtle mistakes. For example, by moving interfaces out of `iface_tids`, we no longer filter properties by `disp_tid`. Also, since the interface addition order affects resolution in the case of name collisions, any reordering can subtly alter exposed properties. That’s quite a lot of detail to track manually, so it would be great to ensure correctness with tests. Would you mind adding them?