Repository navigation
Conversation
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A catalog can reference a rendition in another broadcast, but cannot offer a whole broadcast without first reading its catalog. Reading that catalog can itself start an on-demand producer.
Approach
Add a
contributionsmap of IDs to relativebroadcastreferences in Rust Hang, JavaScript Hang, and the Hang draft. Watch leaves listings inert;Broadcast.contribution(effect, id)explicitly opens a child broadcast scoped to the caller's effect. The child remains stable across unrelated parent catalog updates; missing IDs stay disabled/offline, and entry replacement or removal updates the child. Existing video/audio sources consume it, keeping rendition names separate from the referring catalog. Further references require another explicit selection.Impact
contributions; malformed entries and escaping references are refused by updated readers.catalog::ContributionandCatalog.contributions;Catalog::mediapreserves these references.Alternatives
Recommend this scoped child API over flattening catalogs into synthetic rendition IDs. The separate catalog-track-ID quest can add optional wire track names without changing contribution scoping. Automatic expansion in the default quality picker is outside this draft; explicit selection opens the contribution catalog before its internal rendition can be chosen.
Validation
HEAD: af46704
Tested base: 73d7f78
Main advanced during validation (observed 8b58a73). These results certify the stated head/base only; merge the current base and rerun both gates before any merge.
just fixpassed, including native and WebAssembly dependents. Watch type-check passed. All 27 broadcast tests passed (140 assertions), including deterministic local-origin proof of inert listing, selected contribution catalog demand, same-name media routing through Video.Source, scope cleanup, missing contribution refusal, malformed entries and root escape. The lifecycle regression failed before the fix with 3 selections instead of 1, then passed with stable child identity through metadata changes, path replacement and removal. Final clean-headjust checkpassed, including 2,863 native tests, WebAssembly lint, optional media-feature lanes, JavaScript checks, and draft checks.just test interop --allpassed the full client matrix, unauthorized-name refusal, browser refusal close code, and finite track-tail checks.An earlier clean-head
just checkat a4ce024 ran 2,863 native tests: 2,862 passed, one export linger test failed atrs/moq-cli/tests/export.rs:357with "the returned broadcast went out" (6 skipped). Its one isolated characterization on unchanged base 73d7f78 passed. This remains unexplained; no unrelated fix or retry-to-green is included.Follow-ups
Blocked on the existing catalog reference pinning quest, whose prerequisites include JS serving identity #5254 and export source pinning #5252. No open PR for catalog-reference pinning itself was found. This draft does not yet carry an optional expected epoch or keep the first resolved contribution instance for the parent catalog lifetime. A replacement can resolve to a newer instance; the path-change test proves routing updates, not identity continuity. Extend Contribution and the child resolver with the shared reference identity primitive when available, including nested media/catalog requests, known-mismatch refusal and epochless best effort. Do not duplicate that generic owner.
Keep this draft for API review: recommend explicit child selection, with automatic picker behavior handled separately if needed. Releases remain separate. No version bump or deployment.
(Written by GPT-6 Astra)