Skip to content

feat(hang): describe rendition warmup in catalogs - #5212

Merged
kixelated merged 3 commits into
mainfrom
quest/m1/catalog-warmup
Oct 11, 2026
Merged

kixelated merged 3 commits into
mainfrom
quest/m1/catalog-warmup

Conversation

@kixelated

@kixelated kixelated commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

A receiver cannot tell how far before a seek point decoding must start for audio priming or gradual video refresh. Rounding fractional warmup down can allow presentation before decoder convergence.

Approach

Add optional millisecond warmup to audio and video catalogs in Rust and JS. Serialize Rust durations with the existing private ceiling conversion, preserving explicit zero for warmup and the existing jitter/delay zero rules. Describe random access and rounding in the Hang draft. Omitted and zero warmup preserve immediate access.

Impact

  • Public API: optional AudioConfig.warmup and VideoConfig.warmup (Rust duration, JS milliseconds).
  • Wire: additive optional Hang catalog fields; fractional Rust durations round up to whole milliseconds. Existing catalogs remain valid.

Alternatives

A generic metadata field would leave receiver behavior undefined. Nearest rounding understates an upper bound; fractional wire values would conflict with the integer catalog representation. No consumer behavior changes in this quest.

Validation

Audio and video sub-millisecond regressions fail before the correction and pass afterward, including 1 ns -> 1 ms and 333.2 ms -> 334 ms. All 119 Rust Hang tests, Hang lint/docs, 227 JS Hang tests, draft checks, and just test interop --all pass.

Full scoped validation passes 2,828 primary Rust tests, selected feature checks, JS builds/type checks, documentation, and workflow checks. Local JS bundling fixtures in common/worklet.test.ts and publish/src/file-bundle.test.ts hit their existing five-second limits. Both files are unchanged from main; an identical standalone worklet build measured 4.73 seconds. No timeout or retry workaround was added. Fresh hosted CI validates the full gate on the updated head.

Follow-ups

Consumer warmup and audio priming remain their existing quests. The optional nonnegative millisecond representation is unchanged. The local bundle-test timing limitation remains outside this catalog change.

(Written by GPT-6)

kixelated and others added 2 commits October 10, 2026 09:21
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
@kixelated
kixelated marked this pull request as ready for review October 10, 2026 22:39
@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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 1 minute.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0898c815-a3ba-4333-9fc6-06d0ccb62192

📥 Commits

Reviewing files that changed from the base of the PR and between 6559065 and ab5200b.


📒 Files selected for processing (16)
  • drafts/draft-lcurley-moq-hang.md
  • js/hang/src/catalog/audio.test.ts
  • js/hang/src/catalog/audio.ts
  • js/hang/src/catalog/video.test.ts
  • js/hang/src/catalog/video.ts
  • quest/m1/README.md
  • quest/m1/audio-warmup.md
  • quest/m1/catalog-warmup.md
  • quest/m2/intra-refresh/README.md
  • quest/m2/intra-refresh/consumer-warmup.md
  • quest/m2/intra-refresh/export-sync-flags.md
  • quest/m2/intra-refresh/h264-import.md
  • rs/hang/src/catalog/audio/mod.rs
  • rs/hang/src/catalog/millis.rs
  • rs/hang/src/catalog/root.rs
  • rs/hang/src/catalog/video/mod.rs

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T22:41:49.386253Z 7234080 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 723408054b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread rs/hang/src/catalog/video/mod.rs Outdated
Co-Authored-By: GPT-6 <noreply@openai.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Ready to merge: the audio/video warmup rounding finding is fixed and resolved. Serialization now rounds fractional milliseconds upward while retaining optional zero; regression tests reproduce the original early-presentation bug. All current-head hosted checks pass, including Check, Test, Android, Windows, and macOS. Local Hang tests, draft validation, and full cross-language interop also pass. The unchanged local bundle-test time limits are documented in the PR; those fixtures pass in hosted CI.

Public API/wire impact remains the approved optional warmup fields in Rust/JS and the catalog draft, with explicit upward rounding for the integer millisecond upper bound. No other scope changes. Enqueueing the reviewed correction at ab5200b under the current contribution policy for a push receiving no new review before CI completes.

(Written by GPT-6)

@kixelated
kixelated added this pull request to the merge queue Oct 11, 2026
Merged via the queue into main with commit 6bf8595 Oct 11, 2026
8 checks passed
@kixelated
kixelated deleted the quest/m1/catalog-warmup branch October 11, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant