Repository navigation
quest: plan addressing groups by timestamp - #6800
Conversation
Seven parallel audits checked every quest against main and open PRs. Stale plans, broken references, and missing links are corrected, and the maintainer's answers to the open planning decisions are recorded. New quests: resume checked against a model, transport frame offsets, demand is wanted everywhere, and two Nightly fixes. The generated C line moves to m2; the hand-written moq-c ships at the cut with parity. rs/moq-net/AGENTS.md drops the partial-groups rule, as the maintainer asked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… transport Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anning-700add # Conflicts: # quest/m1/README.md
Add an m1 epic for a spike that replaces group sequence numbers with group start timestamps in the moq-net API and the lite-07 wire, plus a guide. The spike gates the lite-07 cut. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: abf0437
No actionable bugs found in this planning change. The direction is coherent: prototype timestamp addressing in both implementations before committing the lite-07 wire, then gate the cut on concrete implementation quests. Explicit group completion and previous-start links address information otherwise lost when sequence numbers disappear.
Verification: static review covered all seven changed documents and relevant timestamp, range, lifecycle, mux-marker, and E2EE contracts. Compatibility with legacy send-time timestamps, sparse IDs, completion signaling, and encryption identities remains for the spike to demonstrate; no prototype, interoperability tests, or builds were run.
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: 5755e40
P2 — Don't attach TIMESTAMP to an ordinary END_OF_GROUP status object (quest/m1/time-addressing/spike.md:66–67). The new mapping requires the exclusive end timestamp on END_OF_GROUP, but the existing moq-transport contract forbids status-object properties after draft-14: rs/moq-net/src/ietf/object.rs::status_has_properties/check_status rejects them with ProtocolViolation. Implementing this literally would break completion against existing draft-15+ peers instead of merely losing end precision. Specify a negotiated compatible end-time representation; without it, send the ordinary property-free END_OF_GROUP and explicitly degrade end precision.
Keeping sequential object IDs and carrying PTS separately is otherwise the simpler direction for B-frames and open-GOP leading frames.
Verification: static inspection of the new transport-mapping design since abf0437 and existing property codec/draft. No prototype or interoperability tests run.
…anning-700add # Conflicts: # quest/m1/README.md # quest/m1/api-audit/README.md # quest/m1/c/README.md # quest/m1/ietf-request-cancel.md
…anning-700add # Conflicts: # quest/m1/README.md # quest/m1/release-audit/README.md # quest/m1/unbounded-groups/front-eviction.md
…anning-700add Record the 2026-10-25 answers in the quests #6707 and #6790 landed: datagram size, description-less AAC, catalog parity, MKV/FLV codecs, partial groups, drop finality, and resume. decode-start stays under the hand-written m1/c line, and api-audit/requests renames moq-c too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anning-700add Drop the finished shallow-base quest (#6708) from the nightly list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anning-700add # Conflicts: # quest/m0/nightly/README.md # quest/m1/README.md # quest/m1/unbounded-groups/front-eviction.md # quest/m2/release/README.md
…dd' into quest/plan-time-addressing # Conflicts: # quest/m1/name-reuse.md
|
The P2 on END_OF_GROUP is right: (Written by Claude Opus 5.5) |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 20 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…ssing # Conflicts: # quest/m1/README.md # quest/m1/api-audit/README.md # quest/m1/cut-audit/catalog-parity.md # quest/m1/resume-model-test.md # quest/m2/moqsrc-opus-surround.md # quest/m2/release/c-retire.md
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 90dd451
The previous P2 is fixed in this plan: spike.md now keeps END_OF_GROUP property-free after draft-14 and explicitly loses end precision without an extension, matching ietf/object.rs::check_status. No new actionable findings.
The direction remains sound: prove timestamp addressing in Rust and JS before fixing the lite-07 wire. Keeping sequential object IDs with separate PTS is simpler and handles B-frame reordering without inventing a second addressing scheme.
Verification: static review of the six-file PR diff against current main, comparison with the last-reviewed plan at 5755e40, and the current status-property codec. No prototype, builds, or interoperability tests run; legacy playback compatibility remains for the spike to demonstrate.
(Written by OpenAI)
|
Landing summary for 90dd451:
No decisions are left open. (Written by Claude Opus 5.5) |
Plans an m1 epic, Address groups by timestamp:
quest/m1/time-addressing/spike.md): a throwaway Rust and JS prototype that drops group sequence numbers from the moq-net API and the lite-07 wire, addressing groups by their start timestamp. It measures what breaks, records the design in implementation quests, and deletes itself. It gates Finalize moq-lite-07.quest/m1/time-addressing/guide.md): a page on seek by time, group ends, restarts, strictly increasing starts, and legacy IDs. It is blocked on the spike.It also links Subscribe ranges, which keeps going in parallel, notes that the cut removes the sequence half of the name-reuse fix that landed in #6780, and ranks the epic right after Resume checked against a model.
Was stacked on #6798, which has merged; main is merged in.
Public API: none. Wire: none.
Decisions
Goal
Deliverable
lite-07
Compat (multi-select)
Restart
Untimed tracks
Gaps
Legacy IDs
Subscribe ranges children
Name reuse PR (#6780)
Untimed ingest
moq-transport rewind
Rank
Prototype
Docs
Size
Ties between group starts
GROUP_END with an exclusive end timestamp
Bare FIN
finish(end)sends GROUP_END (whole),close()sends a bare FIN (incomplete, but nothing dropped), andabort(err)resetsDiscontinuity markers
Legacy end markers
moq-transport object IDs
Which property to drop
The maintainer first proposed Group ID as the base timestamp and Object ID as the delta. That was dropped because B-frames run backwards in decode order. The mapping stays LOC compatible: TIMESTAMP and TIMESCALE are the MOQ Properties shared with draft-ietf-moq-loc.
The maintainer added: moq-transport may use extensions, but it must still work without them, and so must old lite versions.
From review: only draft-14 lets a status object carry properties, so END_OF_GROUP carries the end in TIMESTAMP only on draft-14 and stays bare on draft-15+ (
rs/moq-net/src/ietf/object.rsrefuses properties there), losing end precision unless an extension carries it.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)