# ECP-0049: TS Ingest, CMAF Canonical (Enforcement)

## Why

HDHomeRun (and many tuner stacks) output MPEG-TS. We still want first-class, native ingest of TS sources.

Separately, the network needs a single canonical chunk container so that hashing, signing, verification, relaying,
and multi-variant manifests stay consistent. That canonical container is CMAF (fMP4).

This ECP clarifies the boundary so "CMAF-only" does not get misread as "no TS support".

## Decisions

- TS is an **ingest input** format.
- CMAF (fMP4) is the **only** on-disk and on-wire chunk container inside every.channel:
  - `init.mp4` + `segment_*.m4s`
- HLS playlists (`index.m3u8`) are allowed only as a **local playback compatibility artifact**.
  - They must reference the CMAF fragments above; playlists are not network objects.

## Implementation Notes

- `ec-node ingest hdhr|linux-dvb|ts|hls` reads whatever the source provides and normalizes to CMAF fragments.
- `ec-moq::HlsWriter` is CMAF-only (no TS segment writer).

## Reversibility

Medium. Reintroducing TS chunks later would require explicit opt-in and a new manifest/object mode, but the default remains CMAF.

