Skip to content

quest: import #7965, flag the TS PCR only where its clock jumps - #7972

Merged
kixelated merged 1 commit into
mainfrom
quest-import/ts-pcr-jump-flag
Nov 5, 2026
Merged

kixelated merged 1 commit into
mainfrom
quest-import/ts-pcr-jump-flag

Conversation

@kixelated

@kixelated kixelated commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Imports moq-dev/moq#7965 as a new quest, quest/m1/ts-reliability/pcr-jump-flag.md, under the TS reliability epic.

The issue corrects #7741: in a live relay-kill run the semantic TS export padded the outage with nulls on a continuous PCR, so the discontinuity_indicator that moq-dev/moq#7785 sets on every delivery skip declared an unchanged time base. Checked against main: true for holes the schedule pads, but Schedule::index skips empty slots past BACKFILL (1 s), and there the PCR does jump (a_skipped_group_flags_the_clock covers it with 6 s holes).

Decisions

Direction for #7965:

Milestone:

  • ✅ m1, in ts-reliability
  • m0
  • m2

The epic README's 2026-11-05 coalescing decision is marked as reversed by the new quest.

Review

Codex gpt-6.1-sol (medium), head be0bfd2: no findings.

Impact

Quest tree only; no code, API, or wire change.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 5, 2026 19:10
@coderabbitai

coderabbitai Bot commented Nov 5, 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 3 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: 45c588a1-0c8a-4713-8773-65b163ccf737
Commits

Reviewing files that changed from the base of the PR and between 1c140ac and be0bfd2.

Files selected for processing: 2

  • quest/m1/ts-reliability/README.md
  • quest/m1/ts-reliability/pcr-jump-flag.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

@kixelated
kixelated added this pull request to the merge queue Nov 5, 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 head: be0bfd2

Findings: No actionable findings in this quest-only change. The plan correctly distinguishes padded delivery gaps from skipped schedule slots, preserves declared-switch handling, and explicitly supersedes the earlier loss-coalescing decision. I checked the premise against Schedule::index / next, PCR flag emission, and a_skipped_group_flags_the_clock at this head.

Direction: Deriving the flag from the actual schedule jump is appropriate. When implementing, cover a timestamp gap with consecutive group sequences as well as delivery loss, and retain the short-gap/no-flag and long-gap/first-PCR-only assertions across padded and unpadded output.

Verification limits: Static GitHub review only; no tests executed. This PR changes two planning documents and does not implement the behavior. CI was still in progress when checked.

@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.

ℹ️ One plan detail worth tightening — nothing blocks the import.

Reviewed changes

  • New quest quest/m1/ts-reliability/pcr-jump-flag.md — imports #7965: flag discontinuity_indicator only where the schedule skips slots, delete #7785's per-track loss tracking, rework the tests and the docs describing the skip flag.
  • Epic README — marks the 2026-11-05 coalescing decision reversed and lists the quest under ## Required.

Verified: BACKFILL is 40 slots at 25 ms (1 s), Schedule::index jumps to first - BACKFILL, a_skipped_group_flags_the_clock runs 6 s holes, every symbol in the deletion list exists on main, doc/bin/cli.md:235 and test/ts/README.md:759 describe the skip flag, and quest check passes (598 documents).

ℹ️ The deletion list drops the schedule's send-ahead reset along with the loss signal

Schedule::skip does two jobs and the plan's list removes both. Besides marking the flag, queue clears self.last so the resumed unit keeps its own send-ahead; without that, release clamps to unit.start = (last + 1).min(due) (schedule.rs:976, 1089), so the first unit after a hole goes out in the slot right after the old one and index (schedule.rs:1093) jumps far less than the real gap. Since the new derivation takes the flag from that jump, the schedule-side replacement needs an equivalent reset derived from unit timestamps rather than deleting it with the per-track signal.

Technical details
# Preserve the resume reset when the skip signal goes

## Affected sites
- `rs/moq-mux/src/container/ts/schedule.rs:886` — `queue` sets `self.last = None` when `gap` is set, so the resumed unit's start is its own due slot.
- `rs/moq-mux/src/container/ts/schedule.rs:976` — `start = (last + 1).min(due)`; `:1089` — `release` returns `.min(unit.start)`.
- `rs/moq-mux/src/container/ts/schedule.rs:1093` — `index` jumps only when the first release is more than `BACKFILL` ahead of `next`.
- `rs/moq-mux/src/container/ts/schedule.rs` — `a_skip_flags_the_jump_to_the_tables_leading_a_placed_unit` drives its jump with `skip()`.
- `rs/moq-mux/src/container/ts/export_test.rs:8465` — `a_skipped_group_flags_the_clock` reaches the 6 s jump via `PesUnit::skipped` to `Schedule::skip`; AAC is not `placed()`, so its release is the clamped `start`.

## Required outcome
- The schedule still jumps past a hole longer than `BACKFILL` and still sends the resumed unit at its own send-ahead point, with the skip signal gone.

Merged via the queue into main with commit be0d36a Nov 5, 2026
10 checks passed
@kixelated
kixelated deleted the quest-import/ts-pcr-jump-flag branch November 5, 2026 19:57
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