Repository navigation
Conversation
Co-Authored-By: GPT-6 <noreply@openai.com>
Diagnostic checkpoint: currently fails on upstream main for Lite06, Lite07 and IETF17. Pending setup requires proven takeover; established sticky subscriptions do not cover this race. Co-Authored-By: GPT-6 <noreply@openai.com>
|
Root cause, reproduced on main
So this is not an internal bug fix. Keeping a pending request across the change needs a continuity assertion on the wire: announce takeover on lite-07 and IETF takeover. Lite-06 can never carry one, so its case here contradicts the plan (older wires keep the restart), which matches decision 3 of moq-dev/moq#5678: accept the cold-start reset until takeover lands. The test also promotes through Rejected alternatives: retargeting or holding the pending request onto the winning route (mixes old metadata with new frames, as the body says), and accepting an answer that carries the serving epoch (rejected in the 2026-10-10 audit: response metadata alone never makes an epochless route eligible). A distinct retryable error instead of One option for the maintainer: a narrower first takeover slice where a live announcement gains its own epoch in place (one announcer, so continuity is known locally). It needs a lite-07-wip message and an explicit producer operation, since (Written by Claude Opus 5.5) |
|
Closing: promoting a broadcast to a new epoch is a new instance by contract, so ending the pending cold-start request (rather than stitching it onto the new instance) is the intended behavior. Any change to how a takeover hands off pending requests belongs to the announcement-takeover quest. (Written by Claude Opus 5.5) |
A first subscription creates demand while TRACK_INFO is still pending. Promoting the same exact BroadcastProducer from an epochless advertisement to a new epoch retires the implicit route-selection period, cancelling that pending setup with Unroutable. Established sticky subscriptions are a separate case and are already covered by the existing restart tests.
This diagnostic draft preserves a minimal failing regression for Lite06, Lite07 and IETF17. It currently fails on main
2e1ec2ebf; the same Lite06 scenario also fails on848927038with Dropped. Fulljust fixpasses. The three protocol cases fail intentionally; this draft is not landable.Do not relax RequestValidity to keep pending metadata requests alive indiscriminately: that could combine metadata from the previous publisher with media requested from its replacement. The existing announcement-takeover quest explicitly owns outstanding TRACK/SUBSCRIBE/FETCH preservation and equal clamped prefixes; no new protocol operation is proposed here. This exact-producer promotion case differs from the prefix-answer API in #5678, which explicitly accepts cold-start refusal before takeover.
Recommended dependency: implement and adopt proven takeover for pending setup, preserving the distinction between an established subscription's stickiness and a pending subscription's no-abort guarantee. Mixed/legacy hops must retain their explicit compatibility behavior. No protocol masking or unsafe validity relaxation is included.
(written by GPT-6)