Skip to content

Binding playout-delay tests stop racing the native wall clock - #8811

Merged
kixelated merged 2 commits into
mainfrom
quest/m1/binding-delay-tests
Nov 15, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/m1/binding-delay-tests

Conversation

@kixelated

@kixelated kixelated commented Nov 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The Go, Swift, Kotlin, and Dart "audio consumer reports its playout delay" tests pass no max delay to either consumer (MaxUnlimited, max: nil, max = null, max: null), matching the Python and Rust fixes (#8050, #8566). A max of zero skips a group by the native wall clock, so a read starting more than the warmup late never returned.

  • Estimated consumers also get an unset max: their default delay is a stated zero max in Go, and moq-mux's zero default elsewhere, which skips the same way.
  • Kotlin's writer loop (a retry around the cause) is replaced by two plain writes, like the other languages.
  • rs/moq-ffi/AGENTS.md gains a # Tests section with the rule: native timing and decoding are asserted once, in moq-ffi's Rust tests; wrapper tests cover only what the wrapper owns.
  • The finished quest is deleted.

Public API: none. Wire: none.

Decisions

Choices I made without asking, each reviewable:

  • Estimated consumers also pass an unset max (the quest said "both consumers"); min stays zero for them, as in the Python test.
  • The AGENTS.md rule has two bullets: the quest's ownership rule, plus "decoded-media read tests pass no max delay", since that is the cause.
  • The comment explaining the no-max choice is repeated in each language's test rather than centralized.

Validation

  • Reproduced in Go: with the old test plus a 300 ms sleep between the writes and the first read, TestAudioConsumerDelay fails with context deadline exceeded (10 s). With the fix and the same stall it passes (-count=3).
  • just go check, just dart check, and just kt check pass; ktfmt, gofmt, dart format, and swift-format lint are clean; quest check passes.
  • Swift was not run (no Swift toolchain on this Linux host); the change is the same one-line max: nil on both outputs, and CI's macOS job covers it.

Follow-ups

None.

Models

Size: XS
Implementer: Claude, claude-sonnet-5-5, unknown effort (arm A)

Review

Rewritten by quest review after each round.

  • Head: 5f4281a

  • Base: origin/main at 31a5d6b

  • Risk: medium, the base has no RISK.md to name what is always high or customer-facing, so every change is medium

  • Classified: medium by default

  • Reviewer: Codex, gpt-6.1-sol, medium effort

  • Session: 01a1defc-f51d-7471-90a8-1f450f0e0c33, round 1

  • Score: 9/10, The fix consistently removes the wall-clock-dependent skip limit across all four bindings and bounds Kotlin's input, with no actionable regressions found, though tests were not run as instructed.

  • Rounds: 1; first round 0; findings 0: fixed 0, refuted 0, open 0

  • Findings: none

kixelated and others added 2 commits November 15, 2026 03:24
…l clock

The Go, Swift, Kotlin, and Dart audio consumer delay tests pass no max delay,
as the Python and Rust ones do, so a read that starts late under load no
longer waits out its timeout. Kotlin's retry writer loop is gone. The rule
that native timing is asserted once, in moq-ffi's Rust tests, joins its AGENTS.md.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 15, 2026 11:35
@coderabbitai

coderabbitai Bot commented Nov 15, 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 28 minutes.

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

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 017638a4-bf0c-440d-9ac9-e674d97ee71d
Commits

Reviewing files that changed from the base of the PR and between 23b8ba4 and 5f4281a.

Files selected for processing: 6

  • dart/moq/test/moq_test.dart
  • go/wrapper/moq_test.go
  • kt/moq/src/jvmAndAndroidTest/kotlin/dev/moq/SmokeTest.kt
  • quest/m1/binding-delay-tests.md
  • rs/moq-ffi/AGENTS.md
  • swift/Tests/MoqTests/SmokeTests.swift
  • 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

@kixelated
kixelated enabled auto-merge November 15, 2026 11:35

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes: the full diff of the Go, Swift, Kotlin and Dart playout-delay tests, plus the AGENTS.md and quest changes.

  • Go, Swift, Dart tests: the fixed and estimated consumers now pass an unset max (MaxUnlimited, max: nil, max: null), so a late first read no longer hangs on a zero-max wall-clock skip.
  • Kotlin test: the retry writer loop is replaced by two plain writes and a single assertIs<AudioReadFrame> per reader. I checked that the removed imports (Dispatchers, launch, yield, isActive, cancelAndJoin) have no remaining uses and that assertIs is imported.
  • rs/moq-ffi/AGENTS.md: adds a # Tests section that says native timing and decoding are asserted once in Rust, and that decoded-media read tests pass no max delay.
  • Quest file: the finished quest is deleted.

I did not run the tests.

Pullfrog  | View workflow run | Using claude-sonnet-5-5 | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 15, 2026
Merged via the queue into main with commit fabfe5e Nov 15, 2026
10 checks passed
@kixelated
kixelated deleted the quest/m1/binding-delay-tests branch November 15, 2026 11:51
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