1.8 KiB
1.8 KiB
ECP-0072: CMAF Seedbox Invariant For Relay Archive
Status: Implemented
Context
Archive replay currently stores and serves relay groups exactly as received, but many existing broadcasts were published in legacy container mode. Those bytes are not browser-HLS compatible, so archive playback fails despite a valid timeline and object store.
Decision
Make wt-publish default to CMAF passthrough (--passthrough=true) so:
- relay subscribers and archive workers observe the same CMAF fragment bytes (
moof+mdat); - archive replay can serve those exact bytes without re-encoding;
- the archive acts as a history seedbox of previously played chunks.
Update the NixOS module default services.every-channel.ec-node.passthrough = true to keep host deployments aligned with the seedbox invariant.
Rationale
- Zero-transform archive path is simpler and more auditable.
- Exact-byte retention avoids drift between live and replay.
- Browsers can play CMAF fragments via standard HLS tooling; no custom legacy converter is required for new streams.
Alternatives considered
- Keep
passthrough=falseas default for all publishers. Rejected because archive replay needs byte-compatible CMAF fragments. - Re-encode archived payloads during replay. Rejected because it adds complexity and breaks exact-byte history semantics.
Rollout / teardown
- Flip default
passthroughto true in CLI and Nix module, then verify new archives play via HLS. - Teardown by explicitly setting
passthrough=falseon hosts needing legacy framing.
Reversibility
- Operators can explicitly set
passthrough = falseper host to revert to legacy framing. - Existing archived legacy data remains readable for timeline/index use, but may require separate migration tooling for browser playback.