Repository navigation
quest: move HLS record removal to m0 as a declared-grid export - #7616
Conversation
The maintainer moved removing the catalog's per-rendition `hls` field and `<track>.hls` record tracks to m0 on 2026-11-02, decoupled from the time-addressing chain: the export numbers segments on `media.join.interval` from each group's first-frame pts. consumers.md keeps only the swap to group starts. js-hls and producer-retire are deleted as moot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 1460470b8628f61d70ebc17633293ba427d7ba52.
No actionable bugs found in this planning change. Moving record removal into a self-contained m0 quest is a coherent simplification: it removes the temporary JS-record implementation and producer-retirement work, preserves the settled grid/overrun rules, and leaves time-addressing with the later timestamp-source substitution. The explicit clean break, publisher coverage, recorder conversion, and HLS-only on-demand capture proof keep the scope connected.
Verification: static review of the changed quest plans and relevant current exporter code. No implementation, playback, or tests were run; this does not establish runtime conformance of the future segmentation.
(Written by OpenAI)
There was a problem hiding this comment.
ℹ️ No critical issues — one minor documentation suggestion inline.
Reviewed changes
- New m0 quest —
quest/m0/hls-media-grid.mdplans dropping the per-renditionhlscatalog field and<track>.hlsrecord tracks, addingmedia.join.intervaland movingclocktomedia.clock, and numbering HLS/DASH segments on the declared grid from each group's first-frame pts. consumers.mdtrimmed — HLS record/segmentation content is delegated to the m0 quest; only the first-frame-pts to group-start swap remains, and the m0 quest is now in## Required.- Cross-references updated —
archive/README.mdandhls-conformance.mdnow point at the grid instead of the Catalog HLS field;m2/js-hls.mdandm2/producer-retire.mdare deleted with theirm2/README.mdbullets.
Verified: every ](/quest/...) link target in the changed files exists, no dangling references to the two deleted files remain anywhere in the repo, and the cited PRs (#7068 moq-c group_duration_us, #7238 audio demand by default, #7225 closed WIP) and source paths (rs/moq-cli/src/hls/record.rs, rs/moq-hls/src/export/rendition.rs) and symbols (hang::hls, hang::catalog::Hls, moq_mux::hls, the JS zod hls field, root clock) all check out.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 37fa8bbd89591eca864c19738d67404ea6d7fb96.
No actionable bugs found in the update since 1460470b8628f61d70ebc17633293ba427d7ba52, accounting for the merge of main. The m0 Goal and Plan now explicitly cover the breaking HLS-grid work and its next-cut release timing, resolving the earlier scope finding. This is a focused clarification of the existing design rather than added implementation complexity; m1's broader pre-cut goal remains consistent.
Verification: static review of the incremental plan change and related milestone/grid text. No implementation or tests were run; runtime segmentation conformance is not established.
(Written by OpenAI)
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Since the prior pullfrog review (1460470), the only net change is quest/m0/README.md, and it resolves the prior inline finding.
- m0 Goal widened — now names "replacing the catalog's HLS records with a declared segment grid", records that it is a breaking catalog and API change pulled ahead of m1's other planned format changes, and that it lands on
mainand ships with the next cut. - m0 Plan placement recorded — a new paragraph notes the HLS grid quest is the one breaking change here (maintainer, 2026-11-02) and moved out of m1's time-addressing chain.
- m0 Required bullet added — the
HLS export on a declared gridentry now linkshls-media-grid.mdand summarizes the grid export.
The prior thread on m0's stale Goal is addressed and resolved. No new issues, no code/wire/API impact.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
Address CodeRabbit's three findings on #7616: the m1 roadmap's archive entry no longer mentions a per-rendition `hls` field, the conformance test's unaligned ladder shares grid segment numbers while boundaries follow each rendition's keyframes, and consumers.md's Required entry says m0 owns the grid and record removal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: ad5fb7276c31a8f86e410af786679db20c474f25.
No actionable bugs found in the update since 37fa8bbd89591eca864c19738d67404ea6d7fb96, excluding changes merged from main. The archive roadmap, unaligned-ladder conformance requirement, and consumer prerequisite now agree with the m0 grid design. This resolves CodeRabbit's earlier archive, shared-numbering, and ownership findings rather than introducing new ones. Keeping shared segment numbers distinct from per-rendition keyframe boundaries is the right direction, without additional design complexity.
Verification: static review of the three changed plans and their grid/archive context. No tests or playback were run; this is not verification of the future implementation.
(Written by OpenAI)
# Conflicts: # quest/m1/README.md # quest/m1/archive/README.md
main added doc/concept/archives.md, whose HLS paragraph says a recording needs its `hls` record tracks. The archive epic it came from is finished, so the m0 grid quest now names the doc directly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Since the prior pullfrog review (37fa8bb), the new commits fix the three CodeRabbit findings and name the archive doc the grid invalidates. The branch also merged main, which finished the m1 archive epic (moq-dev/moq#7604) and dropped this PR's earlier archive/README.md and m1-roadmap edits.
- Unaligned-ladder conformance corrected:
quest/m1/hls-conformance.mdno longer claims renditions have differing segment numbers; it now says every rendition shares the grid's segment numbers while its boundaries follow its own keyframes. consumers.mdprerequisite clarified: the m0 Required bullet now says it supplies the grid and removes the records, while this quest only swaps the first-frame pts placement for group starts.- Archive doc named:
quest/m0/hls-media-grid.mdnow namesdoc/concept/archives.md(added by #7604) as a doc the grid makes stale, since its HLS paragraph says a recording needs itshlsrecord tracks.
Verified: every /quest/... link in the changed files resolves, no dangling producer-retire, js-hls, or m1/archive references remain, and doc/concept/archives.md exists with an HLS paragraph that matches the quest's claim.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Since the prior pullfrog review (ad5fb72), one commit plus a main merge land on this plan. The commit names the archive doc the grid makes stale; the merge finished the m1 archive epic and dropped this PR's no-longer-needed edits to the m1 index and archive README.
- Archive doc named — the m0 quest's recorder step now names
doc/concept/archives.md, whose HLS paragraph says a recording needs itshlsrecord tracks, so the grid invalidates it. - m1 archive edits dropped by the merge —
main's #7604 finished the archive epic, so this PR no longer editsquest/m1/README.mdorquest/m1/archive/README.md.
Verified doc/concept/archives.md exists with the cited HLS paragraph, every path cited by the changed files resolves (rs/moq-cli/src/hls/record.rs, rs/moq-hls/src/export/rendition.rs, the m1 quest links), and no dangling m1/archive, producer-retire, or js-hls reference remains anywhere in the repo.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

Summary
Plans removing the catalog's per-rendition
hlsfield in m0, from the maintainer's 2026-11-02/quest-planinterview (raised on moq-dev/moq#7436).quest/m0/hls-media-grid.md[L]: hang drops thehlsfield, the<track>.hlsrecord tracks, and A/V segment alignment. The catalog gainsmedia.join.interval, andclockmoves tomedia.clock. moq-mux, moq-c, and@moq/publishdeclare the interval. The HLS/DASH export and recorder read the media tracks and number segments on the grid from each group's first-frame pts. An HLS-only viewer of an on-demand publisher starts capture.consumers.md(m1 time-addressing) keeps only the swap from first-frame pts to group starts, and now requires the m0 quest.m2/js-hls.md(it would have made JS publish records) andm2/producer-retire.md(it bounded record tracks).hls-conformance.mdnow points at the grid instead of the Catalog HLS field. (moq-dev/moq#7604 finished the m1 archive epic and deleted it, so the earlier edits toarchive/README.mdand its roadmap entry were dropped in the merge.) The m0 quest namesdoc/concept/archives.md, which that PR added, among the docs to update. The conformance test's unaligned ladder shares the grid's segment numbers, while each rendition's segment boundaries follow its own keyframes.main, and ships with the next cut. m0's Plan records the placement.Decisions (maintainer, 2026-11-02)
media.clockand@moq/publish.js-hls: ✅ deleted.producer-retire: ✅ deleted, and its WIP draft moq-dev/moq#7225 closed.Review
quest review --base origin/main: Codex gpt-6.1-sol, medium effort, round 3 on 5b8f229 (after a hand-resolved merge ofmainthat deletes the finished archive epic, plus the archive-doc note in the m0 quest). No findings. Round 2 on ad5fb72 also had no findings.quest check --base origin/mainpasses.CodeRabbit findings on 37fa8bb, all fixed in ad5fb72 and acknowledged by CodeRabbit:
(Written by Claude Opus 5.5)
🤖 Generated with Claude Code