vod: emit EXT-X-DISCONTINUITY across concatenated reconnect boundaries master
A recording that concatenates multiple ingest sessions (the streamer disconnected/reconnected or stopped and restarted) has segments whose decode time (tfdt) restarts near zero mid-stream. The HLS media playlist is one continuous EXTINF timeline with a single EXT-X-MAP and byte ranges into one blob, so without any discontinuity signal a player can't reconcile the backward jump and chokes. Detect and signal it: - metafile builder parses each segment's tfdt (baseMediaDecodeTime) and flags MetafileSegment.Discontinuity when a track's tfdt jumps backward vs its previous segment. A clean single-session recording's tfdt is strictly increasing, so this never fires there. (Confirmed empirically: Event.Number is always 0 from unwrap, and a same-codec reconnect emits no second init event — tfdt is the only signal.) - mediaPlaylist emits #EXT-X-DISCONTINUITY before a flagged segment, and #EXT-X-DISCONTINUITY-SEQUENCE when a clip is trimmed to/after a boundary. This is the same-codec case (timestamp/sequence reset); a mid-stream codec change would also need a fresh EXT-X-MAP per session, not handled here. Keeps the original live signatures intact (no re-MUXL). Verified in the streamplace-2 cgo container: TestMetafileFlagsReconnect- Discontinuity (synthetic reconnect -> exactly one flagged segment per track at the boundary) and TestMediaPlaylist_Discontinuity[TrimmedToBoundary] (playlist emits the tag / sequence); pkg/vod + pkg/spxrpc suites pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>