Skip to content

quest(m1): extend the TS video-content flake with its evidence - #5499

Merged
kixelated merged 2 commits into
mainfrom
quest/plan-ts-content-flake
Oct 14, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/plan-ts-content-flake

Conversation

@kixelated

@kixelated kixelated commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Extends quest/m1/test-flakes-2/ts-video-content.md, which #5497 planned while this PR was open, and resizes it from [S] to [L]. It started as a separate quest; on rebase I folded it into the existing one. The README entry now describes the broader goal: the decoded-content checks are deterministic and fail only on real loss.

The TS workflow's decode.py check (from #5328) failed 4 of 41 completed PR runs on branches that don't touch TS, including #5446 at f6629aa and #5148. Every failure was in the default just test ts round. Main has no run yet.

Evidence

  • CI: every failing capture was 24531556 bytes, against 23281544 in passing runs. The 1 s difference at the padded 10 Mb/s means the failing exports started one GOP earlier (group 1, not group 2). Best hypothesis: startup acquisition keeps only the start of that first group, then skips to the next. Frames dropped during acquisition in rs/moq-mux/src/jitter.rs are neither counted nor logged.
  • Local reproduction on a loaded host failed 3 of 4 runs:
  • In every case the check caught real loss. So the quest fixes the exporter, not the grader, with a mocked-time regression for each cause, and every drop is counted and logged.

Decisions

The maintainer approved this in session, so the interview was skipped:

  • ✅ Extend the existing quest instead of adding a second one.
  • ✅ Goal: the check is deterministic and fails only on real corruption. Unit and integration tests mock time.
  • ✅ Size [L]: at least two exporter mechanisms (startup truncation and silent audio drops), plus counting every drop.
  • ✅ Keep decode.py as strict as it is. No retry, wider budget, or --delay bump.
  • ✅ (Codex review) Keep the zero-budget live-edge pick and make the chosen group atomic, rather than starting with the full budget.
  • Left open for the implementer to put to the maintainer: whether a drop caused by host starvation fails decode.py or a separate named check (recommended: a separate check).

Impact

Quest files only. The planned work changes no public API (a drop count may appear in the exporter's summary) and no wire format.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 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-14T04:43:34.186266Z 60aff09 PR opened
ℹ️ 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.

@coderabbitai

coderabbitai Bot commented Oct 14, 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 7 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
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e67ae604-92f9-49c5-a8a6-520dc6f3040b
📥 Commits

Reviewing files that changed from the base of the PR and between de7964c and 21b738a.

📒 Files selected for processing: 2
  • quest/m1/test-flakes-2/README.md
  • quest/m1/test-flakes-2/ts-video-content.md
  • 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 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: 60aff0914e

ℹ️ 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 on lines +91 to +93
export starts at a whole group, so acquisition admits or drops a group
entirely rather than emitting a prefix, and the subscription carries its
budget from the start. Each fix lands with a regression that fails without

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep live exports at the newest group

With the default nonzero --delay, carrying the budget on the initial subscription changes tune-in semantics: ExportSource::live currently uses a zero budget specifically to start at the newest group (rs/moq-mux/src/container/source.rs:75-77,233-235), whereas the full budget permits starting at the oldest retained group it reaches. That can add startup latency and replay content instead of merely fixing partial-group admission, so either preserve the zero-budget live-edge selection while making the chosen group atomic, or explicitly treat and document this as a user-visible API change rather than declaring no API impact.

AGENTS.md reference: AGENTS.md:L60-L60

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Agreed. In a311d74 the quest drops the 'budget from the start' recommendation: it keeps the zero-budget live-edge pick in ExportSource::live and makes the chosen group atomic, and it calls out the full-budget start as a user-visible change to avoid.

(Written by Claude Opus 5.5)

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed commit a311d74.

One P2 planning issue below: consolidate this with the TS video-content quest that #5497 has now merged, rather than leave two required plans owning the same failure.

The investigation and explicit drop accounting are useful additions. The latest commit addresses the existing live-edge finding: it preserves newest-group selection instead of changing tune-in into retained-history replay. Whole-group acquisition should remain a hypothesis to validate against failing captures. When consolidating, preserve the existing quest's caveat that #5481's shared-clock changes affect this pipeline; calling every cited branch unrelated to TS is too broad.

Verification limits: static GitHub inspection of the plans, relevant source/checker paths and current discussion. No tests run, failure artifacts downloaded, or historical/local loss reproduced; the stated cause remains unverified.

Comment thread quest/m1/test-flakes-2/README.md Outdated
- [Handshake ACK](/quest/m1/test-flakes-2/handshake-ack.md) - the impaired cluster drill's connect survives a lost handshake ACK
- [Auth refresh mocks time](/quest/m1/test-flakes-2/auth-refresh-mock-time.md) - moq-relay's auth refresh and fixed-lease tests measure a grant's life on one mocked clock
- [uring teardown close](/quest/m1/test-flakes-2/uring-teardown-close.md) - moq-uring's published-close teardown test holds under load, fixed at its cause
- [TS decoded content](/quest/m1/test-flakes-2/ts-decoded-content.md) - the TS workflow's decoded-content check fails only on real loss, and the exporter names every frame it drops

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

[P2] Consolidate the existing TS flake quest

#5497 has now merged quest/m1/test-flakes-2/ts-video-content.md, which already owns this same video-content failure and startup investigation. Adding another independent required quest leaves two plans for the same fix, sized [S] and [L], without saying which supersedes the other. Fold the additional audio-loss evidence and drop-accounting work into that existing quest, or explicitly replace it and its README entry, so the implementation and completion criteria have one owner.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in f565092: there's no separate quest anymore. Its evidence, the audio-loss mode, and the drop accounting now live in the existing ts-video-content.md (resized to [L]), and the README has one entry for it. 21b738a restores the #5481 caveat: that branch changed the shared clock this pipeline reads, so it doesn't count as unrelated.

(Written by Claude Opus 5.5)

#5497 planned test-flakes-2/ts-video-content.md while this PR was open,
so the evidence folds into it instead of a second quest: the 4 of 41 CI
failures, the one-GOP-earlier join they share, a local reproduction of
two more silent-loss modes, the hypotheses, and mocked-time fixes that
keep the live-edge pick and make the chosen group atomic. Resized to L.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated force-pushed the quest/plan-ts-content-flake branch from a311d74 to f565092 Compare October 14, 2026 04:52
@kixelated kixelated changed the title quest(m1): plan the TS decoded-content flake quest(m1): extend the TS video-content flake with its evidence Oct 14, 2026

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed commit f565092, compared with a311d74 while excluding rebased main changes.

The consolidation finding is fixed: the PR extends the existing ts-video-content.md to cover audio loss and drop accounting, keeps one README entry, and no longer creates a duplicate quest. The explicit newest-group/live-edge constraint is preserved. No new actionable bugs found in this update.

One previously noted factual qualification remains: the evidence still calls all cited branches unrelated to TS, although the cited #5481 branch changes shared clocks used by the pipeline. Preserve that caveat when using these runs to narrow the cause.

Direction: one investigation with strict content checks, observable drops and cause-specific regressions is appropriate. Static GitHub review only; no tests run or failure captures reproduced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed commit 21b738a, focusing on the correction since f565092.

The remaining historical-evidence caveat is addressed: #5481 is separated from the unrelated branches, its shared-clock changes are identified, and the plan requires checking failing captures against #5471/#5481 before excluding them. Consolidation and the newest-group startup constraint remain intact.

No remaining actionable findings in the reviewed updates. The evidence now supports a more careful investigation without prematurely excluding relevant changes. Static GitHub inspection only; no tests run or failure captures reproduced.

@kixelated
kixelated added this pull request to the merge queue Oct 14, 2026
Merged via the queue into main with commit 7decf5a Oct 14, 2026
4 checks passed
@kixelated
kixelated deleted the quest/plan-ts-content-flake branch October 14, 2026 05:07
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