Repository navigation
fix(test): repair interop fixtures and wire-compat pin; give Interop 90 minutes - #7672
Conversation
Quest-Claim: 0d512307d21556c7
…Interop 90 minutes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
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 6 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. CodeRabbit Verify
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Buffering fixture stub —
test/interop/clients/js/buffering/main.tsaddsconfig: new Signal(undefined)tovideo.source.out, matching theeffect.get(watch.video.source.out.config)read thatbuffering-indicator.ts:23has done since #7155.undefinedresolves to video-enabled, so the stall/hide logic is unchanged and the effect no longer throws. - Interop job timeout —
timeout-minutes60 → 90 in.github/workflows/interop.ymlfor the job-level hang net; no caller cap inrelease-gate.yml, so the new value applies. - Quest rewrite —
quest/m0/interop-green/README.mdgains a## Waitingitem for the post-merge scheduled pass and records the two causes fixed here.
The stub is the only place a fake watch is fed to bufferingIndicator; center-play.test.ts and unsupported-indicator.test.ts stub only their own component and are unaffected. Verified by tracing bufferingIndicator against the fixture for both the audio and video stall cases.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 30365b3
No actionable bugs found. Supplying the missing signal fixes the fixture at its actual dependency; retaining a bounded timeout and a post-merge scheduled-run check is a reasonable direction.
Static GitHub review only; I did not run browser tests or the Interop workflow.
# Conflicts: # quest/m0/interop-green/README.md
The video decoder reads broadcast.in.name for its stats key since #7222. The open-GOP fixture's stubbed broadcast lacked it, so the decoder effect threw and the recovery test timed out at 60 seconds. Record this and the stale wire-compat planned break in the quest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
moq-cli 0.14.11 and later releases made the planned break stale, failing scheduled wire-compat. `just test wire-compat --remeasure` against moq-cli 0.14.12 and moq-relay 0.17.12 gives the same result: all 16 cross-version lite-07-wip cells fail, its FETCH capability check and lite-01 through lite-06 pass. 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 head 921d7c9 against base 0eff070.
I found no new actionable issue in the update. Adding the missing broadcast-name signal addresses the open-GOP fixture's new dependency, and the planned-break pin and reason are updated together. The quest retains the scheduled Interop pass as a post-merge condition rather than treating local checks as proof.
Static GitHub-only review; I did not run the browser fixtures, wire-compat remeasurement, or scheduled Interop workflow.
There was a problem hiding this comment.
ℹ️ No critical issues — one wording fix inline.
Reviewed changes
Reviewed the delta since the prior Pullfrog review at 30365b3c7; both fixture repairs and the wire-compat refresh check out.
- open-GOP fixture — added
in.namesovideo/decoder.ts:303can build its stats key instead of throwingreading 'name'; the stub now matcheswatchBroadcastindecoder.test.ts:39, andin.nameis the only broadcast field the decoder reads that was missing. - Wire-compat remeasure — re-pinned
moq-lite-07-wipto moq-cli 0.14.12 / moq-relay 0.17.12 and refreshed the reason's date. The registries confirm those are the current newest stable releases and@moq/netis still 0.4.7, sostale()will pass. - Quest rewrite — records the new causes, the
## Waitingpost-merge check, and links both fallback-stall runs.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Reviewed the delta since the prior Pullfrog review at 921d7c9b1; the only change is documentation.
- Quest README wording —
quest/m0/interop-green/README.mdnow reads "the fallback audio stall, which hit onmoq-lite-07-wipin [run] and [run]", applying the prior review's suggestion verbatim. The sentence is grammatical and the two linked runs are unchanged.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Problem
/quest/m0/interop-green/README.md had one step left: confirm that a scheduled Interop run and a scheduled Video run each pass. Video passed (run 41497602703). Interop still failed:
main. The twothe paused play button stays clickable during audio/video stallingtests also failed.moq-lite-07-wipfallback audio stall failed too. Then the job hittimeout-minutes: 60and was cancelled during its last test step.Causes:
test/interop/clients/js/buffering/main.tshas novideo.source.out.config. moq-dev/moq#7155 madebufferingIndicatorread that field. The indicator's effect throws (effect error TypeError: Cannot read properties of undefined (reading 'peek')) before it setsdisplay, so the spinner never hides after pause.test/interop/clients/js/open-gop/main.tshas noin.name. Since moq-dev/moq#7222, the video decoder reads it for its stats key. The decoder effect throws (reading 'name'), so the test times out at 60 seconds.moq-lite-07-wipplanned break intest/interop/compat/planned-breaks.jsonpins moq-cli 0.14.10 and moq-relay 0.17.10. The 0.14.11 release made it stale:error: stale planned break: moq-lite-07-wip, moq-cli changed from 0.14.10 to 0.14.11; run just test wire-compat --remeasure.Changes
config: new Signal(undefined)to the buffering fixture's stubbedvideo.source.out.in: { name: new Signal(Moq.Path.from("open-gop")) }to the open-GOP fixture's stubbed broadcast.just test wire-compat --remeasure. That run re-pinned it to moq-cli 0.14.12 and moq-relay 0.17.12;@moq/netis unchanged. The result matches the 2026-10-30 measurement: all 16 cross-version lite-07-wip cells fail, while its FETCH capability check and every lite-01 through lite-06 cell pass. I updated the reason's date to match.timeout-minutesfrom 60 to 90. Recent scheduled jobs took 41, 39, 41, 45, 56, 56, 48, and 60 minutes. The limit is meant to catch hangs, but here it cancelled a run that wasn't hung.## Waitingitem for one passing scheduled Interop run after this lands, plus a record of the causes this PR fixes.Choices made without asking
compat.shprints and performs itself, and its result matches the maintainer-accepted planned break. (Draft moq-dev/moq#7716 listed the open-GOP stub as a follow-up and carries the same buffering line as this PR, so the two merge cleanly in either order.)two peer connections complete MoQ SETUP and transfer a frame without a relaytimed out in only one scheduled run (41668668824). It passed locally (just test p2p: 1 pass in 2.5 s). The quest says to triage it if it recurs.live incumbent fallback plays,audioStalled: true) matches the symptom recorded inquest/m0/test-flakes-2/ietf22-fallback.md, so the quest links both runs there as evidence.interop.sh,compat.sh,harness.sh, andtest/README.md. This PR changes none of them, andplanned-breaks.jsonstill pins the same keys thatcompat.shreads.Validation
Run under
nix developon head921d7c9b1b, after mergingorigin/main:just test harness: before the open-GOP fix, 41 pass and 1 fail (open-GOP,reading 'name'). The buffering stalling tests pass. After the fix,bun test ./open-gop.browser.ts ./harness.browser.tsgives 7 pass, 0 fail.just test wire-compat --remeasure: the run passes; its results are described under Changes.bun test test/interop/compat/claims.test.ts test/interop/compat/resolve.test.ts: 14 pass.just gh check(actionlint, zizmor, alert coverage, check-runs, test inventory): passes.biome checkon the touched fixtures and JSON, andtsc --noEmitfor the JS interop client: pass.quest check --base origin/mainpasses.Public API: none. Wire: none.
Review
quest review --base origin/main), gpt-6.1-sol, medium effort, round 1 of a new session on this headFollow-ups
🤖 Generated with Claude Code
(Written by Claude Opus 5.5)