feat: close STREAMING.md production readiness gaps
- Added run ID + unique segment naming (r-{ISOTIME}/seg-{seq}.m4s)
- Added fsnotify watcher for real-time R2 segment upload (~7s)
- Added atomic manifest publication (temp key → CopyObject)
- Fixed manifest Cache-Control: public, max-age=1, s-maxage=2, must-revalidate
- Added hls.js error recovery: bounded retries (5x), exponential backoff, reconnecting UI
- Enriched /health endpoint: run_id, active_item, last_segment_seq, last_r2_pub, consecutive_failures, unhealthy detection
- Updated tests: HealthHandler (new fields + unhealthy), player error recovery test
- Updated TODO.md, BACKLOG.md, DONE.md, MEMORY.md
This commit is contained in:
1 parent
f6ca89747e
commit
18459a9811
12 files changed
+699
-48
No files matched your search
@@ -71,10 +71,20 @@
|
||||
|
||||
See `DEVELOPMENT.md` for detailed checklist.
|
||||
|
||||
## Streaming Pipeline Gaps (2026-08-10 audit)
|
||||
## Streaming Pipeline Gaps (2026-08-10 audit → 2026-08-10 implemented)
|
||||
|
||||
STREAMING.md contract vs playlist.go/main.ts implementation. See Backlog for full details.
|
||||
|
||||
- [x] Continuous R2 sync during playout (HIGH) — implemented: fsnotify watcher uploads segments within ~7s
|
||||
- [x] Globally unique segment naming with run ID (HIGH) — implemented: `r-{ISOTIME}/seg-{seq}.m4s`
|
||||
- [x] Atomic manifest publication with temp key (MEDIUM) — implemented: upload to .tmp, then CopyObject
|
||||
- [x] Manifest Cache-Control: add must-revalidate + s-maxage split (LOW) — implemented: `public, max-age=1, s-maxage=2, must-revalidate`
|
||||
- [ ] CORS headers on HLS responses from media.linearvoid.tv (MEDIUM) — infrastructure, needs Cloudflare R2 CORS config
|
||||
- [x] Player error recovery: retries, backoff, reconnecting state (MEDIUM) — implemented: hls.on(ERROR) handler with exponential backoff
|
||||
- [x] Health endpoint: add active item, revision, run ID, segment info (LOW) — implemented: full STREAMING.md contract fields
|
||||
|
||||
## Streaming Pipeline Gaps (2026-08-10 audit — LEGACY)
|
||||
|
||||
- [ ] Continuous R2 sync during playout (HIGH) — currently only on FFmpeg exit
|
||||
- [ ] Globally unique segment naming with run ID (HIGH) — currently strftime only
|
||||
- [ ] Atomic manifest publication with temp key (MEDIUM)
|
||||
|
||||
Reference in new issue
Block a user