every.channel/evolution/proposals/ECP-0072-cmaf-seedbox-invariant.md

26 lines
1.3 KiB
Markdown

# ECP-0072: CMAF Seedbox Invariant For Relay Archive
## 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.
## 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.