# 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=false` as 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 `passthrough` to true in CLI and Nix module, then verify new archives play via HLS. - Teardown by explicitly setting `passthrough=false` on hosts needing legacy framing. ## Reversibility - Operators can explicitly set `passthrough = false` per 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.