The media wire envelope now lives in CultLib, so this side can use it rather
than reimplement it. The receiver decodes each media-channel payload into a
GameCultMediaWireRecord, and the ABI carries a kind alongside the bytes so a
caller routes video and audio without parsing anything itself. That was the
last piece stopping this repo from reading a real stream.
A payload that arrives and fails to decode becomes Undecodable and increments a
counter reachable from C. It is not dropped. A consumer that silently discards
what it cannot parse leaves a producer no way to discover its stream is
unreadable — which is exactly how the previous receiver and sender drifted apart
while both were being maintained.
Feedback records decode but yield no payload: they travel the other way and
carry no media, so a caller asking for payloads is not handed one.
Pinned to CultLib a3e6877 on claude/cultmesh-media-stream-contract, which is a
branch rather than main. That pin moves when the branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>