# Baby steps These are the smallest useful steps to get a real MoQ pipeline running end-to-end. 1. Capture and inspect transport streams - Confirm HDHomeRun discovery on the local network. - Fetch lineup JSON and map it to `ec-core::Channel`. - Open a raw MPEG-TS stream for a single channel and write it to disk. 2. Deterministic transcode + chunking - Choose a reference ffmpeg profile (encoder, GOP, keyframe cadence). - Emit fixed-duration chunks with deterministic timestamps. - Hash chunks and verify that repeated runs are byte-identical. 3. MoQ object model - Model track/group/object IDs and object metadata in `ec-moq`. - Map each chunk to a MoQ object with deterministic naming. - Validate that object IDs are stable across runs. 4. Single-node publish + replay - Build a local relay that stores objects on disk. - Publish from the chopper to the relay. - Replay stored objects to a local subscriber and validate playback. 5. Multi-node relay mesh - Integrate iroh for node discovery and routing. - Replicate objects between two relays. - Verify that a subscriber can pull from either relay. 6. Client surfaces - Tauri shell that lists available tracks and plays one. - CLI that can subscribe and dump objects for inspection. - Static web UI that connects to a relay gateway. 7. Time-synchronized chunking - Parse PCR + STT/TDT/TOT to anchor chunk boundaries to broadcast UTC. - Emit deterministic TS chunks with sync metadata. - Promote source-scoped streams to broadcast-scoped streams when synced. 8. MoQ publish path - Wrap time-aligned chunks as MoQ objects (timing metadata attached). - Write objects to the local relay store. - Wire to iroh transport once MoQ session adapters are stable. 7. Production hardening - Crash recovery and backfill. - Observability: tracing, metrics, object retention. - Network policies for DMCA resilience and takedown mitigation.