Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedNext included review available in 36 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (17)
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 |
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. |
# Conflicts: # quest/m1/README.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3610b8463e
ℹ️ 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".
| in `moq_mux::codec::aac::Config::encode`, as `@moq/hang`'s | ||
| `audioSpecificConfig` already refuses since #4119. This mirrors the parse | ||
| side, which since #4093 refuses reserved values instead of guessing stereo. |
There was a problem hiding this comment.
Keep the JavaScript AAC refusal in scope
@moq/hang does not already refuse unsupported channel counts: js/hang/src/util/aac.ts:47-53 returns stereo configuration 2 for every unsupported count, and its test explicitly verifies that 7 channels encode as stereo. Limiting this quest to Rust therefore leaves the silent channel-layout corruption in JavaScript. Restore the JS fallibility change and its tests instead of treating #4119 as having landed it.
AGENTS.md reference: AGENTS.md:L16-L17
Useful? React with 👍 / 👎.
| - A timeline gap is skipped at pace (the clock keeps running). A growing | ||
| archive is followed as new timeline segments land. A finite archive ends | ||
| each track after its last group. |
There was a problem hiding this comment.
Define how paced replay learns finality
The archive contract explicitly has no completion marker (quest/m1/archive/README.md:60-75), and the reader deliberately treats a missing tail as potentially growing, crashed, or incomplete (quest/m1/archive/reader.md:45-49). Consequently, after the last currently visible segment, the importer cannot distinguish a finite archive that should end its tracks from a growing archive it should continue following. Require an explicit out-of-band finality or one-shot replay mode before promising both behaviors.
Useful? React with 👍 / 👎.
| - Rename the method for Kotlin only in `rs/moq-ffi/uniffi.toml`; every other | ||
| binding keeps `close()`. Kotlin's `close()` still only releases the handle. |
There was a problem hiding this comment.
Wire the Kotlin rename into binding generation
rs/moq-ffi/uniffi.toml does not exist, and neither Kotlin generation path loads such a file: kt/scripts/generate.sh:80-82 and rs/moq-ffi/build.sh:166-170 invoke bindgen without --config (only the Dart invocation supplies one). Implementing this bullet as written therefore cannot produce end(), while remove.md now depends on this quest before deleting Kotlin's only force-end method. Specify a generated API or wrapper approach that both generation paths actually consume.
AGENTS.md reference: AGENTS.md:L64-L67
Useful? React with 👍 / 👎.
|
MERGE Positive improvement? Yes. Pure quest planning from the next-16 wave (#4108–#4126): concrete m1 items ( Worth the complexity? Yes—cheap bookkeeping. XS/S/M sizing and README wiring keep the queue legible. Notable calls look right: shared clock for paced replay (viewers stay in sync), Kotlin-only Different approach? Not for a docs-only plan PR. Execution choices (e.g. checkpointed listing marker vs This is an automated review, not the maintainer's decision |
Problem
The agents from the latest quest wave (#4108-#4126) reported follow-ups that no quest covered.
Approach
Planned with the maintainer:
m1
archive/paced-replay[M]:moq import archivepushes recorded groups to live subscribers on one shared clock per import, likeffmpeg -re, soexport tsand web watch play a replay.archive/provenance[S]: a replay's catalogarchiveentry names its timeline, replay path, store URL (no credentials), and format version.broadcast-close/kotlin-end[XS]: Kotlin exposesclose()asend(), sinceAutoCloseable.close()takes the name.remove.mdnow requires it, so Kotlin keeps a forced end.import-discontinuity[S]:import::Track::discontinuity(), called by moqsink on a seek and exposed in libmoq and moq-ffi. This replaces the "add one when such a caller appears" note injitter-flush-clock.md.js-bare-fin[S]:@moq/netaborts on a bare FIN, matching Rust (fix(net): end an IETF subscription from its PUBLISH_DONE #4083) and the drafts. Requires JS track tail.test-flakes[M]: fix three tests that fail underjust checkload (two JS timeouts, andnoq_cert_reloadrunning out of file descriptors) at the cause, without raising timeouts.m2
archive-recovery-listing[M],archive-backward-timestamps[XS]: DVR recovery listing proportional to change, and refusing backward timestamps on resume.auth-expired-error[S]: an additiveError::Expiredacross lite, moq-transport, JS, and the bindings.obs-wave-layout[XS]: the OBS source maps channel counts to WAVE default layouts.aac-encode-refusalupdated: JS already refuses (feat(audio): carry surround layouts through decode, remix, and playback #4119), so Rust refuses to match; a PCE is a later additive change.Impact
None: quest files only.
Alternatives
🤖 Generated with Claude Code
(Written by Claude Opus 5.5)