The frame below is rendered from a srcdoc with sandbox="allow-scripts" and deliberately no allow-same-origin. The browser therefore gives it an opaque origin (it reports "null"), so the parent cannot query its DOM — the only channel is postMessage.
The contract is a three-step handshake: ready → ping → pong. The frame announces wcq-ready on load; you send wcq-ping with a nonce; it replies with wcq-pong echoing the nonce plus a computed value.