Lenient deserialiser that accepts either the stable
public_keys: { ed25519: ... } shape or the MSC4284 unstable singular
public_key: <ed25519> shape, and folds the latter into the former.
MSC4284 unstable state event type. The merged spec stabilised this to
m.room.policy, but the reference policy server (and Elementβs default
deployments as of 2026-05) still write the unstable type with the singular
public_key field; reading both keeps the gate live for those rooms.