Summary of active discussions in the MOQ ecosystem during July 2026.

Activity (July 31 → Aug 1) — The window inverts straight back to implementations: Mike English’s moq-rs ships the relay upstream-retention fix (backport to draft-14 main + v0.7.25 release train + a companion SUBSCRIBE_OK-ordering fix), and moq posts its biggest single merge day yet — ~6,000 LOC whose durable thread is spec alignment: adopting the just-published LOC-04 timestamps and aligning relay-hops with moq-lite-06 in code — while the WG repos go nearly silent (one new transport issue, zero PRs).

The July 31 → Aug 1 window was carried entirely by the two Rust codebases — the exact reverse of the prior day, when the WG document repos moved in force. Slack #moq stayed quiet (newest is still Suhas’s July-29 20:14 EEST reply on the Miniero blog thread — no July 30/31 or Aug-1 traffic), the mailing list had no genuinely new message (raw-verified — Magnus Westerlund’s July-29 IETF-126 draft-minutes email is still the newest; the weekly GitHub digest is next due ~Aug 2), and the datatracker shows no revision bumps or new individual drafts (transport-19, loc-04 newest; draft-lcurley-moq-lite still -05; still no draft-lcurley-moq-archive I-D). IETF-126 minutes remain the single Monday doc at rev -01 (in its ~2-week WG review). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner produced one new cut (+1 pass to a 350-cell-matrix high of 133, see below).

moq-rs: the relay upstream-retention fix ships (v0.7.25)

On moq-rs, Mike English took the prior day’s PR #196 relay upstream-retention fix from “merged” to “shipped on the branch operators run”:

  • #198 “release upstream subscriptions for idle cached tracks, and stop FIN-ing subgroup streams mid-object (draft-14)” (+1986/−163, July 31 20:26 UTC) backported the fix to the draft-14 main branch — the production deployment. It closes the same issue #191 (dmorn) class of relay-lifecycle bug — an upstream subscription held after the last downstream subscriber leaves — that the wiki has tracked across implementations (the identical moqtail issue #332).
  • #197 “wait for upstream subscription before sending SUBSCRIBE_OK” (+477/−55, July 31 02:08 UTC) added a companion ordering correction.
  • The repo then cut its first release train since July 20 — moq-relay-ietf v0.7.25 (+ moq-pub v0.9.3 / moq-sub v0.4.14 / moq-clock-ietf v0.6.20 / moq-api v0.2.13 / moq-test-client v0.1.12, ~20:30 UTC), plus a docs refresh (#199).

Relay-resource lifecycle (upstream held after downstream teardown) has been the recurring post-Vienna correctness front; this closes the loop from “fix merged” to “fix shipped.”

moq-dev: biggest merge day — LOC-04 + lite-06 alignment, two breaking refactors land

moq (Luke Curley) posted its biggest single-day merge burst yet — ~6,000 LOC across 11 merges (relay v0.14.5 stands; no new release). The durable thread was spec alignment:

  • LOC-04 + lite-06 alignment: #2578 “prune dormant drafts, align relay-hops with lite-06, adopt LOC-04 timestamps” (+1/−996, MERGED) — the first in-repo move onto the LOC-04 registry fix (published July 20, which relocated the LOC Timestamp code point off the 0x06 collision) and continued moq-lite-06 wire work ahead of any datatracker -06 — continued in OPEN #2581 (adopt the draft-ietf-moq-loc-04 Timestamp code point). Same spec-follows-in-code pattern the wiki tracked when moq-dev first chose the transport-18 §15.8 property IDs, now updated to the -04 registry (see moq-loc).
  • Two breaking (!) refactors that had been open the prior day landed: #2568 “leave audio group boundaries to the caller, group fMP4 by segment” (+983/−99) and #2569 “carry subscription bounds as positions” (+415/−227).
  • Relay/route hardening: #2575 “prune spliced segments, advertise drains, treat SUBSCRIBE_START as a drop signal” (+1110/−69), #2572 “send the request path and query in the SETUP on every URI-less transport” (closing issue #2570), a kio WaiterCell/Queue primitive (+721/−27), capture-recovery (#2559), and identity-less peer-origin (#2577, +625/−73). Still OPEN: #2583/#2582 (kio follow-ups), #2581 (above), and koubaa’s #2580.

WG repos + moqx: a quiet day, one transport issue, a low-key LOC-packaging thread

After July 30’s four-PR editorial/security cluster on moq-transport, July 31 produced no WG-document PRs at all. The only new WG item was Mathis Engelbart’s issue #1837 “FETCH and REQUEST_ERROR encoding” (13:44 UTC) — a fresh WGLC-hygiene encoding question, no PR yet. A low-key cross-repo LOC-packaging / naming thread stayed alive: Will Law’s msf issue #200 (map LOC packaging to MOQT streams, already logged) plus two OPEN afrind PRs on moqx#532 render and parse names in the MoQT safe form and #533 per-track counters at /metrics/track — alongside a routine moxygen sync (#531). loc, secure-objects, cmsf, catalog-format, privacy-pass, quiche (moqt), moqtail, moq-js, moxygen, imquic, moqlivemock, warp-player, moqtransport, Moqtopus, aiomoqt, and birneee/quiche_moq were quiet.

Interop runner: +1 pass to a 350-cell-matrix high

The nightly runner’s July-31 00:35 UTC cut was 350 / 133 / 206 / 11 (~38.0% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a marginal +1 pass / −1 fail versus the July-30 cut (350/132/207/11), matrix/skip/at-target flat. It’s the ninth straight cut on the settled 350-cell matrix, and pass 133 is a new high for that matrix (prior band 126–132; the absolute-high 142 came on the smaller July-21/22 338-cell matrix). Still targets draft-18. See interop-runner.

Activity (July 30 → July 31) — The WG editor’s copy moves in force for the first time since pre-Vienna: afrind lands a four-PR editorial/security cluster on transport (REDIRECT ambiguity, untrusted-string logging, Timed-Out gap status, moqt:// host resolution) plus Mathis Engelbart’s CLIENT_SETUP→SETUP fix, and Will Law merges MSF catalog-references-catalog — while Mike English’s moq-rs #196 fixes the recurring relay upstream-retention bug and moq serves DASH from moq-hls, reverts standalone captions back to dev, and proposes folding the moq-archive format into Hang (relay v0.14.5).

The July 30 → July 31 window was carried by the WG document repos and the Rust relays — the opposite of the prior week’s implementation-only pattern. Every July-30 WG item is timestamped after the last update’s ~morning-UTC cutoff (16:31–21:47 UTC). Slack #moq stayed quiet (newest is still Suhas’s July-29 20:14 EEST reply on the Miniero blog thread — no July 30/31 traffic), the mailing list had no genuinely new message (Magnus Westerlund’s July-29 IETF-126 draft-minutes email is the newest, already logged; the weekly GitHub digest is next due ~Aug 2), and the datatracker shows no revision bumps or new individual drafts (transport-19, loc-04 newest; draft-lcurley-moq-lite still -05; still no draft-lcurley-moq-archive I-D — and moq-dev now proposes folding that format into Hang rather than shipping it standalone, see below; draft-altanai-moq-relay-geocode-01 the newest I-D). IETF-126 minutes remain the single Monday doc at rev -01 (in its ~2-week WG review). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner produced one new cut that recovered +6 pass (see below).

WG repos: afrind’s editorial/security merge cluster on transport (+ MSF catalog composition)

After weeks where the transport editor’s copy barely moved, five PRs merged on moq-transport July 30 — the most WG-document content movement since the pre-Vienna WGLC-prep push, all Path-to-WGLC hygiene rather than new design (transport-19 still stands):

  • Alan Frindell (Meta) landed four: #1824 “Resolve REDIRECT ambiguity with empty namespace and name” (+6/−9 — the ambiguity sharmafb’s now-closed #1805 had tried to fix), #1823 “Add security consideration for logging untrusted string fields” (+9/−0), #1822 “Add Timed-Out gap status for expired Fill Timeout” (+14/−13), and #1817 “Define host resolution for moqt URIs” (+10/−0) — nailing down the moqt:// URI semantics that michalhosna’s July-29 issue #1835 “Is query in URI scoping?” had reopened (the same URI/auth-scoping thread now also visible as moqx issue #530 “Auth: anonymous claim”, michalhosna).
  • Mathis Engelbart landed the one-line #1836 “Fix CLIENT_SETUP to SETUP” (+1/−1) — a naming correction aligning the text with the draft-18 single-SETUP-message model.

On msf, Will Law merged #196 “Allow a catalog to reference other catalogs” (+32/−2) — catalog composition, letting one catalog reference others — and opened issue #200 “Update LOC packaging definition to indicate how to map to MOQT streams” (the follow-on to his July-30 catalog/init work). loc, secure-objects, cmsf, catalog-format, and privacy-pass were quiet.

moq-rs #196: the relay upstream-retention bug gets a real fix

On moq-rs — normally the quieter of the two Rust relays — Mike English merged PR #196 “release upstream subscriptions for idle cached tracks, and stop FIN-ing subgroup streams mid-object” (+1740/−150, July 30), a substantial relay-lifecycle correction. It directly addresses the relay-upstream-retention class of bug the wiki has tracked across implementations — moq-rs issue #191 (dmorn: relay keeps an upstream subscription after the last downstream subscriber leaves) and the identical moqtail issue #332 on relay.moqtail.dev, both instances of upstream resources being held after teardown. The mid-object subgroup-FIN fix is a separate stream-lifecycle correction in the same PR. quiche (moqt) landed one small commit the same day (“Fix RelayTwoClientsQueueClose ASAN failures”), keeping the window’s theme squarely on relay lifecycle correctness.

moq-dev: DASH from moq-hls, a captions revert, and a moq-archive→Hang pivot (relay v0.14.5)

moq ran another large day (mostly Luke Curley), cutting moq-relay v0.14.5 (July 31 00:58 UTC; ffi v0.3.5 / cli v0.9.5 stand). Durable merges:

  • DASH output from moq-hls: #2566 “serve DASH manifests from the timeline” (+784/−33, MERGED) — the moq-hls origin now emits DASH manifests alongside HLS from the same timeline, broadening the legacy-player egress.
  • Frame-precise subscription/fetch bounds: #2537 “start and end subscriptions and fetches at a specific frame” (+3089/−243, MERGED) — the long-open frame-anchored sub/fetch work landed.
  • JS publish pipeline overhaul: #2541 “publish files by demuxing them, not by capturing a MediaStreamTrack” (+1442/−341) and #2561 “fan captured media out to every consumer” (+914/−254) both MERGED, plus route/relay robustness (#2565 stop a lingering track spinning on its departed route, #2563 restore the scheme on a gossip-advertised node URL) and Qizot’s internal /nodes endpoint #2555 (+644/−32) plus moq-video/moq-audio docs (#2567).
  • Captions reverted back to dev: the standalone-text-track captions (#2533) that merged at the prior window’s edge were reverted the same day by #2571 “revert(hang): keep captions on dev” (+39/−1858) — so on main, Hang captions are not yet standalone text tracks (the feature is back on the dev branch).
  • moq-archive → a Hang “Recording” section: new OPEN #2574 “fold the archive format into hang as a Recording section” (+106/−376) proposes collapsing the July-25 moq-archive draft into Hang itself rather than shipping it as a standalone draft-lcurley-moq-archive — a notable pivot in the archive-format story (which still has no I-D on the datatracker). Two breaking (!) refactors are also OPEN — #2568 (leave audio group boundaries to the caller, group fMP4 by segment) and #2569 (carry subscription bounds as positions) — plus #2572 (send the raw QUIC request path+query in SETUP, closing yan-kovari’s issue #2570).

Elsewhere: moqx took a routine moxygen sync (#529) and michalhosna’s auth issue #530 (above). moqtail, moq-js, moxygen (its commits flow into moqx via the sync bot), imquic, moqlivemock, warp-player, moqtransport, Moqtopus, aiomoqt, and birneee/quiche_moq were quiet.

Interop runner: one new cut, +6 pass recovery

The nightly runner’s July-30 00:31 UTC cut was 350 / 132 / 207 / 11 (~37.7% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a +6 pass / −6 fail recovery versus the July-29 cut (350/126/213/11), with matrix, skip, and at-target all flat. It’s the eighth straight cut on the settled 350-cell / at-target-220 matrix, pass rebounding out of its recent dip (129 → 128 → 126 → 132, the best since July-23); at-target has held at 220 for nine straight cuts. Still targets draft-18. See interop-runner.

Activity (July 29 → July 30) — Slack breaks its ~4-day silence — Lorenzo Miniero publishes a long IETF-126 “MoQ-over-MoQ” restreaming blog post and Tobbe flags the MoQ-heavy RTCon Kraków (Sept) — while Magnus Westerlund formally circulates the IETF-126 draft minutes (rev -01) for WG review, Ian Swett’s INCLUDE_PROPERTIES parameter merges into transport, and moq clears a big native-A/V merge backlog (GPU frame rendering, timeline rework, echo cancellation, GOAWAY reshape).

The July 29 → July 30 window was the liveliest post-Vienna day in a week: Slack #moq broke its silence (first new traffic since Ian Swett’s July-25 note), the mailing list produced one genuinely new, materially process-relevant message (the IETF-126 minutes going out for review), and the implementation side had a heavy day. The datatracker still shows no draft revision bumps or new individual drafts (transport-19, loc-04 newest; draft-lcurley-moq-lite still -05, no -06; still no draft-lcurley-moq-archive submission; draft-altanai-moq-relay-geocode-01 still the newest I-D). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner produced one new cut (see below).

Slack breaks silence: Miniero’s “MoQ-over-MoQ” blog post + RTCon Kraków

The channel revived July 29 after ~4 days quiet:

  • Lorenzo Miniero (Meetecho) posted a lengthy blog write-up — Streaming the IETF MoQ sessions with MoQ… kinda! (13:11 EEST) — detailing how Meetecho restreamed the three IETF-126 MoQ sessions over MoQ itself (via imquic), in parallel with the usual WebRTC-based Meetecho client, as a WebRTC-to-MoQ translation experiment. The chairs advertised the MoQ-over-MoQ attend link on their intro slides; the post walks through the media pipeline, codec/packaging choices, and interop pieces involved. Suhas Nandakumar (“as always, amazing work and love the blog post”) and afrind (“I bet the WebRTC people will be super excited to embrace the MOQ community!”) reacted. This is the same experiment now recorded in the IETF-126 Monday minutes (“a live experiment of watching MOQ over MOQ … was shared during the meeting”).
  • Tobbe (Eyevinn) flagged RTCon Kraków (September) — a real-time-comms conference with heavy MoQ representation (Luke Curley, Miniero, Will Law, Gwendal Simon and others speaking) — with an early-bird deadline of July 31 (code FRIEND20).

IETF-126 draft minutes go out for WG review (rev -01)

The window’s one new mailing-list message was Magnus Westerlund (Ericsson)‘s Draft Minutes for IETF 126 (July 29 14:02 UTC — verified real via raw-fetch + a 404 control test), asking the WG to review the draft minutes and file corrections “within the next 2 weeks” (i.e. by ~Aug 12). This is a concrete process step, and it also lets the wiki resolve its long-running “IETF-126 minutes” watch precisely: the datatracker holds exactly one MOQ minutes document — minutes-126-moq-202607201200, the Monday (July 20 12:00 UTC) session, now bumped to revision -01 (updated July 29 14:00 UTC, matching the email). The IETF-126 agenda did schedule three MOQ sessions (Mon 12:00, Thu July 23 14:30, Fri July 24 14:00 — the slugs the wiki has been probing), and Miniero’s blog confirms all three ran, but only the Monday session was minuted; the Thursday/Friday slugs (minutes-126-moq-202607231430, ...202607241400) remain 404 because no separate docs were ever produced — not because they are merely “unposted.” The Monday minutes (now under review) officially record the contested Path-to-WGLC calls the wiki already tracks on moq-transport: Cullen Jennings’s formal objection to splitting the top-end filter + SSTS into separate drafts (a ~50/50 room split), Westerlund’s separate-repos rationale, and AD Mike Bishop’s ruling that consensus is the chairs’ to call and dissenters may appeal — plus afrind’s “72 PRs landed; transport is the critical blocker” update and Mo Zanaty’s LOC walkthrough.

WG repos: INCLUDE_PROPERTIES merges; MSF init-property refactor; a URI-scoping question

On moq-transport, Ian Swett’s PR #1813 “Add an INCLUDE_PROPERTIES Parameter” (+11/−0) MERGED July 29 — an editor’s-copy addition letting a subscription request explicit inclusion of object properties (transport-19 still stands). Victor Vasiliev’s PUBLISH_DONE stream-count-bound change (#1831) also landed July 29 (already noted last window); Swett’s “PUBLISH can contain Subscription Parameters” (#1834) stayed OPEN, and michalhosna opened a fresh URI-semantics question — issue #1835 “Is query in URI scoping?” — continuing the moqt:// host-resolution/URI thread. On moq-msf, Will Law opened PR #199 “Refactor initialization track and object properties” (+22/−26, OPEN) — follow-on WGLC hygiene after his July-28 data-role/catalog-guidance merges. loc, secure-objects, cmsf, catalog-format, and privacy-pass were quiet.

moq-dev: a big native-A/V merge day (moq-ffi v0.3.5 / moq-cli v0.9.5)

moq cleared the backlog of large native-A/V PRs that had been sitting OPEN, mostly Luke Curley’s codex batches — moq-relay v0.14.4 stands, with moq-ffi v0.3.5 / moq-cli v0.9.5 cut July 29. The merges:

  • Client-side GPU rendering, end to end: #2552 “render decoded frames on the GPU, carry color spaces end to end” (+2817/−107, MERGED) plus the companion RGB-capture color-space fix (#2553, +728/−95, MERGED) — the decode→display path now runs on the GPU with color spaces carried through the pipeline.
  • Timeline rework: #2547 “rework the timeline as a single track of complete segments” (+3500/−1243, MERGED) — the aligned-segment hang/mux/hls refactor that had grown across the prior window.
  • Native audio duplex completes: #2538 “cancel the speaker’s echo out of the microphone” (+1481/−28, MERGED), closing the moq-audio playback-engine + echo-cancellation epic (issue #2478 CLOSED) — full decoded-PCM capture/playback with echo cancellation, the iroh-live native-media upstreaming.
  • GOAWAY reshaped into a first-class API: #2542 “reshape the GOAWAY API and move migration into Reconnect” (+4256/−160, MERGED July 30) and captions as standalone text tracks (#2533, +1858/−39, MERGED July 30) both landed at the window’s edge.
  • Plus route/capture robustness fixes (#2556 prefer the newest route so a reconnect takes over, #2557 stop pinning an unchosen capture device, #2558 nextest) and a batch of new OPEN work (#2561 fan captured media to every consumer +913/−254, #2560 kio WaiterCell/Deque, #2559 recover a capture whose track dies, #2563 dial gossip peers at advertised URL, Qizot’s #2555 internal /nodes endpoint).

Elsewhere: moq-rs + quiche MoQT break quiet streaks; moqx advertises draft-18; a moqtail relay-retention bug

Two normally-quiet codebases stirred. moq-rs merged Mike English’s PR #194 “send log output to stderr instead of stdout” (+21/−0, July 29; #195 release PR OPEN) — its first commit since July, small but breaking a multi-week quiet. quiche (moqt) landed three commits July 29 (first since ~July 21): splitting the REQUEST_UPDATE callback queue into its own class, and two MoqtRelayTrackPublisher fixes (avoid calling OnNewFinAvailable multiple times; stop delivering empty object fragments that tripped a QUICHE_BUG). moqx merged five afrind/gmarzot PRs July 29 — role-named PUBLISH stat counters (#528), relocated relay test fixtures (#527), a moxygen sync (#525), a release-finalize fix (#511), and a docs pass that now advertises MOQT draft-18 (#526). moxygen picked up a libev/MNS-EventLoop executor path (run the MoQ client on a libev executor; thread-safe runInEventBaseThread) plus a datagram END_OF_GROUP forwarding fix. On moqtail, dmorn filed issue #332“relay.moqtail.dev retains upstream subscription after last downstream subscriber leaves” — the same relay resource-lifecycle class (upstream held after teardown) that has recurred across implementations. On moqlivemock, Tobbe opened PR #119 “carry CTA-608 captions in AV1 too” (+463/−484, OPEN), extending the caption epic to AV1. warp-player, moqtransport, moq-js, imquic, Moqtopus, aiomoqt, and birneee/quiche_moq were quiet.

Interop runner: one new cut, marginal regression

The nightly runner’s July-29 00:30 UTC cut was 350 / 126 / 213 / 11 (~36.0% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a marginal −2 pass / +2 fail versus the July-28 cut (350/128/211/11), with matrix, skip, and at-target all flat. It’s the seventh straight cut on the settled 350-cell / at-target-220 matrix, the pass count drifting in a narrow band (128 → 128 → 126); at-target has held at 220 for eight straight cuts. Still targets draft-18; no July-30 cut at check time. See interop-runner.

Activity (July 28 → July 29) — The Top Tracks × SSTS/ABR thread gets its first real engagement — Nokia and Akamai reply with a converging “discovery-then-selection” model (and Akamai floats folding both into one TRACK-FILTERS framework) — while Will Law merges the MSF data track role + catalog-publishing guidance and moq runs a native-A/V day (GPU frame rendering, HLS timeline rework, lite-06 wire work begins).

The July 28 → July 29 window kept the post-Vienna shape but the one genuinely substantive WG thread from the prior day turned into a real design discussion. Slack #moq stayed silent (newest remains Ian Swett’s July-25 note — no new July 26/27/28/29 traffic), the datatracker had no revision bumps or new drafts (transport-19, loc-04 newest; draft-altanai-moq-relay-geocode-01 still the newest individual I-D; still no draft-lcurley-moq-archive and no draft-lcurley-moq-lite-06 submission), and — a seventh straight update — the IETF-126 Thursday and Friday minutes remain unposted (minutes-126-moq-202607231430, ...202607241400 both still 404; only Monday’s minutes-126-moq-202607201200 is up). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner produced one new cut (see below).

The Top Tracks × SSTS/ABR thread gets two implementer replies

The prior window’s headline item — Ian Swett (Google) asking “how do Top Tracks and SSTS (or ABR in general) actually work together?” — drew two substantive July-28 replies (both verified real via raw-fetch + a 404 control test), and they converge on a “discovery then selection” framing:

  • Yu You (Nokia) (reply, July 28 08:42 UTC) casts it as a two-step pipeline. The Top-N filter answers “what” — evaluate all tracks in a namespace by property value, promote the N highest, and have the publisher subscribe upstream to all N. SSTS answers “how” — apply the switching algorithm (e.g. a bandwidth-threshold check) to select exactly one for delivery. The relay keeps upstream connections to all N alternatives but sets downstream forwarding to 0 for the unselected, giving “Top-1 delivery” that avoids overdelivery/congestion while preserving the ability to switch as conditions change; if the publisher demotes a track out of the Top-N pool it leaves the switching set entirely.
  • Will Law (Akamai) (reply, July 28 09:48 UTC) treats Top Tracks as a discovery mechanism like SUBSCRIBE_NAMESPACE: once clients receive the PUBLISH messages they assign the tracks to switching sets via a SWITCHING_SET_ASSIGNMENT parameter on PUBLISH_OK. He argues SSTS entry will lean on SUBSCRIBE_NAMESPACE + plain SUBSCRIBE more than dynamic Top-Tracks selection (the publisher must produce the ABR variants and couple them with a playback mechanism), and floats a unification: rename Top Tracks to TRACK-FILTERS, make SSTS parameters (rank, weight, throughput threshold) reserved track properties, and add a single flag to “apply SSTS to the filtered tracks” — one general filtering/selection pipeline rather than two separate mechanisms.

Neither reply answers Swett’s pointed demo-existence question (does any Top-Tracks + SSTS demo, even simulated, exist?). Recorded on moq-transport’s open-design-questions list, which the thread directly advances — Top Tracks is the one filter still being worked into core transport as range filters + SSTS split out per the contested IETF-126 consensus call, so its ABR integration is exactly the open seam.

WG repos: MSF data role + catalog guidance merge; PUBLISH subscription-parameters work

The MSF repo saw its first merges since the July-14 init-data cluster: Will Law landed PR #194 “Update reserved track roles with a data role” (+14/−13) and PR #193 “Update catalog object publishing guidelines” (+8/−2), two of the four pre-WGLC hygiene PRs he opened July 17 — recorded on moq-msf. On moq-transport, Ian Swett opened PR #1834 “PUBLISH can contain Subscription Parameters” (+13/−9, OPEN, July 28) and Victor Vasiliev’s July-27 PR #1831 “Change the maximum Stream Count bound in PUBLISH_DONE to 2^64−1” (+1/−1) MERGED July 29 — closing part of the PUBLISH_DONE WGLC-hygiene cluster; sharmafb’s older REDIRECT-empty-name PR (#1805) was closed unmerged (superseded by afrind’s #1824). loc, secure-objects, cmsf, catalog-format, and privacy-pass were quiet.

moq-dev: a native-A/V day, and lite-06 wire work begins

moq ran another busy day (July 28, mostly Luke Curley codex batches) — no new release (v0.14.4 from July 27 stands). The notable moves:

  • Client-side GPU rendering: #2552 “render decoded frames on the GPU” (+2070/−19, OPEN) plus a companion RGB-capture color-space fix (#2553, +453/−70, OPEN) — pushing the decode→display path onto the GPU.
  • HLS/timeline rework: #2547 “rework the timeline as a single track of complete segments” (grew to +3491/−1236, OPEN) — the aligned-segment timeline that opened at the tail of the prior window, now a large hang/mux/hls refactor.
  • lite-06 wire work begins: #2550 “drop Exclude Hop from ANNOUNCE_REQUEST in lite-06” (+189/−98, MERGED) — the first in-code sign of a next moq-lite revision, the same in-code-before-Datatracker pattern the -05 wire followed (no -06 on the Datatracker yet). Recorded on moq-lite.
  • Docs + plumbing: the documentation site now renders the IETF drafts (#2548, +637/−4, MERGED), moq-boy/moq-native dial the relay via --client-connect again (#2551, MERGED), plus JS package-version bumps (#2549) and a merged tidy (#2546). The July-27 GOAWAY-API reshape (#2542, +4131/−159) and t0ms’s 1+1 source-failover drill (#2545) stayed OPEN.

Elsewhere: moxygen subgroup-reset + mobile client; moqx sync; other impls quiet

moxygen landed two July-28 changes via internal import: afrind’s subgroup-reset-on-subscription-cancel (PR #202 → commit f48b56a3, +62/−1) and gmarzot’s FOLLY_XLOG_STRIP_PREFIXES fix (#207, +11/−1), plus mobile-client commits (verifier/transport info + an insecure flag for MoQTextClientMobile); afrind’s per-connection qlog QLogger PR (#206) stayed OPEN. moqx merged a trivial moxygen-sync (#524) and published a rolling snapshot-latest pre-release; afrind’s forwarder-ownership refactor (#521) and michalhosna’s de-bespoke-build draft (#519) stayed OPEN. moqlivemock, warp-player, moqtransport, moq-rs, moqtail, quiche (moqt, last commit July 21), moq-js, imquic, Moqtopus, aiomoqt, and birneee/quiche_moq were quiet.

Interop runner: one new cut, marginal

The nightly runner’s July-28 00:33 UTC cut was 350 / 128 / 211 / 11 (~36.6% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a marginal −1 pass / +1 fail versus the identical July-26/July-27 cuts (350/129/210/11), with matrix, skip, and at-target all flat. It’s the sixth straight cut on the settled 350-cell / at-target-220 matrix, the pass count drifting in a narrow ±3 band (128 → 129 → 129 → 128); at-target has held at 220 for seven straight cuts. Still targets draft-18; no July-29 cut at check time. See interop-runner.

Activity (July 27 → July 28) — A quiet WG day carried by one substantive mailing-list design thread — Ian Swett asking how the Top Tracks Filter actually works with SSTS/ABR — plus a PUBLISH_DONE WGLC-hygiene cluster, and moq’s biggest post-Vienna implementation day (cache-pool rework lands, an audio-output push, a GOAWAY-API reshape; v0.14.4).

The July 27 → July 28 window keeps the post-Vienna shape: Slack #moq stayed silent (newest remains Ian Swett’s July-25 note — no new July 26/27/28 traffic), the datatracker had no revision bumps or new drafts (transport-19, loc-04 newest; draft-altanai-moq-relay-geocode-01 still the newest individual I-D; still no draft-lcurley-moq-archive submission), and — a sixth straight update — the IETF-126 Thursday and Friday minutes remain unposted (minutes-126-moq-202607231430, ...202607241400, and the generic alias all still 404; only Monday’s minutes-126-moq-202607201200 is up). But unlike the prior three days there was one genuinely new, substantive mailing-list thread (below), and the implementation side had a heavy day. No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner produced a byte-for-byte-identical cut (see below).

The one substantive WG thread: how do Top Tracks and SSTS/ABR actually work together?

The window’s most material WG-adjacent item was Ian Swett (Google) opening “Top Tracks and SSTS (or ABR in general)” on the IETF list (July 27 20:10 UTC — verified real via raw-fetch + a 404 control test). Having reviewed the most recent Top-Tracks PR (moq-transport #1830), Swett says he “continue[s] to wonder exactly how it will work with SSTS (or another ABR algorithm)” — the mechanisms to achieve what one wants are unclear. He argues that while Top Tracks has use cases without ABR, for the video-conferencing use case ABR seems essential, and poses four concrete mechanism questions the current design doesn’t answer:

  1. How do you send the correct initial SUBSCRIBE_TRACKS — a Track-Property-Filter for the ideal resolution combined with Top Tracks?
  2. How do you ensure the focal viewport gets higher priority when deciding which feed to downswitch?
  3. If a client pins a video feed other than the VC’s default, how does prioritization work?
  4. Are there any demos — even a simulation, not the public internet — of Top Tracks and SSTS working together?

He closes noting he asked the Meet team to describe their current approach: it “may or may not be proprietary, but it doesn’t matter because it’s sufficiently complex that I can’t summarize it anyway … it doesn’t give me confidence we’ll design a comparable solution in MoQ soon.” No replies yet at check time. The thread sharpens the open question the wiki already tracks on moq-transport: Top Tracks Filter is the one filter still being worked into core transport (as range filters + SSTS are split out into separate drafts per the contested IETF-126 consensus call), yet its integration with the ABR machinery a real conference needs is still undesigned.

WG repos: a PUBLISH_DONE WGLC-hygiene cluster; a LOC codec-string addition

Beyond the list thread, the moq-wg repos saw a small PUBLISH_DONE cleanup cluster (July 27, the WGLC-prep editorial the Path-to-WGLC work keeps generating): Mo Zanaty opened PR #1833 “Remove PUBLISH_DONE reason SUBSCRIPTION_ENDED” (+0/−4) and issue #1832 “Publish Done should not depend on subscriber location filter”, while Victor Vasiliev opened PR #1831 “Change the maximum Stream Count bound in PUBLISH_DONE to 2^64−1” (+1/−1) — all OPEN. In loc, Jordi Cenzano opened PR #29 “Add Codecstring definition to draft-ietf-moq-loc” (+8/−0, OPEN). msf, secure-objects, cmsf, catalog-format, and privacy-pass were quiet (only pre-window PRs touched by comments).

moq-dev: the cache-pool rework lands, an audio-output push, and a GOAWAY-API reshape (v0.14.4)

moq had its busiest day since Vienna (July 27, ~14 merges + a large batch of new OPEN PRs, mostly Luke Curley’s codex batches), cut as moq-relay v0.14.4 / moq-ffi v0.3.4 / moq-cli v0.9.4. The durable moves:

  • The cache-pool leak saga closed structurally: #2526 replace the global LRU cache pool with per-track write-time eviction (+2069/−1020) — OPEN in the prior window — MERGED July 27, removing the global registry/heap/compaction machinery whose publish-path leak was symptom-patched July 26 (#2525).
  • An audio-output push: moq-audio gained decoded-PCM playback out a speaker (#2529, +2197/−9) and, still OPEN, microphone echo cancellation (#2538, +1304/−22) — the capture/playback half of the iroh-live native-media upstreaming that began July 24.
  • GOAWAY hardened into a first-class API: #2542 reshape the GOAWAY API, move migration into Reconnect (+3441/−143, OPEN) builds directly on AWS’s Kyle Sletmoe GOAWAY graceful-drain/cluster-migration seed (#2490, July 24); t0ms added a two-relay 1+1 source-failover drill (#2545, +467/−0).
  • Hang media: captions became standalone text tracks (#2533, +1655/−42, OPEN), the catalog now exposes bitrate/jitter as a catalog::Estimator (#2530, +834/−515, MERGED), and a timeline rework around aligned segments opened July 28 (#2547, +946/−317).
  • Correctness plumbing: a loom model-check of concurrent handoffs (#2543, +451/−21, MERGED), a poll-native Deadline adopted in moq-net (#2536), Windows/macOS CI compile-checks (#2531), jemalloc heap profiling (#2539), and surfacing a peer’s stream-reset code as a remote error (#2510, MERGED). fperex logged that publishing video breaks when the publisher window is minimized (MediaStreamTrackProcessor polyfill, #2527).

Elsewhere: afrind turns up in moqx; Eyevinn dep bumps; other impls quiet

A notable cross-project move: afrind (Meta) is now committing to moqx (OpenMOQ’s moxygen fork) — July 27 he merged build-parallelism flags (#523) and per-scrape histogram-metrics windowing (#520) and opened two relay-forwarder-ownership refactors (#522/#521, moving forwarder ownership off the registry onto the publisher exec) and closed his own July-19 moq_decode.py PUBLISH_DONE issue (#495); michalhosna opened a “de-bespoke build” draft (#519). On moxygen itself afrind’s July-20 delivery-timeout test PR (#208) was closed unmerged. Eyevinn shipped a golang.org/x dependency bump on moqtransport (#15, tobbee) and a dependabot production-deps bump opened on warp-player (#168). moqlivemock, moq-rs, moqtail, quiche (moqt, 0 commits), moq-js, imquic, Moqtopus, aiomoqt, and birneee/quiche_moq were quiet.

Interop runner: an identical cut

The nightly runner’s July-27 00:35 UTC cut was 350 / 129 / 210 / 11 (~36.9% pass; at-target draft-18 220 · 0 ahead · 130 behind) — byte-for-byte identical to the July-26 cut (350/129/210/11): pass/fail/skip/matrix/at-target all unchanged, only the timestamp advanced. Fifth straight cut on the settled 350-cell / at-target-220 matrix; at-target has held at 220 for six straight cuts. Still targets draft-18; no July-28 cut at check time. See interop-runner.

Activity (July 26 → July 27) — Another quiet post-Vienna day whose most material fact is a correction: the “Consensus Call on Draft-18” thread the wiki twice dismissed as a fetch artifact is verifiably real. Implementations carry the rest — moq chases a publisher memory-leak in its new cache pool, Eyevinn closes its CTA-608 epic and opens a caption-timing refinement, and the weekly GitHub digest returns.

The July 26 → July 27 window is the third straight genuinely quiet post-Vienna day. Slack #moq had no new traffic (newest remains Ian Swett’s July-25 note); the datatracker had no revision bumps or new drafts (transport-19, loc-04 newest; draft-altanai-moq-relay-geocode-01 still the newest individual I-D; no draft-lcurley-moq-archive submission yet); and — a fifth straight update — the IETF-126 Thursday and Friday minutes remain unposted (minutes-126-moq-202607231430, ...202607241400, and the generic alias all still 404; only Monday’s minutes-126-moq-202607201200 is up). The mailing list produced one genuinely new item — the weekly GitHub digest (Repository Activity Summary Bot, July 26, its first since July 19) — a routine recap of the week’s moq-transport issue/comment churn (#1826–#1829, #1821). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner nudged up one cell (see below).

Correction: the “Consensus Call on Draft-18” thread is real, not a fetch artifact

The July-25 and July-26 wiki updates each saw a subagent surface a [Moq] Re: Consensus Call on Draft-18 mailing-list thread attributed to Martin Duke, and each time a “neutral re-fetch” failed to confirm it, so it was written off as a hallucination and not logged. That was wrong. A rigorous raw-HTTP verification (with a control test — a fabricated message ID returns HTTP 404, the real one returns 200 with valid gmail + ietf.org DKIM signatures) confirms the thread exists at this permalink. The substance: co-chair Martin Duke opened a formal consensus call on the draft-17 → draft-18 diff on July 6 (“file any resulting issues no later than 20 July … subsequent objections will face a higher bar”) and concluded it July 24 14:14 UTC“This concludes the consensus call on draft-18. Any issues with the -17/-18 diff should be in Github by now.” This is a real Path-to-WGLC gate: the WG formally settling the -18 baseline. Recorded on moq-transport’s Recent Highlights. The methodological lesson: contested list claims need independent raw-fetch verification with a control test — trusting either a subagent’s report or its debunk has now produced an error in each direction.

moq-dev: a publisher memory-leak in the new global cache pool, and the fix that rips it out

moq’s durable July-26 → 27 story is a self-contained regression saga in the moq-net layer. An earlier “global LRU cache pool for groups” feature (commit 20c749d4) turned out to leak memory on the publish path — ~75 kB/s while publishing, ~250 MB over 4.5 h on the demo VM (surfaced by memory alerts on a 1 GB box). Luke Curley shipped the symptom fix July 26 — release cache-pool registrations so publishers stop leaking (#2525, MERGED, +139/−10) — then opened the structural follow-up July 27: replace the global LRU cache pool with per-track write-time eviction (#2526, OPEN, +1265/−797), which removes the global registry, the lazily re-keyed access-ordered heap, and the compaction heuristics entirely. Also merged July 26: fperex’s qmux WebSocket-fallback fix (#2521, bumping @moq/qmux to 0.3.1 on the dev branch — it was OPEN in the prior window) plus routine dependabot bumps (#2522/#2523/#2524). No new release — v0.14.3 (July 25) stands.

Eyevinn: CTA-608 caption epic formally closed; a display-timing refinement opens

moqlivemock closed the CTA-608 caption epic’s master MAP issue (#104, July 26) — the plan→code→verify arc (planning July 23, SEI-generation + four-path injection July 24, catalog advertisement + round-trip verification July 25) is complete. A follow-up refinement issue opened the same day: align CTA-608 caption display with its MoQ group (#118) — because go-608 drains one byte-pair per frame, the pop-on flip (EOC) lands ~frame 19 of a 25/30-frame group, so a cue reading HH:MM:SS.mmm / GRP <n> currently appears ~0.6–0.76 s after the second it names; the fix needs cross-group preload so the caption aligns with its group’s start. warp-player rendering (warp-player #156) remains the open cross-repo follow-up. All work is Torbjörn Einarsson’s (Eyevinn).

Elsewhere: moqx housekeeping; WG repos and other impls quiet

moqx merged two sync/tooling PRs July 26 (moxygen sync #513; a git add --force submodule fix for git 2.54 #512) and Giovanni Marzot opened three housekeeping issues — a documentation-structure refactor (#514), release-CI CHANGELOG generation (#515), and a moqx-issuer build failure from gflags being linked both statically and dynamically (#516, July 27) — build/release plumbing, no protocol or media change. The moq-wg repos were quiet (no new PRs/issues; moq-transport #1830 Top-Tracks-Filter, #1825, and #1824 all still OPEN, touched by comments only), as were moq-rs, moqtail, quiche (moqt, 0 commits), moq-js, imquic, moxygen, Moqtopus, aiomoqt, birneee/quiche_moq, and Eyevinn/warp-player.

Interop runner nudges up one cell

The nightly runner’s July-26 00:37 UTC cut was 350 / 129 / 210 / 11 (~36.9% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a +1 pass / −1 fail marginal recovery vs the July-25 cut (350/128/211/11), with matrix, skip, and at-target all flat. It’s the fourth straight cut on the settled 350-cell / at-target-220 matrix, the pass count drifting in a narrow ±3 band (130 → 131 → 128 → 129) with no structural change; at-target has held at 220 for five straight cuts. Still targets draft-18; no July-27 cut at check time. See interop-runner.

Activity (July 25 → July 26) — A quiet post-Vienna settling window: moq lands its moq-archive draft in-repo and cuts a v0.14.3 train, Eyevinn’s CTA-608 caption epic reaches completion, and a rare bit of Slack substance surfaces a datagram-audio reliability tradeoff from an in-flight test of Miniero’s MoQ demo.

With IETF-126 four days past and the WG channels dormant, the July 25 → July 26 window is a low-volume consolidation day carried almost entirely by implementations. The mailing list had no new traffic (newest remains Mo Zanaty’s July-24 Top-Tracks-Filter note), the datatracker had no new revisions or drafts (transport-19, loc-04 newest; draft-altanai-moq-relay-geocode-01 the newest individual I-D), and — for a fourth straight updateall IETF-126 session minutes remain unposted (minutes-126-moq-202607231430, ...202607241400, and the generic alias all still 404; only Monday’s minutes-126-moq-202607201200 is up). No new MoQ Monthly (#2, May 31); no open wiki issues; the nightly runner nudged down (see below).

moq-dev: the moq-archive draft lands, quiche backend reaches parity, v0.14.3 ships

moq ran its usual high-volume day July 25 (~10 merges, mostly Luke Curley’s “codex” batches), cutting a v0.14.3 patch train (moq-relay v0.14.3, moq-ffi v0.3.3, moq-cli v0.9.3, moq-gst v0.3.3, ~23:50 UTC). The durable items:

  • draft-lcurley-moq-archive landed in-repo (#2504, MERGED) — the chunked, arrival-ordered archival format for MoQ tracks (turning July-23 roadmap issue #2456 into an actual draft) is now committed, though not yet submitted to the datatracker.
  • quiche backend brought to quinn parity (#2514, +189/−66, breaking) — the alternate moq-native QUIC backend now matches the default quinn backend’s feature surface.
  • Media/net robustness: a moq-video refactor to a single raw Frame type carrying timestamps through encode (#2503, breaking), releasing idle spliced tracks after a linger (#2505), avoiding duplicate subscribe streams (#2513, +287/−157), hardware pixel-buffer resize (#2512), and hang catalog/codec hardening (reject a non-hex catalog description #2516; preserve audio-codec discriminants #2511).

The window’s one July 26 artifact is PR #2521 (OPEN) — contributor fperex bumping @moq/qmux to 0.3.1 to fix two WebSocket-fallback bugs in js/net.

Eyevinn’s CTA-608 caption epic reaches completion

moqlivemock’s CTA-608 closed-caption work — planning July 23, code July 24 — completed July 25 with #117 feat(cc608): advertise CTA-608 in catalogs + decode-round-trip verification (MERGED, +278/−5). Auto-generated in-band CTA-608 captions are now injected across all four mlmpub serve paths (CMAF/LOCMAF/LOC/moq-mi), advertised in the catalog as an accessibility descriptor, and verified round-trip across packagings — making moqlivemock an accessibility-signaling testbed on top of its AVC/HEVC/AV1 coverage. warp-player rendering (#156) remains the open follow-up. All work is Torbjörn Einarsson’s (Eyevinn).

Slack: an in-flight test surfaces a datagram-audio reliability tradeoff

The channel’s only new substance was a real-world data point on transport-mode selection for media. Ian Swett (Google) thanked Lorenzo Miniero for a “MoQ-over-Moq” demo he had tested — “it worked great until my internet completely disappeared” — noting that video kept working while audio intermittently dropped, and asking whether audio was being prioritized higher. Miniero (excited it “worked 30 thousand feet in the air”, i.e. Ian tested it in-flight) explained the cause: audio went over OBJECT_DATAGRAM (no retransmissions, which likely explains the drops) while video used SUBGROUP_HEADER (reliable streams), and he does no prioritization yet. A neat illustration that MoQ’s per-object delivery-mode choice is itself a reliability lever — unreliable-datagram audio degrades first on a lossy link, the opposite of the usual “protect the audio” instinct, unless the sender explicitly compensates.

Interop runner nudges down

The nightly runner’s July-25 00:34 UTC cut was 350 / 128 / 211 / 11 (~36.6% pass; at-target draft-18 220 · 0 ahead · 130 behind) — a −3 pass / +3 fail slip vs the July-24 cut (350/131/208/11), with matrix, skip, and at-target all flat. It’s the third straight cut on the settled 350-cell / at-target-220 matrix (131 → 131 → 128), the pass count drifting in a narrow band with no structural change. Still targets draft-18; no July-26 cut at check time. See interop-runner.

Activity (July 24 → July 25) — The day after IETF-126 Vienna: the Friday session’s outputs surface as GitHub issues/PRs while the minutes stay unposted, Eyevinn’s CTA-608 captions go from plan to landed code, and moq runs an audio-stack push with a first AWS relay contribution. With the Vienna sessions over (Mon/Thu/Fri, July 20/23/24), the July-24 → July-25 window is a post-meeting settling day — and, once again, the readable record of what the Friday session covered is on GitHub, not in minutes: all three IETF-126 MoQ minute docs still 404 (minutes-126-moq-202607201200 remains the only one posted, from Monday). The Friday session’s threads materialized as fresh WG artifacts July 24: Mo Zanaty re-homed the Top Tracks Filter to moq-transport PR #1830 (~130 lines, from the now-closed #1518; also announced on-list), Cullen Jennings filed “IANA Properties text might need update” (issue #1829), Suhas Nandakumar filed “revise application-specific → private for registry spaces” (issue #1828), and Will Law opened msf PR #196 “Allow a catalog to reference other catalogs” plus an initData-reuse-across-LOC/MSF question (msf #198). On the media side, moqlivemock’s CTA-608 closed-caption epic (planning-only July 23) landed working code July 24: a cc608 in-band caption SEI-generation package (#114) and its injection into the CMAF/LOCMAF/LOC/moq-mi serve paths (#115), with catalog advertisement + decode-round-trip verification still open (#117). moq ran a coordinated audio-stack push — a PCM codec (#2493), Opus pre-skip + encoder-control propagation (#2492), a bounded capture-buffer queue (#2487), and Linux/Windows capture-device enumeration (#2486) — plus a plan to upstream the iroh-live native media stack (playback engine + echo cancellation, #2478/#2481), a new draft-lcurley-moq-archive individual draft (chunked archival format), and — notably — a first AWS code contribution: Kyle Sletmoe’s GOAWAY graceful-drain + cluster-migration PR (#2490, OPEN). Cut as a v0.14.2 release train (moq-relay/moq-cli/moq-gst/moq-ffi). Relay resource-lifecycle correctness kept rippling: moqtail merged fix relay resubscribe after last subscriber (#331, a regression from July-23’s #330), moqx logged a same-namespace multi-publisher rejection bug (#509), and moq-rs merged a SUBSCRIBE_NAMESPACE message-type wire fix (0x11 → 0x50) (#193) — while on Slack afrind independently reproduced the Cloudflare relay’s SUBSCRIBE failure (relay sends STOP_SENDING, same as Jordi Cenzano) and Mike English confirmed “a couple parts to what’s broken here” using Kota Yatagai’s namespace-retention diagnosis. A new individual draft, draft-altanai-moq-relay-geocode-01 (Geographic Location for MoQ Relays, Altanai B), appeared on the datatracker. The nightly runner’s July-24 cut was flat: 350/131/208/11 (~37.4% pass; at-target draft-18 220), just +1 pass vs the July-23 20:52 off-cadence cut. No new WG-doc revisions (transport-19, loc-04 newest); no new MoQ Monthly (#2, May 31); no open wiki issues.**

The Friday session’s outputs land on GitHub; IETF-126 minutes still unposted

The IETF-126 MoQ WG’s final Vienna session ran Friday July 24 (14:00 UTC), after Monday and Thursday. As of this window no minutes for any of the Thursday or Friday sessions have been postedminutes-126-moq-202607231430, minutes-126-moq-202607241400, and the generic minutes-126-moq alias all still 404; only Monday’s minutes-126-moq-202607201200 is up. As on Thursday, the substantive session content is therefore only legible through the artifacts it spawned on GitHub the same afternoon:

  • Top Tracks Filter → moq-transport PR #1830 (Mo Zanaty, ~130 lines): the Top-N-tracks filter (one of the Friday slide-deck topics) was re-homed from the now-closed PR #1518 into a fresh PR “as suggested in the session,” and Zanaty posted a matching mailing-list note “Top Tracks Filter moved to PR#1830” (July 24 18:02 UTC) requesting review. This is the one filter still being actively worked into core transport even as range filters + SSTS are being split out.
  • IANA / registry-naming cleanup: Cullen Jennings’s issue #1829 (“IANA Properties text might need update”) and Suhas Nandakumar’s issue #1828 (“revise the name application-specific to private to be unambiguous for registry spaces”) — both the registry-hygiene editorial that the Path-to-WGLC work keeps generating.
  • MSF catalog composition: Will Law opened msf PR #196 “Allow a catalog to reference other catalogs” and asked whether initData can be reused across LOC and MSF (msf #198); a small hygiene issue — prohibit the % character in catalog text fields (msf #197) — was opened and closed the same day.

A new individual Internet-Draft also appeared on the datatracker July 24: draft-altanai-moq-relay-geocode-01 “Geographic Location for Media over QUIC Relays” (Altanai B) — a second relay-focused contribution from her this week, after the July-23 relay-diagnostics follow-up on moq-transport #1692. The only genuinely new mailing-list traffic in the window was Zanaty’s Top-Tracks-Filter note; no WGLC announcement, consensus call, or Mike English interop report has posted yet.

Eyevinn’s CTA-608 closed-caption work goes from plan to code

The moqlivemock CTA-608 caption epic that was planning-only in the previous window (issues #104–#113) landed working code July 24:

  • #114 feat(cc608): add in-band CTA-608 caption SEI generation package (MERGED) — an internal cc608 package that generates CTA-608 caption data as H.264/HEVC SEI messages.
  • #115 feat(cc608): inject CTA-608 captions in the CMAF/LOCMAF/LOC/moq-mi serve paths (MERGED) — wires caption injection into all four mlmpub serve paths.
  • #117 feat(cc608): advertise CTA-608 in catalogs + decode-round-trip verification (OPEN) — the catalog accessibility descriptor + cross-packaging round-trip checks.

This makes moqlivemock an accessibility-signaling testbed on top of its existing AVC/HEVC/AV1 codec coverage — auto-generated in-band captions a subscriber (and, via the still-open warp-player #156) can decode and render. All work is Torbjörn Einarsson’s (Eyevinn).

moq-dev: an audio-stack push, an iroh-live upstreaming plan, and a first AWS relay PR

moq spent July 24 largely on audio and operational relay features, cutting a v0.14.2 release train (moq-relay v0.14.2, moq-cli v0.9.2, moq-gst v0.3.2, moq-ffi v0.3.2, ~21:00 UTC):

  • Audio stack: a new PCM codec in moq-audio (#2493, +491/−91), Opus pre-skip + encoder-control propagation (#2492, +463/−107), a bounded capture-buffer queue so a slow encoder can’t grow memory unbounded (#2487), and capture-source enumeration on Linux and Windows (#2486). Luke Curley also opened issues to upstream the “iroh-live” native media stack — a playback engine with echo cancellation (#2478) and the broader native media stack into moq-video/moq-audio (#2481).
  • Relay operational features: --cache-duration ceiling on cached group age (#2494), tearing down idle upstream subscriptions (#2500), releasing idle spliced tracks after a linger (#2505, OPEN), and — a first code contribution from AWS — Kyle Sletmoe’s GOAWAY graceful drain + cluster migration (#2490, OPEN), the relay-side graceful-shutdown/cluster-rebalance surface that fits the window’s broader relay-lifecycle theme.
  • New draft in-repo: draft-lcurley-moq-archive (#2504, OPEN) — a chunked, arrival-ordered archival format for MoQ tracks, turning the July-23 roadmap issue #2456 into an actual draft. Media-pipeline work also continued (caller-driven audio grouping #2496, a moq-video timestamp-through-encode refactor #2495/#2503, video presentation-rotation support #2507).

Relay-lifecycle correctness keeps rippling; the Cloudflare SUBSCRIBE bug is now double-confirmed

The cross-stack relay resource-lifecycle theme from the prior window continued:

  • moqtail merged fix relay resubscribe after last subscriber (#331, Zafer Gürel) — a direct follow-up to July-23’s #330 (remove track when the last subscriber leaves), which had broken the ability to re-subscribe to a track after its state was freed. Zafer’s public draft-18 relay relay18.moqtail.dev stays online; on the debugging thread Kota Yatagai’s Moqtopus still couldn’t get objects through a PUBLISH_NAMESPACE + SUBSCRIBE flow (“no publisher found” / publisher sees the SUBSCRIBE but subscriber sends STOP_SENDING) and Zafer is checking the logs.
  • moqx filed a bug that the relay rejects a second session’s PUBLISH_NAMESPACE for an already-published namespace (#509) — the same-namespace-multi-publisher case, a cousin of the namespace-retention problem Kota diagnosed on the Cloudflare relay — plus admin/observability issues (/state peer export #508, /info uptime #507, object-bytes-delivered metric #506).
  • moq-rs merged #193 “fix(draft-18): correct SUBSCRIBE_NAMESPACE message type 0x11 → 0x50” (Mike English) — a wire-type correctness fix bearing directly on the SUBSCRIBE failures Jordi Cenzano and afrind hit. On Slack, afrind independently reproduced the Cloudflare relay’s SUBSCRIBE failure (“the relay sends me a STOP_SENDING”, July 24); Mike English replied “there are a couple parts to what’s broken here” and pointed to Kota’s namespace-retention insight as helpful. So the Cloudflare relay’s SUBSCRIBE breakage is now confirmed by two independent testers with a root cause identified and Cloudflare actively working it. See interop-endpoints.

Activity (July 23 → July 24) — IETF-126 Vienna’s final two MoQ sessions run (Thu July 23 / Fri July 24), but their minutes aren’t posted yet — so the day’s durable, published facts are on the interop floor and in a stack-wide relay resource-lifecycle cleanup wave. With the Thursday (14:30 UTC) and Friday (14:00 UTC) sessions held, the IETF-126 slide-deck set grew to 17 decks (adding Sender-Side Track Switching, Location Filter, Fetch Pacing for MOQT, Top-N Tracks Filter, MOQT Issues & PRs Part 2, MSF & CMSF, tempo, mocha) — but no Thursday/Friday minutes, no WGLC/consensus announcement, and no Mike English interop report have been published (only Monday’s minutes-126-moq-202607201200 remain up); the substantive session content will need a re-check as minutes post. The one on-list artifact was Altanai B’s July-23 relay-diagnostics proposal (moq-transport #1692) — three design sketches (control-path request/response, diagnostics carried in existing responses/errors, setup-time capability advertisement) plus a call for a co-author, dovetailing with Monday’s decision to spin management/metrics/diagnostics into a separate applicability document. The bigger cross-cutting story was relay resource-lifecycle correctness, surfacing at once across the stack: moqtail merged remove track when the last subscriber leaves (#330) and deployed a public draft-18 relay at relay18.moqtail.dev (with a public Grafana dashboard); Kota Yatagai traced the Cloudflare relay’s Jordi-Cenzano SUBSCRIBE failure to namespace/track-name retention after session teardown (a same-name re-publish is treated as a request after PUBLISH_DONE); moqx opened relay-hops: prevent namespace loops across relay cycles (#502) and a per-track subscriber-count-under-load bug (#501); and moq shipped linger a broadcast across an ungraceful source loss (#2469, +551/−63) plus a WebSocket keep-alive fix (#2471) and a delay-based-congestion-control default (#2468), and logged an active/active source-failover mesh-routing gap (#2461, t0ms). On the runner floor, Jordi Cenzano’s v18 moq-encoder-player matrix now has moqtail carrying full video+audio (joining moxygen, imquic, and Nokia) while Cloudflare and cdn.moq.pro both still fail on SUBSCRIBE (each closing the QUIC stream); Jordi also refactored his player’s audio/AV-sync (much simpler via new AudioContext capabilities) and is migrating MOQMI→LOC. The nightly runner regressed — the latest July-23 cut (350/130/209/11, at-target draft-18 220) is pass −12 vs July-22 with skips reappearing (0 → 11) and an off-cadence second run, a Hackathon-week endpoint reshuffle. moq-rs merged a draft-18 byte-valued-parameter encoding fix (#192, Mike English, +301/−32); Eyevinn opened a CTA-608 closed-caption accessibility epic across moqlivemock (#104–#113) and warp-player (#156). No new draft revisions (transport-19, loc-04 newest); no new MoQ Monthly (#2, May 31); no open wiki issues.**

IETF-126’s final two sessions run; minutes still pending

The IETF-126 MoQ WG held its Thursday (July 23, 14:30 UTC) and Friday (July 24, 14:00 UTC) sessions, completing the Vienna meeting (after Monday July 20). At check time no minutes for either session have been postedminutes-126-moq-202607231430 and minutes-126-moq-202607241400 both 404, and the generic minutes-126-moq alias still 404s; only the Monday session’s minutes-126-moq-202607201200 is up. The agenda stays at agenda-126-moq-04, but the slide-deck set grew to 17 — the new decks reveal the Thursday/Friday topics: Sender-Side Track Switching, Location Filter, Fetch Pacing for MOQT, Top-N Tracks Filter, MOQT Issues & PRs Part 2, MSF & CMSF, tempo, and mocha. So the substantive WGLC / filter-split / SSTS / Top-N / interop-report content is not yet publishable from official minutes and must be re-checked as they post. No WGLC announcement, consensus call, or interop-report post has hit the mailing list yet (see below).

The single new list message was Altanai B’s July-23 13:03 UTC “MoQT relay diagnostics follow-up from IETF 126 / issue #1692” (permalink). It follows up an IETF-126 discussion of moq-transport #1692 (“clients obtaining diagnostic information from relays”), volunteers to co-author a spec, and sketches three approaches — (a) an explicit diagnostic request/response mechanism on the control path, (b) diagnostic info carried in existing responses/errors, (c) relay capability advertisement during setup — while flagging the privacy, authorization, topology-confidentiality, and qlog/metrics-alignment work needed. It asks the chairs whether to proceed as an individual I-D, a design doc in the issue, or a PR. This is the second diagnostics-doc volunteer (after Alperen Temel in the Monday minutes) — the management/metrics/diagnostics applicability document the WG agreed to spin off is now attracting authors before it has a repo.

Relay resource-lifecycle correctness becomes the ecosystem-wide theme

The window’s clearest technical signal is that multiple relays hit the same class of bug at once — resources (tracks, namespaces, broadcasts, subscriber counts) not being cleaned up or accounted for correctly across session lifecycle events:

  • moqtail merged fix(relay): remove track when last subscriber leaves (#330, +26/−8, Zafer Gürel) — freeing per-track relay state on the last unsubscribe — plus per-bidi control-message logging (#329) and a comment cleanup (#328). Zafer also deployed a public draft-18 relay at relay18.moqtail.dev (with a public Grafana dashboard) and put it forward for afrind’s conformance testing. Debugging on the thread: raw-QUIC ALPN=moqt-18 returned ALPN_NEG_FAILED for both Kota’s Moqtopus and afrind (the relay also advertises h3, a likely cause), though imquic’s client connects over raw QUIC; Kota then hit a “no publisher found” on a PUBLISH_NAMESPACE + SUBSCRIBE flow (publisher sees the SUBSCRIBE but the subscriber sends STOP_SENDING).
  • Cloudflare relayKota Yatagai pinned down the long-running Jordi-Cenzano failure: the relay holds a namespace/track-name even after the session is done, so a new session re-publishing the same name is treated as a request arriving after PUBLISH_DONE — objects never flow. This is the same “relay closes the control QUIC streams immediately after SUBSCRIBE_OK” symptom Jordi reported, now with a root cause. moq-rs separately merged a draft-18 wire-correctness fix — encode byte-valued message parameters as raw uint8 (#192, Mike English, +301/−32).
  • moqx opened relay-hops: prevent namespace loops across relay cycles (#502, Paul Gregoire) and a bug that per-track subscriber counts on /state are wrong under load (#501) — plus a large ops PR adding jemalloc + a TLS-terminated stats stack to the published relay image (#480, +4513/−116, Giovanni Marzot).
  • moq shipped resilience fixes: linger a broadcast across an ungraceful source loss (#2469, +551/−63) so a momentary publisher drop doesn’t tear down subscribers, a keep-alive on the server side of a WebSocket session (#2471), and a delay-based congestion-control default for both quinn and quiche backends (#2468). New contributor t0ms logged an active/active source-failover mesh-routing gap (#2461), and Luke Curley opened a moq-archive: chunked, arrival-ordered archival format roadmap issue (#2456). Point releases: moq-relay v0.14.1, moq-cli v0.9.1, moq-gst v0.3.1 (over July 22’s v0.14.0 train).

Together with Altanai’s diagnostics proposal, the window reads as the ecosystem turning from “can two implementations carry media” to “does a relay clean up, account for, and survive the messy lifecycle events a CDN sees” — the operational-hardening phase the WGLC push and the management/diagnostics-doc spin-off both point at.

Interop floor: MOQtail joins the full-A/V set; the nightly runner regresses

Jordi Cenzano posted an updated v18-MOQMIv3 moq-encoder-player matrix on July 23: MOQtail now carries full video + audio — joining Moxygen, Miniero’s imquic, and Nokia in the working set — while Cloudflare and cdn.moq.pro (Luke Curley) both still fail on SUBSCRIBE (each closing the QUIC stream). Jordi is now migrating his packager from MOQMI to LOC, and mentioned a full player refactor that massively simplified audio playback and A/V sync by leaning on newer AudioContext capabilities (retiring the old ring-buffer approach); Lorenzo Miniero offered to add MOQMI support to his imquic A/V test clients (and the Janus integration) for more media interop next week. Mike English collected the ad-hoc reports (including Giovanni Marzot’s aiomoqt results) into the ad-hoc interop wiki for Friday’s interop report.

The automated nightly runner regressed during Hackathon week. Two cuts ran July 23 — a 00:33 UTC daily (330/136/184/10) and an off-cadence 20:52 UTC run (350/130/209/11, at-target draft-18 220, 0 ahead, 130 behind). Versus the July-22 baseline (338/142/196/0, at-target 190): the matrix grew +12 to 350 and at-target jumped +30 to 220 as fresh draft-18 endpoints registered, but pass fell −12 (142 → 130), fail rose +13, and skips reappeared (0 → 11) — the newly-wired cells failing or skipping on their first appearance, the same first-cut-regression pattern seen on the July-20 expansion. Still targets draft-18. See interop-runner and interop-endpoints.

Eyevinn opens a CTA-608 closed-caption accessibility effort

Torbjörn Einarsson (Eyevinn) filed a planning batch (July 23) for auto-generated in-band CTA-608 captions in mlmpub — a moqlivemock epic (#104) with sub-issues to build an internal cc608 package (#110), wire injection into the three serve paths (#111), verify decode round-trips across packagings (#112), and emit a CTA-608 accessibility descriptor in catalogs (#113); a matching warp-player issue (#156) covers rendering the captions in the WebCodecs/LOC pipeline. The design-research sub-issues (MSF accessibility signaling, caption CLI/config surface, channels/languages, injection seam, go-608 dependency) were opened and closed the same day. All planning so far — no code has landed. It positions moqlivemock/warp-player as an accessibility-signaling testbed on top of its AVC/HEVC/AV1 codec coverage.

Activity (July 22 → July 23) — The IETF-126 Monday session minutes post, revealing the WG’s Path-to-WGLC decisions: split filters + SSTS out of core transport, secure-objects queued for WGLC, management/metrics spun off — while afrind’s 41-test conformance suite becomes the de-facto relay bar (Nokia passes all 41). The window’s biggest fact was the belated posting of the IETF-126 Monday (July 20) session minutes on July 22 (minutes-126-moq-202607201200), which carry the WG’s WGLC-shaping decisions — all about trimming the core: (1) chairs called consensus to move range filters and Sender-Side Track Switching into separate drafts, out of core transport (Cullen Jennings formally objected on a ~50/50 split; the AD affirmed the chairs); (2) management, metrics & diagnostics considerations spin off into a new applicability/manageability document (Alperen Temel to draft); (3) secure-objects queued for WGLC once the shared transport IANA registry stabilizes (Cullen proposed, Suhas supported). On the interop floor, afrind’s 41-test draft-18 data-plane conformance suite (moxygen’s, moq-test-based) emerged as the concrete relay-readiness bar — Nokia’s relay passed all 41 over both QUIC and WebTransport (first to clear it); moqtail is “working on it, a few issues left” (Zafer Gürel) and shipped an 8-PR second relay-resilience batch; afrind still couldn’t reach cdn.moq.pro. GitHub carried its usual full load: moq’s biggest day of the window (a ~2,100-LOC API-review contract fix #2439, qlog trace capture across backends, hvc1/HEVC import from a new contributor) capped by a v0.14.0 release train (moq-cli v0.9.0, moq-ffi/moq-gst v0.3.0); a fresh moq-transport WGLC-prep PR batch (#1822#1825, all OPEN); and AV1 completed its round trip as warp-player added AV1 playback (#155) the day after moqlivemock’s AV1 capture landed. Interop’s July-22 cut was flat/identical to July-21 (338/142/196/0, ~42.0%; at-target draft-18 190). No new draft revisions (transport-19, loc-04 newest); no new MoQ Monthly (#2, May 31); no open wiki issues.**

IETF-126 Monday minutes posted (July 22): the Path to WGLC is scope reduction

The IETF-126 MoQ WG met Monday July 20 (12:00 UTC); the formal minutes for that session were posted July 22 as minutes-126-moq-202607201200 (the generic minutes-126-moq alias still 404s — the per-session doc is the canonical one). They confirm that the “Path to WGLC” is being pursued primarily by removing scope from the core transport draft, not adding design:

  • Filters and SSTS to leave core transport. The chairs called consensus to move range filters and Sender-Side Track Switching (SSTS) into separate drafts. This is a contested determination: Cullen Jennings formally objected, citing a roughly 50/50 split in the room, and the Area Director affirmed the chairs’ right to call consensus. It aligns with the accumulating signal that filters are the least-wanted part of the draft-18→19 delta (Luke Curley won’t implement them; imquic ignores the property filters; ianswett’s #1816).
  • Management / metrics / diagnostics spun off. The WG decided to move MOQT’s management, metrics, and diagnostics considerations into a separate applicability/manageability document in a new repository; Alperen Temel volunteered to write the initial diagnostics + relay-management draft.
  • Secure-objects queued for WGLC. Cullen Jennings proposed advancing secure-objects to Working Group Last Call and parking it until the core transport IANA registry stabilizes; Suhas Nandakumar supported. Transport stabilization is framed as the critical blocker — “if transport does not ship, none of the other WG drafts can progress.”
  • LOC / secure-objects registry collisions were discussed (application-defined property ranges floated, no final decision), and the AUTH design team was tasked with evaluating challenge-response signaling — inline on the subscription vs. a dedicated session-level authentication stream.

No formal hum or WGLC announcement has hit the mailing list yet (newest list message is still July 20). The IETF-126 slide-deck set has grown to ~13 decks (added MOQT Issues and PRs Part 2, a Location Filter deck, and the Thu/Fri Chair slides). The Thursday (July 23, 14:30 UTC) and Friday (July 24, 14:00 UTC) MoQ sessions had not yet produced minutes, drafts, or list traffic at check time.

afrind’s 41-test data-plane conformance suite becomes the relay bar; Nokia passes it

Between the Monday and Thursday sessions, #moq revived around interop. afrind ran his 41-test draft-18 data-plane conformance suite (moxygen’s suite, moq-test-based, requires prefix-based routing) against the live relays and reported that Nokia’s relay passed all 41 tests over both raw QUIC and WebTransport — the first relay to clear the full suite — then challenged others to match it (dart, party_parrot). Zafer Gürel confirmed moqtail is “working on it, a few issues left” (via Ali Begen); Miniero’s imquic needs a prefix-routing fix before the moq-test-based suite can hit it; and afrind reported he still couldn’t get subscriptions running through cdn.moq.pro and had lost track of the Cloudflare relay’s current status. This 41-test suite (distinct from Yu You’s earlier 7-test client check) is now the concrete relay-readiness benchmark heading into Mike English’s Friday (July 24) interop report. See interop-runner.

moqtail ships a second relay-resilience batch; moq-dev cuts v0.14.0

  • moqtail followed its July-21 DoS-protection batch with an 8-PR second batch July 22 (Zafer Gürel): standalone FETCH range validation (#317), joining-fetch forward-state semantics RL-7a (#318), FETCH stream-count + prior-gap semantics RL-7b (#319), rejecting reserved namespaces .session/. locally RS-17a (#324), PUBLISH_BLOCKED on stream exhaustion RL-2 (#326), plus moqtail-rs EndGroup-delta / datagram status+properties / padding (#320) — the same gaps afrind’s suite exercises. No new release (relay@0.14.1 stands).
  • moq had its busiest day of the window (July 22, mostly Luke Curley + David von Wrangel): the API-review cleanup peaked with a ~2,100-LOC contract fix for the catalog, timeline, token, and teardown surfaces (#2439, +1487/−633, now merged), qlog trace capture across the quinn/quiche/noq backends (#2451), hvc1/HEVC import::Track support from new external contributor Kuba Migdał (#2444), carrying the TS/DVB service layer as opaque SI sections (#2440), js/net stats refactors, and an AbortSignal-aware connect() (wrangelvid). Cut as a minor-version release train — moq-relay v0.14.0, moq-cli v0.9.0, moq-ffi v0.3.0, moq-gst v0.3.0 (July 22–23).
  • moq-transport opened a fresh WGLC-prep PR batch July 22 (all OPEN): #1824 (REDIRECT empty-namespace/name ambiguity, afrind), #1823 (security consideration for logging untrusted string fields, afrind), #1822 (Timed-Out gap status for expired Fill Timeout, afrind), and #1825 (replace the FORWARD parameter with Range-Filter-based pausing, Suhas) — plus Otto Hermann’s new issue #1826 (§9.4 subscription-aggregation widening restriction). afrind’s July-21 #1821 (object-unavailability observability) was closed.
  • AV1 round trip completed: a day after moqlivemock added AV1 capture (#102), warp-player merged AV1 video playback (#155, tobbee, +440/−9) via the WebCodecs/LOC pipeline — closing the AV1 capture→publish→play loop. Álvaro Velad Galván (Shaka) filed a “Add TS support” request on moqlivemock (#103).

Activity (July 21 → July 22) — Between IETF-126 MoQ sessions, WGLC-prep hardening moves entirely to GitHub — a transport security/IANA cluster, a moqtail relay-DoS batch, and AV1 lands in moqlivemock. With Monday’s session done and the next MoQ slots on Thursday July 23 / Friday July 24, the IETF list, datatracker, and Slack #moq were all quiet (no new threads, no draft revisions past loc-04, minutes-126-moq still unposted). GitHub carried the day. moq-transport merged a 6-PR security/IANA cluster (all July 21): impersonation-prevention detail (#1789, Suhas), URI-scheme security per RFC 7595 §3.7 (#1772), a hex→bitfield code-point rewrite (#1774), expanded mutual-TLS security considerations (#1786, afrind), a REDIRECT retry-interval-0 clarification (#1785), and FORWARD-on-REQUEST_UPDATE for SUBSCRIBE_TRACKS (#1812, sharmafb) — plus afrind’s OPEN #1820 SUBSCRIPTION_STATE_UPDATE proposal and Otto Hermann’s issue #1821 on object-unavailability observability (no new published revision; transport-19 stands). moqtail shipped a matching relay-resilience / DoS-protection batch (Zafer Gürel, six PRs July 21: PUBLISH_BLOCKED, GOAWAY+REDIRECT, EXCESSIVE_LOAD shedding, SIGTERM drain, TOO_FAR_BEHIND reset, SUBSCRIBE precedence). moq ran a busy July-21 day (stats→model-layer refactor #2427 +1491/−1040, quinn congestion-control knob, per-frame mux fragments) and gained a new contributor, t0ms, opening DVB-service-layer work. moqlivemock added AV1 as a first-class CMSF/CMAF + LOCMAF codec (#102, tobbee). Interop’s July-21 cut reshuffled +8 to 142 pass (338/142/196/0, ~42.0%; at-target draft-18 flat 190). No new MoQ Monthly (#2, May 31); no open wiki issues.**

Between sessions — the Path to WGLC continues on the editor’s copy

The IETF-126 MoQ WG met Monday July 20; the next two sessions are Thursday July 23 (14:30 UTC) and Friday July 24 (14:00 UTC). Across the mid-week gap the IETF mailing list, datatracker, and Slack produced nothing new — no fresh threads, no draft-revision bumps (loc-04 remains the newest, 2026-07-20), the agenda stayed at agenda-126-moq-04 with its 9 slide decks, and formal minutes-126-moq are still not posted. The only new Slack #moq traffic was Christian Huitema’s off-topic July-21 beach photo. So the day’s substance was entirely on GitHub, where the “Path to WGLC” editorial and IANA work continued.

moq-transport merged a six-PR security/IANA cluster on July 21, all editorial/security refinements to the editor’s copy (no new published revision — transport-19 stands):

  • Preventing impersonation#1789 (Suhas Nandakumar, +30/−1) adds detail on impersonation prevention.
  • URI-scheme security#1772 (Suhas) adds moqt:// URI-scheme security considerations per RFC 7595 §3.7.
  • Bitfield code-point syntax#1774 (Suhas, +31/−29) replaces hex code-point enumerations with bitfield syntax across the spec.
  • Mutual-TLS security considerations#1786 (afrind, +16/−9) expands the mTLS security-considerations text.
  • REDIRECT retry-interval-0#1785 (afrind) clarifies the meaning of a Retry Interval of 0 with REDIRECT.
  • FORWARD on REQUEST_UPDATE#1812 (sharmafb) allows FORWARD on a REQUEST_UPDATE for SUBSCRIBE_TRACKS.

Two threads stayed open: afrind’s new control-message proposal #1820 “Add SUBSCRIPTION_STATE_UPDATE message”, and issue #1821 from Otto Hermann (ojhermann) — “What is a subscriber entitled to observe after an Object becomes unavailable?” — a subscription-state-observability question that dovetails with draft-19’s clarified subscription-state destruction timing. See moq-transport.

moqtail builds out the relay-resilience / DoS-protection surface

After weeks of draft-18 wire alignment and a control-plane restructure, moqtail’s July-21 work is entirely relay operations — the graceful-shutdown, load-management, and DoS-protection surface tracked by its RL-* task list (Zafer Gürel, all six merged July 21):

  • PUBLISH_BLOCKED message (#308, +151/−11, closes #248).
  • GOAWAY Request ID + Timeout and the REDIRECT structure (#310, +300/−66) — the per-request migration/redirect scaffolding.
  • EXCESSIVE_LOAD shedding on request streams (#311, part of #250).
  • SIGTERM drain with GOAWAY + new-request rejection (#312, RL-5) — graceful shutdown.
  • TOO_FAR_BEHIND reset of slow subscribers (#313, part of #250).
  • SUBSCRIBE precedence over SUBSCRIBE_TRACKS (#314).

Still OPEN: #317 (standalone FETCH range validation + End Location clamp) and issues 316 (RL-7 FETCH prior-object / joining-fetch forward-state semantics) and #309 (GOAWAY per-request migration + REDIRECT retry). No new release — relay@0.14.1 stands. This makes moqtail the second non-moq-dev codebase maturing relay operations beyond interop conformance. See moqtail.

moq-dev/moq: stats refactor, and a new DVB contributor

moq ran a busy July-21 day (Luke Curley + David von Wrangel), largely internal plumbing:

  • Stats moved into the model layer#2427 refactor(stats)!: collect traffic counters in the model layer (+1491/−1040), with #2430 adding datagram counters.
  • quinn congestion-control knob#2432 exposes a congestion-control setting on the quinn backend (+371/−9).
  • moq-mux per-frame fragments#2426 emits per-frame fragments without waiting for a successor frame (+429/−471); plus a js/net reconnect fix (#2442), a qmux 0.3.1 WebSocket-crash fix (#2437), and an fMP4 CMAF timeline import (#2428).

The notable ecosystem signal is a new external contributor, t0ms, who opened DVB-service-layer round-trip work (#2434, OPEN) and an issue to carry the DVB service layer through the TS catalog (#2433) — early DVB/broadcast interest in the moq-dev stack. Also OPEN: an API-review contract fix (#2439 correct catalog/timeline/token/teardown contracts) and a moq-hls broadcaster pool (#2438). No new release — v0.13.7 stands.

AV1 lands in moqlivemock; small moves elsewhere

  • moqlivemock merged #102 “add AV1 test content and CMSF pipeline support” (tobbee, +355/−72) — AV1 (av01) is now a first-class video codec in the CMSF/CMAF + LOCMAF path alongside AVC and HEVC (SVT-AV1 low-delay CBR, appearing in every CMSF catalog as CMAF + LOCMAF renditions; gracefully excluded from LOC/moq-mi, and warp-player AV1 playback is still to come). Adds a Codec: overlay line to all generated test video. The wiki’s first AV1-over-MoQ media path. See moqlivemock.
  • moxygen — direct commits: “Centralize MoQ SETUP default limits as shared constants” (aman-sharma, July 22) and a gmock-1.14 test-compile fix (#209, gmarzot).
  • moqx#497 parse draft-18 SETUP and name extension types in moq_decode.py (afrind, +108/−24) merged; the rolling snapshot release refreshed July 21.
  • google/quiche (moqt) — a single ASAN test fix (“Fix ASAN error in MoqtBidiStreamTest”, Martin Duke), the first moqt-subtree commit since July 17.
  • moq-rs, imquic, moq-js, aiomoqt, birneee/quiche_moq, Moqtopus, and Eyevinn (warp-player / moqtransport / locmaf) were quiet.

Interop

The runner cut once — the July-21 00:34:11 UTC cut: 338/142/196/0 (~42.0% pass; at-target draft-18 190 · 0 ahead · 148 behind). Versus the July-20 00:34 cut (338/134/204/0, at-target 190): matrix flat 338, skip flat 0, at-target flat 190, pass +8 (134 → 142), fail −8. This is a pass/fail reshuffle, not scope growth — the July-20 structural expansion added 19 draft-18 cells (moq-go, moq5, xquic-draft-18) that all failed on their first cut, and eight of them began converging green here. The cut ran at 00:34 UTC, before July-21’s daytime merges. Still targets draft-18. No July-22 cut at check time. See interop-runner.

Activity (July 20 → July 21) — IETF 126 Vienna opens on the “Path to WGLC,” Hackathon Day 2 lands the ecosystem’s first cross-implementation draft-19 interop, and a coordinated IANA registry fix ships as loc-04. The first IETF-126 MoQ session ran Monday July 20 (12:00 UTC) — the agenda bumped to agenda-126-moq-04 the morning of the session, now with 9 slide decks (added MSF & CMSF, Sender-Side Track Switching, and “MOQT Issues and PRs Part 1”), led by Alan Frindell’s “MOQT Updates Since IETF 125” paired with an explicit “Path to WGLC” slot; formal minutes are not yet posted. On the Hackathon floor, Day 2’s headline was the first cross-implementation draft-19 interopLuke Curley’s moq-cli (moq-dev) published/subscribed against Miniero’s imquic draft-19 relay in forced draft-19 (76,804 bytes, 5.23 s, H.264-validated) — while relay debugging continued (Nokia fixed its SUBSCRIBE_TRACKS/NAMESPACE split; Cloudflare passed Moqtopus but still dropped Jordi Cenzano’s objects by closing control streams after SUBSCRIBE_OK; cdn.moq.pro’s native-QUIC /anon stayed 401-broken, surfacing a PUBLISH_NAMESPACE-vs-SUBSCRIBE_NAMESPACE auth-model debate). IANA cleanup landed: draft-ietf-moq-loc-04 published July 20, fixing the MoQ Properties registry (loc #28) in lockstep with [[moq-transport|transport #1818]] “Fix IANA Properties for LOC/SecureObjects.” The code kept converging on draft-18 (moqtail 308; moq-rs cut a v0.7.24 / moq-native v0.10.0 batch; moq landed moq-lite-06 cost-based routing + empty-PATH handling). And afrind disclosed he is now part-time at Meta and consulting for OpenMOQ to build the moqx relay. Interop’s runner cut expanded +19 to 338 (all new draft-18 cells failing → pass flat 134, fail +19 to 204, at-target +19 to 190). No new MoQ Monthly (#2, May 31); no open wiki issues.**

IETF 126 Vienna opens — the Monday session and the Path to WGLC

The first MoQ session at IETF 126 ran Monday July 20, 12:00 UTC (with the two remaining sessions Thu July 23 14:30 and Fri July 24 14:00). The agenda was bumped to agenda-126-moq-04 the morning of the session, and the deck count grew from six to nine: Chair Slides, “MOQT Updates Since IETF 125” (paired on the agenda with “Path to WGLC”, Alan Frindell), LOC, Secure Objects, “Auth Design Team Update – IETF 126”, “MoQ Performance and Feedback Requirements for Live Media and Agent Interaction”, MSF & CMSF, “Sender-Side Track Switching”, and “MOQT Issues and PRs, Part 1.” The Monday agenda ran the MOQT update + Path to WGLC, LOC, Secure Objects, the Auth Design Team update, and a MOQT issues review. Formal minutes are not yet posted (minutes-126-moq 404s; the live notes pad is JS-rendered) — the only minutes email in the window is Magnus Westerlund’s July-20 note that the July-6 interim minutes are now on the datatracker. The three-session split reserves Thursday for Secure Timestamped Summaries, Location Track Filters, and more MOQT issues, and Friday for the interop report, MSF/CMSF, moq-tempo, the Mocha overview, and Top-N Track Filters.

Hackathon Day 2 (July 20) — first cross-implementation draft-19 interop, and relay debugging

Day 2 produced the window’s biggest interop milestone and a long tail of relay debugging:

  • First cross-implementation draft-19 interop. Luke Curley’s Rust moq-cli (moq-dev build 0.8.7-24f8528ed) interoped with Miniero’s imquic draft-19 relay lminiero.it:9000: auto-negotiation produced a 124,451-byte fMP4 (ffprobe-validated H.264 320×180), and both forced draft-19 (76,804 bytes, 5.23 s) and forced draft-18 succeeded. Two independent draft-19 codebases on the wire together for the first time — a durable milestone even though the official interop target stays draft-18. (Drafts 16/17 connected but produced no media; 14/15 failed at H3 CONNECT, and Miniero has dropped 14/15 support.)
  • moq-cli ↔ Moxygen (fb.mvfst.net:9448): raw-QUIC draft-18 succeeded end-to-end (2.48 MB MP4, H.264 320×180 @ 30 fps, AAC, clean FFmpeg decode) but HTTPS/WebTransport failed — both sides hit WT_BUFFERED_STREAM_REJECTED (0x3994bd84); afrind shipped a buffered-stream fix later July 20.
  • Nokia (moqt://moqt.nokiaresearch.com:4443/moq): Yu You fixed the SUBSCRIBE_TRACKS / SUBSCRIBE_NAMESPACE split and a lingering deprecated STREAM_HEADER_TRACK (0x50) stream opener (surfaced by Luke Curley), redeploying twice.
  • Cloudflare (draft-18-interop.cloudflare.mediaoverquic.com:443): mixed — Kota Yatagai’s Moqtopus reached full PASS (PUB_NS + SUBSCRIBE in subgroup and datagram, plus REQUEST_UPDATE OK/ERROR — logged to the ad-hoc wiki), but Jordi Cenzano’s moq-encoder-player still failed with objects not flowing because “the relay closes the control QUIC streams for those subscriptions immediately after the publisher sends SUBSCRIBE_OK.”
  • cdn.moq.pro/anon stayed broken over native QUIC: /anon returns a 401 and QUIC PATH is not wired through for the IETF path (only moq-lite / qmux), so afrind couldn’t authenticate; Luke suggested the authenticated ?jwt=<token> URL or qmux (TCP/TLS/WebSocket). This surfaced a durable auth-model design signal — Luke wants SUBSCRIBE_NAMESPACE mandatory with PUBLISH_NAMESPACE an optional RTT optimization, while afrind noted the two carry different authorization models (SUBSCRIBE_NAMESPACE = the subscriber implicitly trusts the publisher for any track under the namespace; PUBLISH_NAMESPACE is separately authorized).
  • afrind asked for a canonical list of available draft-18 relays and pointed testers at moxygen’s data-plane conformance suite for relays (requires prefix-based routing).

Per Mike English’s ad-hoc interop wiki (Kota’s July-20 edit), the Moqtopus draft-18 matrix now shows Nokia, Meetecho, Moxygen, and Cloudflare all passing PUB_NS/SUBSCRIBE (subgroup + datagram); only moq.pro fails (peer shutdown after SETUP). Mike is collecting these reports for Friday’s (July 24) interop report. See interop-runner, interop-endpoints.

loc-04 and the coordinated IANA property-registry fix

draft-ietf-moq-loc-04 was published July 20 (20 pages, same authors), the first revision after IANA’s July-16 early review of loc-03. Mo Zanaty landed loc #28 “Fix IANA Registry for MOQ Properties” (+15/−17) in lockstep with the twin moq-transport #1818 “Fix IANA Properties for LOC/SecureObjects” (mzanaty, merged July 20) — the six LOC properties are now registered at IDs 0x08 / 0x09 / 0x0C / 0x0D / 0x0F / 0x10, moving TIMESTAMP off the 0x06 value that collided with SUBGROUP_DELIVERY_TIMEOUT and building on Jordi Cenzano’s July-19 loc #27. This is the cross-document IANA punch-list being worked down draft-by-draft on the eve of WGLC. Separately, c-taylor opened moq-transport #1819 “Reserved Namespaces punches hole upstream” (July 20), and ianswett’s filter-semantics thread (#1816, #1790) stayed active.

The code kept converging on draft-18

  • moqtail continued its control-plane restructure through July 20 (#303–#308, all Zafer Gürel): the SUBSCRIBE_NAMESPACE / SUBSCRIBE_TRACKS split (#305), removal of the cancel/teardown message family (#303, −857 LOC), zero-element track namespaces (#306), and an OPEN PUBLISH_BLOCKED message (#308). No new release (relay@0.14.1 stands).
  • moq-rs cut a July-20 release batch — moq-relay-ietf v0.7.24 / moq-native-ietf v0.10.0 (minor bump) / moq-pub v0.9.2 / moq-sub v0.4.13 / moq-clock-ietf v0.6.19 / moq-test-client v0.1.11 — after merging #189 forward local accept IP to the connection tagger (itzmanish). New bug #191 (dmorn): the relay retains an upstream track subscription after the last downstream subscriber leaves.
  • moq ran a heavy July-20 day (all kixelated): moq-lite-06 cost-based routing landed (#2424 +1174/−109) with unannounce-on-last-route-detach (#2419); signing keys scoped to publish/subscribe paths (#2416); empty PATH accepted, defaulting to "" across protocols (#2414 — with #2413 support IETF PATH over native QUIC closed unmerged, both tracking the Hackathon cdn.moq.pro PATH debugging); catalog renditions unsealed with explicit/shareable timelines (#2420); Safari WebTransport disabled (#2417). Still no release past v0.13.7; OPEN #2427 moves traffic counters into the model layer (July 21).
  • moxygen direct-committed “Expose client address when rejecting connections” + text-client subscribeTracks() publish-mode samples (July 20), with three OPEN PRs (gmarzot 210, afrind #208). Moqtopus added a publisher to its interop client and split control messages into separate files. openmoq/moqx gained afrind’s OPEN #497 parse draft-18 SETUP and name extension types in moq_decode.py.
  • google/quiche (moqt), moq-js, aiomoqt, birneee/quiche_moq, and Eyevinn (moqlivemock / warp-player code / moqtransport / locmaf) were quiet.

afrind’s OpenMOQ consulting disclosure

In an IETF “Change in employment disclosure” (July 20), Alan Frindell told the MoQ list he has moved from full-time to part-time at Meta — Meta still sponsors his IETF participation (which remains on Meta’s behalf) — and in his non-Meta hours now runs a consulting business contracted with OpenMOQ to build open-source software, specifically the moqx relay. This formalizes the funding behind the moqx work afrind has driven on the OpenMOQ moxygen fork and gives the consortium a named, sponsored relay project. See openmoq.

Datatracker, interim, interop

  • Datatracker — one revision bump: loc-04 (2026-07-20). Everything else unchanged (transport-19, secure-objects-01, privacy-pass-auth-03 all 07-06; msf-01, cmsf-01; individual drafts moq-tempo-00 / locmaf-01 / relay-dos-01 / the Will Law event-timeline set / the Mocha series). draft-ietf-moq-dts4moq still absent.
  • Interim scheduling — the Seattle in-person interim saw announcement churn July 20: competing Oct 14 / Oct 15 announcements plus a mis-dated “2016-10-15” entry that was cancelled; a confirmed session stands at 2026-10-15, 09:00–14:00 America/Los_Angeles (16:00–21:00 UTC), agenda TBD, Meetecho. See interim-meetings.
  • MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-20 00:34:36 UTC cut: 338/134/204/0 (~39.6% pass; at-target draft-18 190 · 0 ahead · 148 behind). Versus the July-19 00:33 cut (319/134/185/0, at-target 171): the matrix grew +19 to 338 as fresh draft-18 endpoints (new rows/columns include moq-go, moq5, xquic-draft-18) were wired in — and because every one of the 19 new cells failed on its first cut, pass held flat at 134 while fail absorbed the entire +19 (185 → 204) and at-target rose +19 (171 → 190) (its first move since freezing at 171 July 14). The cut ran at 00:34 UTC, before July-20’s daytime Hackathon work, which is exercised manually off-runner. Still targets draft-18. No July-21 cut at check time. See interop-runner.

Activity (July 19 → July 20) — The Vienna Hackathon’s first full interop day — five relays under simultaneous test, a live cross-implementation matrix, and the code to match. July 19 (Hackathon Day 1, Sunday) turned #moq into a live interop channel with five relays exercised at once: Moxygen (fb.mvfst.net:9448/moq-relay), imquic (lminiero.it:9000, draft-19), Nokia (moqt://moqt.nokiaresearch.com:4443/moq, draft-18), Cloudflare (draft-18-interop.cloudflare.mediaoverquic.com:443), and Luke Curley’s cdn.moq.pro/anon. Jordi Cenzano’s (Meta) moq-encoder-player matrix: Moxygen, imquic, and Nokia all did full video+audio; Cloudflare failed on PUBLISH and cdn.moq.pro failed on subscribe. Two spec-interpretation findings surfaced on the floor: a rendezvous-timeout semantics debate (afrind ↔ Yu You, Nokia patched mid-Hackathon) and cdn.moq.pro’s IETF path being “nowhere near as tested” — plus Luke Curley’s statement that Hang will likely never implement the draft-19 filters (“complicates billing”), reinforcing that filters are the ecosystem’s problem child (see also ianswett’s new transport #1816 “Range filters only filter integer Properties” and imquic’s partial support). The code matched the floor: imquic merged draft-19 to main (PR #32, +1124/−211), moqtail ran a ~11-PR control-plane-restructure sprint (#292–#302), moq-rs landed SUBSCRIBE_NAMESPACE (PR #187, Manish) + a v0.7.23 release round and rebased its draft-18 Hackathon branch, Kota Yatagai’s Moqtopus added a +2007-line publisher/subscriber flow, and Giovanni Marzot ran an aiomoqt v0.10.6 control-plane regression. On the IETF side, IETF 126 Vienna sessions begin (Monday July 20, 12:00 UTC)agenda-126-moq-03 with 6 slide decks posted (incl. “MOQT Updates Since IETF 125”, LOC, Secure Objects, Auth Design Team, and a new performance/feedback-requirements deck) — the weekly GitHub digest resumed (July 19, first since July 12), Jordi Cenzano landed a loc #27 TIMESTAMP-registry IANA fix, afrind opened transport #1817 (moqt-URI host resolution), and the Oct 14–15 Seattle in-person interim was formally IESG-announced. Interop recovers +2 to 134 (July-19 00:33, 319/134/185/0, at-target draft-18 171). No new draft revisions (all 07-06); no new MoQ Monthly (#2, May 31); no open wiki issues.**

The Vienna Hackathon’s first full interop day — five relays, one live matrix

July 19 (Hackathon Day 1, Sunday) produced the window’s richest hands-on interop, with participants asked to log results to the ad-hoc interop wiki so Mike English can summarize them for Friday’s (July 24) interop report. Five relays were under simultaneous cross-implementation test:

  • Moxygen — afrind’s fb.mvfst.net:9448/moq-relay, plus an offer of a fan-out performance test (“tell me how many subscribers you think you can handle for a given track size, and I will hit you”).
  • imquic — Miniero’s lminiero.it:9000, now running draft-19.
  • Nokia — Yu You’s moqt://moqt.nokiaresearch.com:4443/moq (draft-18), redeployed July 19 with fixes for redundant request_ids and subscriber-forced forwarding.
  • Cloudflaredraft-18-interop.cloudflare.mediaoverquic.com:443, which Mike briefly broke with a bad rebase, then restored to “the initial draft-18 features + PUBLISH and SUBSCRIBE_NAMESPACE.”
  • Luke Curley’s Hang CDNcdn.moq.pro/anon (draft 14-19).

Jordi Cenzano’s (Meta) interop matrix — using the moq-encoder-player with the MOQ-MIv3 packager (migrating to LOC) — was the clearest single artifact of the day:

RelayResult
Moxygen✅ full video + audio
imquic (Miniero’s)✅ full video + audio
Nokia✅ full video + audio
Cloudflare❌ failing on PUBLISH (“seems NOT implemented”)
cdn.moq.pro/anon❌ failing on subscribe (“publisher not found”)

Other participants corroborated: Kota Yatagai’s Moqtopus (interopping “on a train”) verified SETUP/SUBSCRIBE/SUBSCRIBE_OK/REQUEST_ERROR against Moxygen and PUB_NS+SUBSCRIBE against Nokia (subgroup and datagram modes) but couldn’t yet reach cdn.moq.pro/anon; Suhas Nandakumar’s draft-18 moq-web “still working fine with all the relays I tested during London”; and Giovanni Marzot’s aiomoqt v0.10.6 ran a Python control-plane regression with “good results.” afrind’s openmoq/moqx moq_decode.py tool was in active use for wire-level debugging (he posted a REQUEST_ERROR frame decode that surfaced a string-underflow parse bug).

Two design signals from the floor — filters and rendezvous timeout

The Hackathon surfaced two durable protocol signals that the automated runner would never have found:

  • Filters keep accumulating “no” votes. Luke Curley, asked by Miniero whether cdn.moq.pro supports filters: “nope and I don’t think I’ll ever implement them… really complicates billing” — a relay would have to “charge based on the non-filtered amount.” This joins imquic’s partial filter support (OBJECT_PROPERTY_FILTER / TRACK_PROPERTY_FILTER ignored), the contested WG semantics (moq-transport #1810, #1801), and ianswett’s new #1816 “Range filters only filter integer Properties” (opened July 19). The new draft-19 filters — the headline draft-18→19 delta — are proving the least-wanted, least-implemented part of the draft.
  • Rendezvous-timeout semantics are ambiguous. afrind hit “track not found” subscribing through Nokia’s relay to his own PUB_NS’d namespace. The root cause: Nokia’s relay, with RENDEZVOUS_TIMEOUT=0 (default), “won’t try to do upstream subscriptions unless there’s an active publisher for the given track.” afrind reads rendezvous as applying only when no PUBLISH_NAMESPACE is advertised at subscribe time (“the relay should always try upstream subscriptions [when a namespace is advertised]”). Yu You deployed a fix mid-Hackathon; afrind and Kota both confirmed PUB_NS+SUBSCRIBE working afterward. A concrete spec-interpretation gap in relay routing behavior, resolved on the floor.

Separately, the cdn.moq.pro subscribe failures (Miniero, Jordi, afrind) traced to Hang’s IETF path being “nowhere near as tested” as its own clients: it sends unsolicited PUBLISH_NAMESPACE (a holdover for clients that don’t implement SUBSCRIBE_NAMESPACE, which Luke plans to change to require SUBSCRIBE_NAMESPACE), and its recently-added QUIC PATH support may not be deployed. See interop-endpoints, interop-runner.

The code matched the floor — imquic draft-19, moqtail’s control-plane sprint, moq-rs SUBSCRIBE_NAMESPACE

The Hackathon drove a heavy code day across four implementations:

  • imquic merged draft-19 to mainPR #32 “Add support for MoQT v19” (Miniero, +1124/−211, merged July 19 09:28), folding the draft-19 build (previously running ahead of the repo) into main. This makes imquic the first tracked-repo implementation with draft-19 in main. Follow-up relay commits: “Allow REQUEST_UPDATE to PUBLISH as a subscriber,” FORWARD-related relay fixes, PUBLISH tweaks.
  • moqtail ran a ~11-PR control-plane-restructure sprint over the weekend (#292–#302, working down the RS-/CL-/RL- task list, issues #230–#242): request types moved onto their own bidirectional streams (#297), the control plane onto a pair of uni streams (#294), PUBLISH_OK folded into REQUEST_OK + Track Properties (#299), MAX_REQUEST_ID / REQUESTS_BLOCKED removed (#298), Request ID removed from response messages (#302), stream reset codes (#300), GREASE + reserved Property ranges (#296), moqt:// as the unified selectable-transport scheme (#295), Mandatory Track Properties enforcement (#293), and delta-encoded FETCH Group/Object IDs (#292).
  • moq-rs landed SUBSCRIBE_NAMESPACEPR #187 (Manish) merged to main July 19; draft-18-dev was rebased onto main the same day to prep the Hackathon relay, cut as moq-relay-ietf v0.7.23 (+ moq-pub v0.9.1 / moq-sub v0.4.12 / moq-clock-ietf v0.6.18 / moq-test-client v0.1.10). This is the SUBSCRIBE_NAMESPACE feature Mike put live mid-Hackathon (though SUBSCRIBE-reaching-the-publisher was still gapped in testing).
  • Moqtopus (Kota Yatagai) landed a +2007-line “Publisher addition and subscriber flow change at IETF126” commit — the PUBLISH+SUBSCRIBE_TRACK flow he said he’d add this week.
  • moqx — Giovanni Marzot’s PR #496 “moq_decode: request_id cleanup” (request_id left response messages in draft-18) aligned the shared decoder with draft-18.

moq had a lighter July-19 day (no release; a moq-stats tier-default removal #2411, a demo download-stats fix #2403, a signals abort-scope fix #2402; OPEN Opus-output-sample-rate #2404 and unannounce-offline-broadcasts #2410). moxygen and quiche (moqt) were quiet/infra-only. See imquic, moqtail, moq-rs, moq-dev.

IETF 126 Vienna begins — sessions, slide decks, and WG churn

The first MoQ session at IETF 126 runs Monday July 20, 12:00 UTC (the two others are Thu July 23 14:30 and Fri July 24 14:00). The agenda is at agenda-126-moq-03 and six slide decks are already posted: Chair Slides (rev 01), “MOQT Updates Since IETF 125”, LOC, Secure Objects, “Auth Design Team Update – IETF 126”, and a new “MoQ Performance and Feedback Requirements for Live Media and Agent Interaction” deck. Minutes/bluesheets not yet posted at check time.

Surrounding WG activity July 19:

  • The weekly GitHub digest resumed (Repository Activity Summary Bot, July 19 02:28 UTC — first since July 12). It reports active moq-transport churn (1 new issue, 13 comments across 8 issues on filter processing / publish parameters / track aliasing; 2 closed; 2 new PRs; 7 PRs under discussion), the warp-streaming-format (msf) “IANA feedback ahead of IETF #126” issue + 6 new PRs, and two new loc issues (“Early IANA feedback”, “Frame durations and discontinuities”).
  • IANA cleanup continues — Jordi Cenzano merged loc #27 “Update TIMESTAMP type value in MoQ registry” (+1/−1, July 19), a small registry fix against the IANA early-review punch-list; the msf IANA batch (#192–#195) remains OPEN.
  • New moq-transport items — afrind opened PR #1817 “Define host resolution for moqt URIs” (+9/−0, OPEN) and ianswett opened issue #1816 “Range filters only filter integer Properties” (the filter-semantics thread again).
  • October Seattle interim formalized — the IESG Secretary posted formal “Interim Meeting: 2026-10-14 / 2026-10-15” announcements July 19 (12:00–17:00 Pacific, agenda TBD, Meetecho remote; requested by chair Morgan Condie), turning the Oct 14–15 in-person issue-discussion days Martin Duke set July 15 into datatracker sessions. See interim-meetings.

Other impls, list, datatracker, interop

  • Other implementations — beyond the Hackathon movers above, moxygen was infra-only (OSS-bot hash bumps), quiche (moqt) quiet since its July-17 migration, and moq-js, Eyevinn (moqlivemock / locmaf / warp-player / moqtransport), birneee/quiche_moq quiet.
  • Datatracker — no WG or individual revision bumps (all 07-06 / earlier unchanged; draft-ietf-moq-dts4moq still absent). agenda-126-moq at rev 03; IETF 126 MoQ sessions July 20 / 23 / 24.
  • MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-19 00:33:22 UTC cut: 319/134/185/0 (~42.0% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-18 00:30 cut (319/132/187/0, at-target 171): matrix flat 319, skip flat 0, at-target flat 171, pass +2 (132 → 134), fail −2 (187 → 185) — a modest recovery from the July-18 dip, still inside the week-plus 130↔137 flake band. The cut ran at 00:33 UTC, before the July-19 Hackathon day’s merges (imquic draft-19, moqtail control-plane sprint, moq-rs SUBSCRIBE_NAMESPACE), so it reflects none of that work — which was being exercised manually on the Hackathon floor, off the automated runner. Still targets draft-18. No July-20 cut at check time. See interop-runner.

Activity (July 18 → July 19) — The Vienna Hackathon goes live: the first hands-on MoQ interop of the window, a chair ruling on the interop target, and the ecosystem’s first draft-19 relay. With the IETF-126 Hackathon underway, Lorenzo Miniero deployed the first draft-19 relay in the ecosystem (imquic at lminiero.it:9000) and asked for draft-19 peers — filter serialization works but OBJECT_PROPERTY_FILTER / TRACK_PROPERTY_FILTER are ignored pending clarity. Mike English offered his draft-18 single-instance relay (draft-18-interop.cloudflare.mediaoverquic.com:443); Yu You (Nokia) ran a v18 client against it — 4/7 pass, the three PUBLISH-driven cases rejected as “not supported.” Luke Curley demoed the full Hang 14-19 stack to Jordi Cenzano (Meta) — cdn.moq.pro/anon, the moq.pub/moq.watch JS clients, moq-cli, and RTMP/SRT/WHEP converters. Amid the draft-18-vs-19 activity, Alan Frindell posted a chair clarification: the official interop target is still draft-18 (“since there’s been some confusion”), with -19 welcome for filter feedback. On the WG side, afrind completed the IANA cross-document response — opening “Early IANA feedback” tracking issues on the last three reviewed drafts ([[moq-loc|loc #26]], [[moq-secure-objects|secure-objects #90]], [[moq-privacy-pass|privacy-pass #25]]), so all five IANA-reviewed documents now have trackers ([[moq-transport|transport #1814]] + [[moq-msf|msf #191]] existed already). moq ran another busy July-18 day — moq-stats crate extraction merged (#2380), a big net refactor (#2396), moq-hls recording cursors (#2389) — and cut a fresh moq-relay v0.13.7 train. Interop dips −5 to 132 (July-18 00:30, 319/132/187/0, at-target draft-18 171) — the July-17 daytime convergence work landing as a step down into the flake band. No new draft revisions (all 07-06); no new MoQ Monthly (#2, May 31); no open wiki issues; no new weekly GitHub digest (last July 12).

The Vienna Hackathon goes live — first hands-on interop, and the first draft-19 relay

The IETF-126 Hackathon (Vienna, week of Sun July 20) started producing real interop on July 18, and Slack #moq — quiet-then-logistics through July 17 — turned into a live testing channel:

  • First draft-19 relay in the ecosystem. Lorenzo Miniero deployed “a first draft-19 version of my relay online at the usual spot” (imquic, lminiero.it:9000) and asked anyone with draft-19 support to test. The bulk of the draft-18 → -19 delta is the new filters: serialization/deserialization works and the basic filters function, but OBJECT_PROPERTY_FILTER / TRACK_PROPERTY_FILTER are currently ignored — Miniero has doubts about their intended semantics (echoing moq-transport #1810 “New section on filters hard to process”). This is the wiki’s first tracked draft-19 interop endpoint, the draft-19 code running ahead of the public main branch (PR #32 still in progress). See imquic, interop-endpoints.
  • Cloudflare draft-18 relay under live test. Mike English pointed testers at his draft-18 single-instance relay draft-18-interop.cloudflare.mediaoverquic.com:443 (the runner’s moq-rs-draft-18). Yu You (Nokia) ran a basic v18 conformance client (moq-test-client v0.1.0): tests 1-4 pass (setup-only, announce-only, publish-namespace-done, subscribe-error) but tests 5-7 fail (announce-subscribe, object-vectors, subscribe-before-announce) — the relay rejects PUBLISH with errCode=0x0 reason="not supported". Concrete evidence the Cloudflare draft-18 relay doesn’t yet accept the upstream PUBLISH flow — exactly the kind of gap live Hackathon testing surfaces that the automated runner’s endpoint pairings may not.
  • Hang 14-19 stack demoed end-to-end. Luke Curley walked Jordi Cenzano (Meta) through the Hang public stack: cdn.moq.pro/anon supports draft 14-19; the JS clients moq.pub?relay=<host> and moq.watch?relay=<host> and the Rust moq-cli (cargo install moq-cli) likewise; and cdn.moq.pro fronts RTMP (rtmps://cdn.moq.pro:1935), SRT (srt://cdn.moq.pro:877), and WHEP (https://cdn.moq.pro/whep/…) converters into/out of the same broadcast. See moq-dev, interop-endpoints.

In-person: Manish, Miniero, and Jordi Cenzano were in the Hackathon room July 18; Miniero was pulled to the NOC for part of the day; Kota Yatagai, afrind, and Yu You (Nokia) had said they’d arrive Sunday.

Chair ruling: the interop target is still draft-18

The live draft-18/draft-19 mix prompted a clarification from the chair. Alan Frindell (July 18): “Since there’s been some confusion, the official interop target for moq-transport is still draft-18. Intrepid souls are welcome to implement -19 (filter feedback is definitely valuable).” This settles the question the wiki has flagged for two weeks — the runner has held draft-18 while moq-dev shipped -19 and imquic began -19 work. The reading: draft-18 stays the coordination baseline through Vienna, and -19 experimentation (especially the new filters, whose semantics are actively contested — see moq-transport #1810, #1801) is encouraged precisely to shake out design issues before -19 becomes the target. See interop-runner.

IANA cross-document response completes — trackers on all five reviewed drafts

Following the five-document IANA early-review sweep (transport-19 + loc-03 / msf-01 / privacy-pass-auth-03 / secure-objects-01, filed July 16), afrind opened “Early IANA feedback” tracking issues on the three remaining drafts July 18: loc #26 (quoting the specific finding — §6.1’s nonexistent “Property Headers” registry and §6.2’s unfindable “Streaming Formats” registry), secure-objects #90, and privacy-pass #25. With [[moq-transport|transport #1814]] and [[moq-msf|msf #191]] already open, every one of the five IANA-reviewed documents now has a tracking issue — the WG has fully absorbed the cross-document punch-list into per-repo work items ahead of IETF 126. On the transport draft itself, ianswett’s PR #1815 “Alan’s comment from #1788” merged July 18 (+2/−2, editorial); the msf IANA/interim cleanup batch (#192–#195) remains OPEN. See moq-transport, moq-msf.

moq-dev/moq — another convergence day + a v0.13.7 train

moq’s July-18 day (all kixelated) continued the audit-then-converge arc and cut a fresh relay train moq-relay v0.13.7 (+ moq-ffi v0.2.33 / moq-cli v0.8.7 / libmoq v0.3.14):

  • moq-stats crate lands#2380 extract stats publishing into moq-stats with compressed tracks (+1872/−1340, MERGED after being OPEN last window) — the stats module (#2348) is now its own crate.
  • Net refactor#2396 route everything through create_broadcast, gate announce on Route.live (+2217/−2482, breaking) and #2377 drop moq-net’s direct tokio dependency (+1040/−517, MERGED after being OPEN) — the moq-net simplification the contract-drift audit set up.
  • moq-hls recording#2389 Producer/Consumer cursors for recording a broadcast (+1060/−479) is the first code toward the DVR/recording roadmap (issues 2281), plus #2394 release retired renditions instead of force-closing them.
  • Fixes#2397 align audio inputs to codec frames, #2390 avoid a websocket teardown panic, #2386 route WebSocket auth by request domain, #2383 strip edit lists from the CMAF init, #2376 give the ietf server odd request IDs so v14-16 subscribes don’t hang. Still OPEN: #2179 cost-based cache-aware routing (moq-lite-06 WIP) + route-cost I-D (+1482/−198). See moq-dev.

Other impls, list, datatracker, interop

  • Other implementationsmoxygen infra-only again July 17-18 (OSS-bot hash bumps, folly::invokestd::invoke). moqtail quiet after finishing its draft-18 sprint (#291, July 17). quiche quiet after its July-17 migration burst. moq-rs, moq-js, Eyevinn (moqlivemock / locmaf / warp-player / moqtransport), moqx, birneee/quiche_moq, Moqtopus quiet.
  • Mailing list — nothing new since the three July-17 IESG virtual-meeting announcements (Aug 24 / Sep 8 / Sep 21, already logged). No new weekly GitHub digest (last July 12).
  • Datatracker — no WG or individual revision bumps (all 07-06 / earlier unchanged; draft-ietf-moq-dts4moq still absent). IETF 126 Vienna July 20 / 23 / 24; Hackathon week from Sun July 20.
  • MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-18 00:30:14 UTC cut: 319/132/187/0 (~41.4% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-17 00:33 cut (319/137/182/0, at-target 171): matrix flat 319, skip flat 0, at-target flat 171, pass −5 (137 → 132), fail +5 (182 → 187). The cut ran at 00:30 UTC, so it reflects the July-17 daytime merges (quiche’s draft-18 migration, moqtail 291) — which landed as a −5 drop rather than the gain one might expect, returning the surface to the low end of the week-plus 130↔137 flake band. With at-target frozen at 171, it stays cell-conversion/flake within the existing set, not new coverage. Still targets draft-18 (the runner has not advanced to draft-19; the live draft-19 testing above is manual, off-runner). See interop-runner.

Activity (July 17 → July 18) — The IANA “early review” turns out to be a coordinated five-document sweep, not just transport-19 — and the WG starts working it down on the eve of IETF 126. Last update caught only Amanda Baber’s transport-19 review; this pass surfaces four companion IANA reviews filed the same July-16 morningloc-03 (#1456079), msf-01 (#1456080), privacy-pass-auth-03 (#1456081), secure-objects-01 (#1456082) — all flagging the same defect class (registry names/references that don’t line up with the registries transport-19 establishes, plus missing RFC 8126 boilerplate). Will Law opens a four-PR msf IANA/interim cleanup batch (#192#195, #192 closing the msf #191 IANA tracker). The fall virtual-interim series is formally booked — three IESG “WG Virtual Meeting” announcements (July 17) for Aug 24 / Sep 8 / Sep 21, joining Aug 10 (interim-2026-moq-21). Draft-18 convergence widens to a fifth codebase: quiche breaks a quiet streak with a serious migration burst (SUBSCRIBE → dedicated bidi stream, session no longer owns subscriptions, SUBSCRIBE_NAMESPACE/TRACKS split, codebase-wide class rename), while moqtail finishes its sprint (#290 FIRST_OBJECT bit, #291 control table, both MERGED) and moxygen goes quiet (infra-only). moq runs a second ~35-merge refactor/convergence day executing the July-16 contract-drift audit — token contract (#2329), exclusive SUBSCRIBE_END (#2333), py/swift/kt/go on one wrapper contract (#2345), a new moq-stats module (#2348/#2380), Safari/audio fixes — and cuts moq-ffi v0.2.32 / moq-cli v0.8.6. Slack breaks its ~10-day silence July 17 with IETF 126 Vienna Hackathon logistics (Lorenzo Miniero; Mike English already in Vienna, Kota Yatagai + afrind arriving Sunday). Interop essentially flat (July-17 00:33, 319/137/182/0, at-target draft-18 171, pass +1). No new draft revisions (all 07-06); no new MoQ Monthly (#2, May 31); no open wiki issues.**

IANA early review was a five-document sweep — the cross-draft registry punch-list

The transport-19 IANA early review logged last update (#1456083) was one of five reviews Amanda Baber (IANA, via RT) filed in an eight-minute burst on the morning of July 16 (10:44–10:52 UTC). The four companion reviews:

  • loc-03 ([IANA #1456079]) — §6.1 references a nonexistent “Property Headers” registry (a “Properties” registry exists in transport with 0x06 already allocated); §6.2’s “Streaming Formats” registry can’t be found in the transport doc.
  • msf-01 ([IANA #1456080]) — §14.2 missing registry-group name / Change Controller / designated-expert guidance (RFC 8126); §14.3 references nonexistent registries with naming inconsistent vs transport-19; §14.4 needs the Private-Use range upper limit clarified.
  • privacy-pass-auth-03 ([IANA #1456081]) — supply the registry-group name and designated-expert guidance for two new registries (RFC 8126 §4.6).
  • secure-objects-01 ([IANA #1456082]) — §7.1 references a “MoQ Object Properties” registry, but transport-19 actually establishes “MoQ Properties” (fields Type/Name/Scope/Specification); type 0x02 already allocated.

The common thread across all five is a single defect class: registry names/references in the satellite drafts that don’t line up with the registries transport-19 actually creates, plus missing RFC 8126 designated-expert/Change-Controller boilerplate. That makes the transport-19 review’s “reconcile allocations across loc/secure-objects/msf” note IANA’s cross-document verdict — the registry hygiene a cluster of documents needs before Last Call. Will Law opened the first document being worked down: msf PRs #192 update normative references + IANA registries (closes the msf #191 IANA tracker), #193 catalog-object publishing guidelines, #194 add a data reserved track role, #195 event-timeline JSON-example fixes (all OPEN, July 17). See moq-transport, moq-msf.

Fall virtual-interim series formally booked; Slack surfaces for the Hackathon

The virtual-interim cadence Martin Duke confirmed July 16 (Aug 10 / 24, Sep 8 / 21, all 16:30–18:00 UTC) is now fully on the datatracker: the IESG Secretary posted three “WG Virtual Meeting” announcements July 17 for Aug 24 / Sep 8 / Sep 21 (agenda TBD, Meetecho), joining the Aug-10 one (interim-2026-moq-21). These are the biweekly working sessions between IETF 126 (Vienna) and the October Seattle hybrid interim — the scaffolding for grinding down the IANA/WGLC list.

Separately, Slack #moq broke a ~10-day silence July 17: Lorenzo Miniero asked “Will there be anyone on-site at the Hackathon here in Vienna?” (4 🙋 reactions), and Mike English (already in Vienna), Kota Yatagai (Moqtopus), and afrind confirmed attendance (Mike now, the others Sunday). No spec content — but the channel surfacing at all is the pre-Vienna tell: the ecosystem is physically converging on Vienna for the Hackathon (week of Sun July 19) ahead of the Mon/Thu/Fri sessions.

Draft-18 convergence widens to a fifth codebase — google/quiche joins

quiche’s MoQT module, quiet since July 8, landed three substantial draft-18 migration commits July 17:

  • 78341592 — move SUBSCRIBE to a dedicated bidirectional stream: a large refactor introducing MoqtSubscribeRequestStream / MoqtSubscribeResponseStream; SUBSCRIBE / SUBSCRIBE_OK / UNSUBSCRIBE are removed from the control stream, the MoqtUnsubscribe message type is dropped, and the session no longer owns subscriptions.
  • 2f4ea0dd — mass Moqt-class rename: SubscriptionPublisherLivePublisher, SubscribeRemoteTrackLiveSubscriber, RemoteTrackObjectSubscriber, plus namespace/publish-stream renames.
  • d106f181 — split SUBSCRIBE_NAMESPACE and SUBSCRIBE_TRACKS: removes SubscribeNamespaceOption; adds stubs/parser/framer for SUBSCRIBE_TRACKS.

This is Google doing the same wire migration moqtail and moxygen did, from a very different C++ base. Together with moqtail (finishing its sprint), moxygen, imquic (#32 v19), and moq-dev (on draft-19), five independent codebases are now on or converging toward the runner’s draft-18 target. moqtail closed its sprint’s last two OPEN PRs — #290 add the FIRST_OBJECT bit to SUBGROUP_HEADER (+213/−26, MERGED) and Kerem Bekmez’s #291 moqtail-ts control-message-type table → draft-18 (MERGED). moxygen was infra-only this window (folly::invokestd::invoke, an OSS-bot hash bump) — no draft-18 protocol commits. See quiche-moq, moqtail.

moq-dev/moq — the audit-then-converge half of the contract-drift find

moq’s July-17 day (~35 merges, all kixelated unless noted) executes the July-16 cross-language contract-drift audit (issues #2309–#2325) and generalizes the fixes; it cut a point release moq-ffi v0.2.32 / moq-cli v0.8.6 (no new relay train — v0.13.6 remains July-16 latest):

  • Contract-drift fixes land — the July-16 OPEN PRs merge: #2329 align the Rust/JS token contract on sign/verify/authorize (+1089/−462), #2328 coalesce concurrent group fetches, #2327 handle IPv4-mapped dual-stack peers (#2326 was CLOSED unmerged). #2333 aligns js/net + the moq-lite draft on exclusive SUBSCRIBE_END — the #2309 off-by-one.
  • Binding convergence (the durable move)#2345 converges py/swift/kt/go on one wrapper contract (+624/−128), #2373 unifies moq-ffi shapes ahead of a version bump (+765/−447), #2344 aligns the C ABI naming on announce/_finish, #2343 renames the kio FuturePollable, and #2337/#2335 close js/net gaps vs rs/moq-net.
  • Stats module + moq-net refactors#2348 exposes a real stats module (and makes Role::Both unrepresentable), already being extracted into its own moq-stats crate with compressed tracks (#2380, OPEN +1823/−1345); moq-net takes breaking refactors — #2371 tear down the shared upstream once the last subscriber leaves, and OPEN #2377 drop moq-net’s direct tokio dependency (+982/−512).
  • Safari / audio cluster#2350 align the moq-audio capture/encode surface with moq-video (+1666/−1279), #2372 resume AudioContext from a real user gesture, #2369 publish video files on Safari, #2368 render audio at the decoder’s real sample rate, #2365/#2364 worklet/logging fixes — working fperex’s live Safari/audio bug sweep (issues #2352#2358: non-48 kHz Opus decoding to noise, relay cancelling a live subscription 5 s after viewer reconnect, video.captureStream() unsupported, muted tile still downloading). See moq-dev.

Other impls, list, datatracker, interop

  • Other implementationslocmaf cut a v0.2.0 Go-module release July 17 (+ a govulncheck CI workflow); imquic landed two minor relay/demo commits (connection-count + log-timestamp flags). moq-rs, moq-js, Eyevinn/moqtransport + warp-player + moqlivemock, moqx, birneee/quiche_moq, Moqtopus quiet.
  • Datatracker — no WG or individual revision bumps (all 07-06 / earlier unchanged; draft-ietf-moq-dts4moq still absent). Meetings: the Aug 10 / 24, Sep 8 / 21 virtual interims are now all on the datatracker. IETF 126 Vienna July 20 / 23 / 24 (Hackathon week from Sun July 19).
  • Interop — the runner cuts once: the July-17 00:33:44 UTC cut: 319/137/182/0 (~42.9% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus July-16 (319/136/183/0, at-target 171): pass +1 (136 → 137), fail −1, everything else flat — a single cell flipping, extending the plateau just above the week-long 130↔132 band. The cut ran at 00:33 UTC (before the day’s commits), so it does not yet reflect quiche’s migration or moqtail 291; whether those push the matrix past 137 is the near-term watch. Still targets draft-18 (not advanced to draft-19). See interop-runner.

Activity (July 16 → July 17) — IANA’s early review of [[moq-transport|draft-ietf-moq-transport-19]] lands (July 16) and the WG opens cross-repo tracking issues — the window’s biggest durable WG signal, and a concrete gate on the “Path to WGLC.” Amanda Baber (IANA, RT #1456083) flags the IANA Considerations section as incomplete — registry-group naming, RFC 8126 expert guidance, explicit numeric bounds, protocol-differentiated names, and duplicate/inconsistent registry allocations shared with loc, secure-objects-01, and msf-01 — and afrind opens moq-transport #1814 + Will Law opens msf #191 to track it, both scoped “ahead of IETF #126”; afrind also merges moq-transport #1804 (FETCH to ≥1 publisher). Martin Duke fixes the virtual-interim cadence — Aug 10 / Aug 24 / Sep 8 (Tue) / Sep 21, all 16:30–18:00 UTC (the Aug 10 session is now on the datatracker as interim-2026-moq-21). Meanwhile moq runs another heavy day and cuts a second release train in 48 h (moq-relay v0.13.6) — congestion-adaptive encoder bitrate (#2303, the first CC→encoder link), caller-driven (Session, Driver) sessions (#2302), moq-hls import rework + conformance (#2299), macOS window/system-audio capture (#2293) — then a cross-language contract-drift cleanup batch (#2309#2325: SUBSCRIBE_END off-by-one, token contract, hardcoded Opus) with July-17 fixes. Draft-18 convergence widens to a third and fourth impl: moqtail’s sprint runs a strong day 2 (single SETUP #286, split delivery timeouts #287, LOC property renumber #285), and moxygen breaks a weeks-long quiet streak landing draft-18 FORWARD-in-REQUEST_UPDATE work. Interop breaks upward for the first time in a week (July-16 00:33, 319/136/183/0, at-target draft-18 171, pass +6). No new draft revisions (all 07-06); Slack silent ~10 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

IANA early review of transport-19 — the WGLC punch-list arrives

The window’s most consequential WG fact is on the mailing list, not GitHub: IANA’s Amanda Baber posted an early review of [[moq-transport|draft-ietf-moq-transport-19]] (RT ticket #1456083, July 16, permalink) ahead of IETF 126. It is a concrete pre-Last-Call punch-list:

  • The IANA Considerations section is incomplete — the draft creates new registries but doesn’t fully specify them.
  • Registry-group naming: clarify whether the new registries belong to an existing group or form a new one (IANA suggests “Media over QUIC Transport” / “Media over QUIC”).
  • Designated-expert guidance per RFC 8126 is needed for any Expert-Review / Specification-Required registries.
  • Registry names should include the protocol identifier to avoid collisions with similarly-named registries elsewhere.
  • Explicit numeric bounds (e.g. 0–255, 0–65535) must be stated for every registry with numeric limits.
  • Cross-draft coordination: related drafts (loc, secure-objects-01, msf-01) request registry values with inconsistent naming and potentially duplicate allocations — the authors need to reconcile them.

The WG reacted the same day: afrind opened moq-transport #1814 “IANA early review issues” and Will Law opened msf #191 “IANA feedback ahead of IETF #126”. afrind also merged moq-transport #1804 require FETCH to be sent to at least one publisher (+1/−1). Read against last week’s finalized-agenda “MOQT Update and Path to WGLC” slot (Frindell, Monday), the review makes the WGLC push tangible: the remaining blockers are enumerated registry/IANA-Considerations items, not open protocol design. See moq-transport.

Virtual-interim cadence set (Aug 10 → Sep 21)

Martin Duke’s “Re: Proposed Virtual Interim dates” (list, July 16, permalink) confirms the four virtual interims between Vienna and the October Seattle hybrid interim, adjusted from his June-30 five-date proposal after list feedback (concerns due July 14): Aug 10, Aug 24, Sep 8 (a Tuesday, shifting off US Labor Day), Sep 21 — all 16:30–18:00 UTC. The IESG Secretary formally announced the Aug 10 session (permalink, agenda TBD, Meetecho), and it is now on the datatracker as interim-2026-moq-21; four “New Interim Meeting Request” tool messages the same day correspond to the datatracker entries. This is the scheduling scaffolding for working the IANA/WGLC list down. See interim-meetings.

moq-dev/moq — a feature day, a second release train, and a contract-drift audit

moq’s July-16 day (all kixelated unless noted) pairs genuine new capability with an internal-consistency audit, and cuts moq-relay v0.13.6 / moq-ffi v0.2.31 / moq-cli v0.8.5 / libmoq v0.3.13 (July 16, the second release train in 48 h after v0.13.5 on July 15):

  • New capability#2303 adapt encoder bitrate to the congestion-control estimate (+1026/−47) is the first CC→encoder link and the first of last week’s roadmap issues (#2283) to ship as code; #2293 adds macOS window/app/system-audio capture + device enumeration (+1478/−240, MERGED after being OPEN July 15) — a new native capture platform; #2302 reshapes net around a caller-driven (Session, Driver) pair (+938/−309, merged 00:27 July 17).
  • moq-hls hardening continues#2299 reshape moq-hls import around per-track ownership + fix HLS conformance (+1076/−687) and #2298 release track subscriptions when an export pauses (+251/−58) extend the July-14/15 origin-hardening line.
  • Bindings / net correctness#2287 align portable-API parity across bindings (+841/−52), #2307 drop Announced::Restart (unannounce/announce pair replaces it, +231/−432), #2306 honor declared track ends + unify abort error codes + dedupe the libmoq native link list, #2294 accept SNI-less raw QUIC connections, and external contributor Bleuzen’s #2291 allow b-frames in the OBS path.
  • Cross-language contract-drift cleanup — late July 16 kixelated filed a batch of 17 issues (#2309#2325) cataloguing where the Rust core, the js/net port, the C bindings, and the draft have silently diverged: #2309 SUBSCRIBE_END off-by-one (Rust exclusive vs js/net + draft inclusive), #2310 JS verify rejecting Rust root-scoped tokens, #2311 subscribe_audio hardcoding Opus, and #2312–#2324 a sweep of bindings/moq-net/moq-ffi/libmoq/js API drift (#2325 stale docs). The July-17 fixes begin landing as OPEN PRs: #2329 align the Rust/JS token contract on sign/verify/authorize (+1089/−462), #2328 coalesce concurrent group fetches behind a shared Requests queue, #2327 handle IPv4-mapped peers on a dual-stack socket, and new contributor Simon Kirsten’s #2326 stop racing priority updates against group-frame writes.
  • Still OPEN — the cross-connection-migration PR #2241 grew to +3736/−800 (the connection-resilience theme still in flight). See moq-dev.

Draft-18 convergence widens — moqtail day 2 + moxygen resumes

  • moqtail runs a strong second day of its draft-18 alignment sprint (mostly Zafer Gürel, with Kerem Bekmez now a second active contributor): #286 collapse CLIENT_SETUP/SERVER_SETUP into a single SETUP (+438/−453), #287 split delivery timeouts + rendezvous/fill, align param numbers (+294/−144), #285 renumber LOC property ids (+206/−95, implementing issue #282 and pairing with loc #25), #284 control-message-type table → draft-18, plus #289 TerminationCode tryFrom fix and docs #288. OPEN: #290 add the FIRST_OBJECT bit to SUBGROUP_HEADER (+207/−26) and #291 the moqtail-ts control-message table (Kerem). A relay@0.14.1 was tagged July 15.
  • moxygen (Meta’s C++ relay) breaks a weeks-long quiet streak, landing draft-18 FORWARD-in-REQUEST_UPDATE mechanics via direct (Phabricator/ShipIt) commits: subscriber-side request_updates for SUBSCRIBE_TRACKS (6f922d3) and SUBSCRIBE_NAMESPACE (a80fc40), make Forward updatable in REQUEST_UPDATE for SUBSCRIBE_TRACKS (3b4fd31), and gate subgroup reopen on v18 forward resume (e848acf, July 16). This is the implementation side of ianswett’s moq-transport #1813 INCLUDE_PROPERTIES / the upstream FORWARD-on-REQUEST_UPDATE cluster. moqx mirrors it (#494 sync-bot + snapshot rebuild). Together with moq-dev (on draft-19) and the runner’s standing endpoints, four independent codebases are now converging on the draft-18 wire. See moqtail, moxygen.

Other impls, list, datatracker, interop

  • Other implementationsmoqlivemock (#100 node24 CI + #98 crypto dep, MERGED July 15; issue #101 Add MOQT draft-19 support, avelad) and locmaf (#5 in-browser conformance checker + #6 mp4ff v0.54.0, MERGED July 15) were already logged last update. moq-rs, quiche (moqt, newest moqt commit July 8), moq-js, imquic (#32 v19 unchanged), Eyevinn/moqtransport + warp-player, birneee/quiche_moq, Moqtopus quiet.
  • Mailing list — beyond the IANA review and virtual-interim posts above, no new weekly GitHub digest (last July 12). Slack silent ~10 days (newest is still the July-7 qmux thread).
  • Datatracker — no WG or individual revision bumps: transport-19, privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent. New: interim-2026-moq-21 (Aug 10 virtual). IETF 126 Vienna July 20 / 23 / 24.
  • MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-16 00:33:03 UTC cut: 319/136/183/0 (~42.6% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-15 00:28 cut (319/130/189/0, at-target 171): matrix flat 319, skip flat 0, at-target flat 171, pass +6 (130 → 136), fail −6 (189 → 183). This is the first move above the week-long 130↔132 band (107 → 124 → 132 → 130 → 132 → 132 → 130 → 130 → 136 over July 8–16). The cut ran at 00:33 UTC, so it reflects July-15 evening work (moqtail’s moqt-18 ALPN bump, moq-dev v0.13.5) rather than the July-16 daytime merges — and with at-target flat at 171 it reads as cell-conversion within the existing set, not new coverage. Whether it holds or was a one-cut spike is the near-term thing to watch. Still targets draft-18 (the runner has not advanced to draft-19). See moqtail, moxygen, moq-dev, interop-runner.

Activity (July 15 → July 16) — moq runs a big July-15 moq-hls-hardening + release day (~13 merges) that executes the July-14 moq-hls roadmap — byte-range honoring (#2271), catalog-rendition reconciliation (#2266), audio groups in master variants (#2264), moq-mux cut(end) group boundary (#2270) — the machinery to run moq-hls as a standalone origin. The connection-resilience theme lands its first piece (#2240 moqsink reconnect on transport death, MERGED after being OPEN July 14); the TS watch player drops its MSE backend to become WebCodecs-only (#2288, +187/−1196, breaking); moq-native’s default QUIC backend flips to quinn (#2285); a fresh release train cuts moq-relay v0.13.5 (+ffi v0.2.30 / cli v0.8.4 / gst v0.2.12). kixelated files a broad roadmap issue batch (#2275#2284, #2296): DVR/time-shift, QUIC multipath, Hang E2E encryption, SCTE-35/captions, native echo-cancel/AGC. Separately moqtail wakes up with a draft-18 alignment sprint — ALPN → moqt-18 (#280), Extension Headers → Properties (#281), draft-18 constants + varint conformance vectors (#283), a ~20-issue moqtail-ts API-break backlog — a second implementation converging on the interop target. WG spec churn broadens across four repos in a single day: ianswett’s moq-transport #1813 (INCLUDE_PROPERTIES), Will Law’s msf #190 (Event Timeline header property), kixelated’s loc #25 (frame durations), sharmafb’s privacy-pass triage (#22/#24/PR #23). On the list, Martin Duke sets the October hybrid interim at F5 Tower, Seattle — Oct 12–13 interop, Oct 14–15 issues (resolving the venue poll closed July 5), plus Vienna slide-upload instructions and a MOPS-WG live-video panel (Tue July 21 09:00). Interop is byte-for-byte flat (July-15 00:28, 319/130/189/0, at-target draft-18 171). No new draft revisions (all 07-06); the agenda advanced -02-03 (dated July 14). Slack silent ~9 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-dev/moq — a moq-hls-hardening + release day, and a wide roadmap sketch

moq’s July-15 day (all kixelated unless noted) turns the July-14 moq-hls refactor into working origin behavior and lands the first connection-resilience piece:

  • moq-hls → real origin#2271 honor byte ranges and map changes (+611/−42, MERGED), #2266 reconcile catalog renditions (+321/−70), #2264 account for audio groups in master variants (+119/−27), and #2270 moq-mux cut(end) as the group boundary (+361/−62) — the byte-range / master-playlist / catalog-reconciliation behavior an HLS gateway needs to serve legacy players from a MoQ ingest. These implement the July-14 moq-hls roadmap issues (#2248–#2253, several closed July 14). Still OPEN: #2268 cancel HLS subscriptions on pause and #2295 moq-mux custom catalog tracks.
  • Connection resilience + correctness#2240 reconnect the moqsink publisher instead of dying on transport death (+403/−128, MERGED after being OPEN July 14) is the first landed piece of the resilience theme; the bigger #2241 migrate subscriptions transparently across connections stays OPEN and grew to +3770/−736. Alongside: #2260 release per-subscription serve scopes instead of leaking (+118/−12), #2262 resolve reordered track aliases (+252/−63), #2267 moq-rtc RTP-clock sync via sender reports (+260/−22), #2261 SRT egress send-buffer stalls (+71/−3).
  • watch simplification + backend flip#2288 remove the MSE backend, inline the WebCodecs pipeline (+187/−1196, breaking, MERGED) makes the TS watch player WebCodecs-only; #2285 flips moq-native’s default QUIC backend to quinn (was noq, quinn opt-in). A related OPEN pair: #2286 make net connections caller-driven (+526/−200) and #2294 accept SNI-less raw QUIC connections.
  • Release train (July 15)#2200 chore: release (+214/−142, MERGED) cuts moq-relay v0.13.5, moq-ffi v0.2.30, moq-cli v0.8.4, moq-gst v0.2.12 — the first since v0.13.4 (July 12); #2290 bumped non-Rust package versions.
  • Roadmap issue batch — kixelated filed #2275#2284 + #2296: DVR rewind/time-shift (#2275), QUIC multipath bonded contribution (#2276), Hang E2E encryption (#2277), wall-clock latency target (#2278), typed SCTE-35 cues (#2279), caption/subtitle tracks (#2280), broadcast recording/replay (#2281), native echo-cancel/AGC (#2282), CC-bandwidth → encoder (#2283), keyframe request/PLI (#2284), quiche → quinn/noq backend parity (#2296) — the widest forward-looking scope the wiki has logged, spanning media features, transport, and native audio processing.
  • Notable OPEN PRs#2293 macOS window/app/system-audio capture + device enumeration (+1409/−234), #2287 align portable-API parity across bindings (+830/−33), #2289 mark hang Catalog/Container #[non_exhaustive] (breaking), and external contributor Bleuzen’s #2291 allow b-frames in the OBS path. See moq-dev.

moqtail — a draft-18 alignment sprint (a second impl converging on the interop target)

moqtail (maintainers Zafer Gürel + Ali C. Begen), which had sat at draft-16 only for months, opened a draft-18 alignment sprint July 15–16:

  • #280 bump ALPN to moqt-18 (+4/−4, MERGED), #281 rename Extension Headers → Properties (+456/−465, MERGED — the -19/-18 terminology), #283 share draft-18 constants + varint conformance vectors (+1886/−272, MERGED July 16), #219 send the relay wt-protocol header (+13/−34), and sharmafb’s #214 malformed-track detection for end clients (+121/−37).
  • A ~20-issue tracking batch (TS-6b … TS-20, JS-1/JS-2, MT-1/MT-2, plus #282 LOC property-id renumber) scopes the moqtail-ts draft-18 API break: rename Properties, split SUBSCRIBE_NAMESPACE / SUBSCRIBE_TRACKS, PUBLISH_BLOCKED, GREASE, and adoption of the moqt:// URL scheme.

moqtail’s new LOC property-id renumber issue (#282) pairs directly with kixelated’s fresh loc #25 (frame durations/discontinuities) — cross-implementation convergence on the LOC container’s property IDs. See moqtail.

WG spec churn broadens; other impls; list; datatracker; interop

  • moq-wg — pre-Vienna spec activity now touches four repos in one day (no merges in-window, all OPEN): ianswett’s moq-transport #1813 Add an INCLUDE_PROPERTIES Parameter (+10/−0); Will Law’s msf #190 Add Event Timeline track Property to carry header data (+31/−3, follow-on to the July-14 init-data cluster 189); kixelated’s loc #25 Frame durations and discontinuities; and sharmafb’s privacy-pass triage — issues #24 (replay safety for publicly-verifiable 0x0002 tokens) + #22 (misleading “Matching Algorithm” language) and PR #23 (add SUBSCRIBE_TRACKS to MoQAction, +11/−9) — reading as backlog-clearing on the exact items the Monday (AUTH/privacy-pass), Thursday (extended MOQT issues), and Friday (MSF) agenda lists. secure-objects / cmsf / catalog-format quiet.
  • Other implementationslocmaf #5 ships an in-browser conformance checker over a shared conform package (+1773/−909, tobbee, MERGED) — validation tooling for the locmaf-01 draft — plus #6 (mp4ff v0.54.0). moqlivemock #100 CI node24 (tobbee, MERGED) and a new issue #101 Add MOQT draft-19 support (avelad / Álvaro Velad Galván). imquic #32 (MoQT v19) stays OPEN and unchanged (+993/−198, last commit July 14). moqx only the #493 sync-bot. moq-rs, quiche (moqt, newest moqt commit July 8), moq-js, moxygen, Eyevinn/moqtransport + warp-player, birneee/quiche_moq, Moqtopus quiet.
  • Mailing list — three July-15 posts. Martin Duke’s “Next Hybrid Interim” sets the October interim at F5 Tower, 801 5th Avenue, SeattleOct 12–13 interop testing, Oct 14–15 issue/technical discussion — resolving the venue poll that closed July 5 (see interim-meetings). Magnus Westerlund’s “Instructions for uploading slides for IETF 126” (logistics; don’t select a past session). Jana Iyengar’s “Relevant panel at MOPS wg” — a MOPS-WG panel on real-world live/broadcast video-streaming pain points at IETF 126 Vienna, Tue July 21 09:00–10:30. No new weekly GitHub digest (last July 12).
  • Datatracker — no WG or individual revision bumps: transport-19, privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent. Change: the MoQ session agenda advanced agenda-126-moq-02-03 (dated July 14, after the July-13 “Final Agenda posted”). IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent (~9 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-15 00:28:22 UTC cut: 319/130/189/0 (~40.8% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-14 00:31 cut (319/130/189/0, at-target 171): byte-for-byte flat on every axis — matrix 319, pass 130, fail 189, skip 0, at-target 171 all unchanged. The draft-18 surface holds after July-14’s −2 dip; across the week (107 → 124 → 132 → 130 → 132 → 132 → 130 → 130 over July 8–15) it reads as converged with 1–2-cell flake, not trending. Still targets draft-18 (the runner has not advanced to draft-19). No July-16 cut at check time. See moqtail, moq-dev, interop-runner.

Activity (July 14 → July 15) — The six-straight-window “spec-quiet” streak breaks: the WG merges real spec text. Will Law lands a three-PR MSF init-data cluster in msf July 14 — #186 add Track + Object properties to carry initialization data (+50/−20, closes the reverted-initTrack #153), #187 clarify track cloning + delta-update rules (+28/−14, closes #183), #189 typo fixes — turning the dual Track+Object initData design the MSF page tracked as “settled toward” into actual draft text (closing 183), timed right before MSF’s Friday-Vienna slot. Separately Frindell reactivates the long-deferred switching / fill-fetch cluster in moq-transport: PR #1674 Track Switching via a SWITCH_FROM parameter and PR #1673 Replace Joining FETCH with fill fetch streams both updated July 14 (OPEN) — pre-Vienna warm-up on the Thursday “extended MOQT issue discussion” agenda. Meanwhile moq runs a moq-hls + publish-pipeline refactor day (8 merges): two ~1,000-LOC restructures (#2257 composable Broadcast + per-rendition encoders, breaking; #2258 moq-hls export::Broadcaster as an owned poll-driven state machine), a leak fix (#2254), client-mTLS FFI config (#2256), upload-bitrate stats (#2246), fperex’s Safari-HW-codecs (#2211), and the moq-lite-05 session Role in SETUP finally landing (#2201, +791/−648, OPEN since July 12); a moq-hls roadmap issue cluster opens (#2248–#2253). Interop dips −2 again (July-14 00:31, 319/130/189/0, at-target draft-18 171), a second small wobble mirroring July-11. Chair Magnus Westerlund posted a slide-deadline logistics note (July 14). No new draft revisions (all still 07-06); Slack silent ~8 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-wg/msf — the WG breaks its spec-quiet streak: the Track+Object init-data design lands

For six consecutive update windows the WG produced only comment-level issue/PR churn and no merges. July 14 ends that: Will Law merged a three-PR init-data cluster into msf, turning a design the MSF page had tracked only as “settled toward” into actual draft text:

  • #186 “Add new track and Object properties to carry initialization data” (+50/−20, MERGED) — adds the Track and Object properties that carry init data, retiring the experimental initTrack approach (closes #153 “initTrack does not work”). This is the dual Track + Object initData mechanism LOCMAF and the LOCMAF→CMSF packaging plan rely on: a stable Track property for steady-state init plus an Object property for synchronized mid-track changes (period switches, DRM key rotation).
  • #187 “Clarify track cloning and delta update rules” (+28/−14, MERGED, closes #183) — pins down how tracks clone and how delta updates apply on top of the init-data model.
  • #189 “Fix typos in initialization data documentation” (+4/−4, MERGED) — editorial cleanup of the new text.

The cluster closes #153, #178, #183 (originally raised by Vasiliev / gwendalsimon) and lands just before MSF’s Friday slot at Vienna. See moq-msf.

moq-transport — Frindell reactivates the deferred switching / fill-fetch cluster

No merges, but afrind touched the two long-deferred subscription-surface PRs on July 14, both OPEN:

  • PR #1674 “Track Switching via the SWITCH_FROM parameter” (+109/−0) — the track-switching mechanism deferred out of the -19 cut.
  • PR #1673 “Replace Joining FETCH with fill fetch streams” (+212/−180) — the fill-fetch redesign that would retire Joining FETCH.
  • Issue #1801 (Vasiliev, “reconsider OR in range filters”) also updated July 14, still OPEN.

A chair touching exactly the items the Thursday “extended MOQT issue discussion” agenda lists reads as pre-meeting warm-up, not new design.

moq-dev/moq — a moq-hls + publish-pipeline refactor day, and moq-lite-05 SETUP Role lands

moq’s July-14 day (all kixelated unless noted) is inward-facing — restructuring the publish and HLS-export pipelines rather than adding capability:

  • Publish + HLS refactors#2257 “refactor(publish)!: composable Broadcast + per-rendition encoders” (+776/−461, breaking, MERGED) and #2258 “moq-hls: rewrite export::Broadcaster as an owned poll-driven state machine” (+539/−335, MERGED) reshape the two pipelines; #2254 releases source subscriptions when a Broadcaster is dropped (+93/−16, closes #2255 — a subscription leak the refactor surfaced).
  • moq-lite-05 completes#2201 “advertise session Role in the moq-lite-05 SETUP” (+791/−648, MERGED) finally lands after being OPEN since July 12, closing out the -05 wire; the connection-migration PR #2241 “migrate subscriptions transparently across connections” grew to +2777/−579 but stays OPEN (the connection-resilience theme still in flight, alongside OPEN moqsink-reconnect #2240).
  • Deployment edges#2256 expose client mTLS certificate configuration through moq-ffi (+60/−7), #2246 measure upload bitrate from encoder Stats (+91/−13, was OPEN July 13), and community contributor fperex’s #2211 prefer the codecs Safari actually hardware-encodes (+18/−5) — the last of the Safari-encode work flagged in-flight a day earlier.
  • moq-hls roadmap issue cluster — kixelated filed #2248#2253 (moq-mux fMP4 timestamp rebase for late subscribers, moq-hls import/master-playlist, pause/shutdown) — the backlog for turning the HLS gateway into a real origin.
  • No new release train (latest is moq-relay v0.13.4, July 12; the chore: release PR #2200 remains OPEN). See moq-dev.

Other impls, list, datatracker, interop

  • Other implementationsimquic #32 “Add support for MoQT v19” (Lorenzo Miniero) grew to +993/−198 (OPEN, in review) — the draft-19 implementation front continues. locmaf #3 extends the locmaf CLI (align -canon-out, pack, dump, verify; +1520/−62, tobbee, MERGED) — validation tooling for the recently-updated locmaf-01 draft — plus #4 CI bump; moqlivemock #100 CI bump (tobbee, OPEN). moqx #493 moxygen sync-bot (trivial). moq-rs, quiche (moqt), moq-js, moqtail, moxygen, Eyevinn/moqtransport + warp-player, birneee/quiche_moq, Moqtopus quiet. No July-15 activity anywhere at check time.
  • Mailing list — chair Magnus Westerlund’s “Re: Final Agenda posted” (July 14) replies to Duke’s July-13 Final Agenda: 24 h before is the slide-submission deadline, but submit earlier (especially before Monday) so the schedule can be reordered if topics run fast — logistics, no spec content. No weekly GitHub digest in-window (last July 12).
  • Datatracker — no WG or individual revision bumps: transport-19, privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). Agenda stays agenda-126-moq-02 (final). IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent (~8 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-14 00:31:08 UTC cut: 319/130/189/0 (~40.8% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-13 00:34 cut (319/132/187/0, at-target 171): matrix flat 319, skip flat 0, at-target flat 171, pass −2 (132 → 130), fail +2 (187 → 189). A second small dip mirroring July-11’s −2 exactly — the draft-18 surface is now oscillating 130↔132 on a structurally identical matrix (107 → 124 → 132 → 130 → 132 → 132 → 130 across July 8–14), i.e. converged with 1–2-cell flake rather than trending. Still targets draft-18 (the runner has not advanced to draft-19). See moq-msf, moq-dev, interop-runner.

Activity (July 13 → July 14) — A sixth straight spec-quiet, implementation-heavy window; moq still owns it, this time as a ~18-merge July-13 consolidation-and-reach day rather than a single-capability jump. Three threads: (1) platform/capture reach#2238 moq-video PipeWire screen capture on Linux (+924/−24, the day’s largest), plus still-open Safari-HW-encode (#2211, fperex) and a new “route Firefox capture through a Worker” issue (#2224); (2) per-language binding ergonomics on the July-11/12 FFI surface — #2236 ergonomic Swift JSON wrappers + explicit snapshot mode (+365/−86, breaking), #2230 Go raw-frame timestamps, #2227 a compile+test Kotlin just kt check, and #2214 a Python moq-rs 0.3.2 release with JSON stream wrappers; (3) an AI-review-driven net-API hardening cluster — issues #2215#2224 filed and several resolved same-day, landing #2234 finish_at future exclusive end group (closing AI-review #2219), #2232 remove implicit frame-timestamp helpers, #2243 type request transports, #2235 align track-ordering defaults, and #2242 shorten watch signal groups (breaking). Also the July-12 audio-worklet AbortError issue #2202 is fixed same-week (#2231). Two notable large PRs open in-flight: #2241 migrate subscriptions transparently across connections (+1206/−238) and #2240 reconnect the moqsink publisher on transport death — an emerging connection-resilience theme. Two external contributors are now regular: fperex (Safari/publish) and bgreenway (moq-gst/moqsink reconnect, moq-mux). No new release tags (latest still moq-relay v0.13.4, July 12). The WG headline is process, not code: Martin Duke posted the Final Agenda for IETF 126 (July 13; agenda-126-moq-02), locking the Vienna schedule with “MOQT Update and Path to WGLC” (Frindell, Monday) as the marquee item — the first explicit signal MOQT is being steered toward Working Group Last Call. moq-transport itself saw only comment-level churn (SSTS #1638, filters #1810), both on the finalized agenda. Interop is byte-for-byte flat (July-13 00:34, 319/132/187/0, at-target draft-18 171 — every axis unchanged vs July-12). No new draft revisions (all still 07-06); Slack silent ~7 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-dev/moq — a ~18-merge consolidation day: PipeWire capture, per-language binding ergonomics, and an AI-review net-API sweep

moq’s July-13 day (all kixelated unless noted) is broad rather than deep — polish, platform reach, and net-API hardening on top of the July-10/12 capability jumps:

  • Platform / capture reach#2238 “feat(moq-video): PipeWire screen capture on Linux” (+924/−24, MERGED) is the day’s largest merge and a genuinely new capture source: MoQ can now ingest a Linux desktop/screen natively. It pairs with still-open Safari hardware-encode #2211 (fperex, prefer the codecs Safari actually HW-encodes) and a new issue #2224 (route Firefox video capture through a Worker for native MediaStreamTrackProcessor) — the through-line of the week (widen who and what can drive MoQ) now extends to capture sources and platforms.
  • Per-language binding ergonomics — layered on the July-11/12 C-FFI expansion: #2236 “feat(swift,ffi)!: ergonomic Swift JSON wrappers; make snapshot mode explicit” (+365/−86, breaking, MERGED), #2230 Go raw-frame timestamp writes, #2227 make just kt check compile+test instead of silently skipping, and #2214 cut a Python moq-rs 0.3.2 release with JSON stream wrappers. The July-11/12 window exposed the raw FFI surface; July 13 makes it ergonomic per language (Swift/Go/Kotlin/Python).
  • AI-review-driven net-API hardening — a burst of AI-review findings filed as issues #2215#2224 and several resolved the same day, landing #2234 let finish_at declare a future exclusive end group (+207/−133, closes AI-review issue #2219), #2232 remove implicit frame-timestamp helpers (+236/−153), #2243 type request transports (+83/−45), #2235 align track-ordering defaults, and #2242 shorten watch signal input/output groups (+369/−371, breaking). Three AI-review items stay OPEN (#2217 moq-ffi announcement lifecycle, #2216 js/net typed announcement status, #2215 js/net Track.Info ordered default).
  • Fixes / smoke tests#2231 cancel pending audio-worklet loads (fixes the July-12 AbortError issue #2202, a tidy same-week gap-to-fix), #2229 avoid redundant URL reconnects, #2228 scope the video-config effect, #2226 pace the capture polyfill via requestVideoFrameCallback, #2225 mark the macOS Surface Sync so moq-transcode compiles, and #2239 a smoke test exercising browser playback + audio.
  • In-flight (OPEN)#2241 “net: migrate subscriptions transparently across connections” (+1206/−238) and #2240 reconnect the moq-gst moqsink publisher instead of dying on transport death (+344/−120, superseding bgreenway’s #2223 and closing issue #2212) — together an emerging connection-resilience theme (survive/transparently recover from transport loss). Also still OPEN: #2201 advertise session Role in the moq-lite-05 SETUP (updated July 14), #2246 measure upload bitrate from encoder Stats, #2210 expose finish_group() through the moq-mux import chain (bgreenway).
  • No new release train in-window (latest is moq-relay v0.13.4, July 12); the only release is the Python moq-rs 0.3.2 above. See moq-dev.

WG, other impls, list, datatracker, interop

  • IETF 126 agenda finalized — the WG headline is process: Martin Duke posted “Final Agenda posted” to the list July 13, and the datatracker agenda is now agenda-126-moq-02 (up from -00, July 7). The Vienna schedule (Mon July 20 14:00–16:00, Thu July 23 16:30–18:30, Fri July 24 16:00–17:30 CEST) is locked: MondayFrindell’s “MOQT Update and Path to WGLC”, LOC, secure objects, an AUTH design-team slot, Privacy Pass; Thursday — SSTS, location track filters, extended MOQT issue discussion; Friday — MSF/CMSF, moq-tempo, Mocha, top-N track filters (+ time-permitting “MOQ Performance and Feedback Requirements for Live Media and Agent Interaction”). “Path to WGLC” is the first explicit signal MOQT is being steered toward Working Group Last Call.
  • moq-transport / moq-wgno new items and no merges in-window; only comment-level churn on two agenda-bound items: Will Law’s SSTS PR #1638 (updated July 13) and Lorenzo Miniero’s filters Issue #1810 (updated July 13). The July-10 filters/FORWARD cluster (#1811/#1812, 1801) otherwise sits untouched. msf / loc / secure-objects / cmsf / catalog-format / privacy-pass quiet.
  • Other implementations — only minor motion: moqtail #217 dependabot cargo bump (July 13, OPEN); #216 (Suhas top-N) / #214 / #213 comment activity. Eyevinn #99 (remove retired Go Report Card badge, tobbee, MERGED, trivial) and locmaf #2 (mp4ff → v0.53.0 dep bump, tobbee, MERGED). imquic #32 (MoQT v19) comment activity July 13. moq-rs, quiche (moqt), moq-js, moxygen, moqx, Eyevinn/moqtransport + warp-player, birneee/quiche_moq, Moqtopus quiet.
  • Datatracker: no WG or individual revision bumps — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). The only datatracker change is the finalized agenda-126-moq-02.
  • Slack: silent (~7 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-13 00:34:24 UTC cut: 319/132/187/0 (~41.4% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-12 00:34 cut (319/132/187/0, at-target 171): byte-for-byte flat on every axis — matrix 319, pass 132, fail 187, skip 0, at-target 171 all unchanged. The July-12 recovery holds and the draft-18 surface reads as settled at 132/319 (107 → 124 → 132 → 130 → 132 → 132 across July 8–13). Still targets draft-18 (the runner has not advanced to draft-19). See moq-dev, interop-runner.

Activity (July 12 → July 13) — A fifth straight spec-quiet, implementation-heavy window, and moq still owns it: the prior update caught only the just-after-midnight July-12 merges, but a ~15-PR afternoon/evening burst landed afterward and cut a fresh release train (moq-relay v0.13.4, moq-ffi v0.2.29, moq-cli v0.8.3, libmoq v0.3.12, moq-gst v0.2.11). The burst consolidates four threads. (1) Safari support: the single umbrella PR #2163 was closed and split into focused, mergeable changes (fperex) — #2198 WebTransport datagram-API variants, #2192 expose negotiated transport on Established, #2197 surface unsupported-codec errors, #2185 don’t latch the connection off after a Safari pagehide, #2181 align media constraints — all MERGED; Safari hardware-encode #2190 (+998/−211) and 48 kHz-Opus resampling #2191 stay OPEN. (2) Generic data: #2196 “moq-json: split into snapshot/stream modules and expose JSON tracks through moq-ffi/libmoq” (+2421/−1061). (3) Transcode: #2158 a moq transcode verb + decode-once-per-source + GPU resize fanout (+1470/−239). (4) Operability / moq-lite: #2172 moq-relay Prometheus /metrics (+537/−1, now MERGED), #2170 moq-net/js pre-merge API hardening for moq-lite-05 (+910/−615), #2132 forward the connection transport to --auth-api (+143/−27), #2199 recover the viewer from a same-name republish. Still OPEN: #2201 advertise session Role in the moq-lite-05 SETUP and #2179 cost-based cache-aware routing (moq-lite-06 WIP). Everything else is idle: all moq-wg repos quiet, moqtail #216 (Suhas top-N opt) still OPEN, moq-rs / quiche / moq-js / imquic / moxygen / moqx / Eyevinn all quiet. The IETF mailing list’s weekly GitHub digest resumed (July 12, covering July 5–12) — a retrospective of items the wiki already logged (the moq-transport FORWARD/filters cluster, the LOC issue-closing sweep), nothing new. The interop runner cuts once (July-12 00:34, 319/132/187/0, at-target draft-18 171) — pass +2 to 132, recovering the July-11 −2 dip back to the July-10 high on a flat matrix. No new draft revisions (all still 07-06); Slack silent ~6 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-dev/moq — the July-12 evening merge burst: Safari, moq-json, a transcode verb, and v0.13.4

The prior update’s check ran early July 12 and captured the just-after-midnight merges (FFI track-info #2177, NVDEC AV1 #2178, announce-ids #2160, raw-frame timestamps #2174, track datagrams #2175). A larger burst — ~15 PRs — then merged through the July-12 afternoon and evening (≈14:00–19:20 UTC), consolidating several threads and cutting a release train. All kixelated unless noted:

  • Safari support (fperex) — the biggest theme. The earlier single umbrella PR #2163 was closed and reworked into focused, reviewable changes, several MERGED July 12: #2198 WebTransport datagram-API variants (+208/−17), #2192 expose the negotiated transport on Established (+41/−2), #2197 surface unsupported-codec errors (+194/−9), #2185 don’t latch the connection off after a Safari pagehide (+32/−1), #2181 align media constraints (+159/−21). Still OPEN: #2190 Safari hardware encode + worker capture + stable video catalog (+998/−211) and #2191 advertise 48 kHz Opus + resample non-canonical capture rate (+487/−57). (A batch of interim fperex Safari/watch/publish PRs — 2189 — were opened and closed unmerged as the work was split/reworked.)
  • #2196 “moq-json: split into snapshot/stream modules and expose JSON tracks through moq-ffi/libmoq” (+2421/−1061, MERGED) — the largest single merge; generic (non-media) JSON tracks are now first-class and callable across the C ABI, reinforcing moq-dev’s “generic for any live data” framing.
  • #2158 “feat(moq-transcode): decode once per source, GPU resize fanout, and a moq transcode verb” (+1470/−239, MERGED) — extends the July-10 GPU-transcode crate with a CLI verb and single-decode → multi-resize fanout. (The two-writer-race fix #2157 was closed unmerged.)
  • Operability + moq-lite: #2172 moq-relay Prometheus /metrics for node traffic (+537/−1) MERGED — the operability item flagged OPEN a day earlier now lands; #2170 moq-net + js/net pre-merge API hardening for moq-lite-05 (+910/−615); #2132 forward the connection transport to the --auth-api hook (+143/−27); #2199 recover the viewer from a same-name republish (+213/−93). Still OPEN: #2201 advertise session Role in the moq-lite-05 SETUP (+342/−28) and #2179 cost-based cache-aware routing (moq-lite-06 WIP) + route-cost I-D (+1482/−198).
  • Docs / housekeeping: #2203 root-cause + maintainability rules, PR mechanics split into a CONTRIBUTING.md (+86/−41); #2204 / #2134 version bumps + moq-bot release; dependabot #2194. New issue #2202 (audio worklet AbortError when the AudioContext closes mid-addModule(), fperex) OPEN.
  • Release train (July 12): moq-relay v0.13.4, moq-ffi v0.2.29, moq-cli v0.8.3, libmoq v0.3.12, moq-gst v0.2.11 — the first new release since v0.13.3 (July 9). See moq-dev.

WG, other impls, list, datatracker, interop

  • moq-transport / moq-wgall repos quiet in-window: no new items July 12–13. The July-10 filters/FORWARD cluster (Lorenzo Miniero’s Issue #1810, sharmafb’s #1811/#1812, Mo Zanaty’s #1809, Vasiliev’s #1801) still sits untouched. msf / loc / secure-objects / cmsf / catalog-format / privacy-pass quiet.
  • Other implementations — the only non-moq-dev motion remains moqtail #216 “Few Feat/top n optimizations” (Suhas Nandakumar, +116/−26, OPEN since July 11). moq-rs quiet after its July-8/9 burst; imquic #32 (MoQT v19) untouched since July 10; quiche (moqt), moq-js, moxygen, moqx, Eyevinn (all), birneee/quiche_moq, Moqtopus quiet.
  • Mailing list: the weekly GitHub digest resumed — posted July 12 (Repository Activity Summary Bot), covering July 5–12: moq-transport (+7/−13, seven new issues incl. FORWARD-in-requests + parameter semantics, 13 issues closed, 6 PRs), loc (six issues closed resolving property-type collisions + duplicate identifiers, one timestamp PR), warp-streaming-format (catalog-design comments). It is a retrospective of items the wiki already logged, not new signal — its significance is that the ~weekly cadence resumed after being overdue (last was July 5). Newest human post is still Martin Duke’s July-7 “Agenda is posted” (IETF-126 agenda-126-moq-00, comments were due July 12).
  • Datatracker: no WG or individual revision bumps in-window — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, and draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent (~6 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-12 00:34:35 UTC cut: 319/132/187/0 (~41.4% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-11 00:32 cut (319/130/189/0, at-target 171): matrix flat at 319, skip flat at 0, at-target flat at 171, pass +2 (130 → 132), fail −2 (189 → 187). This recovers the July-11 −2 dip back to the July-10 high of 132, confirming that dip as day-to-day flake noise on a structurally identical matrix rather than a reversal of the hardening trend (107 → 124 → 132 → 130 → 132 across July 8–12). Still targets draft-18 (the runner has not advanced to draft-19). See moq-dev, interop-runner.

Activity (July 11 → July 12) — A fourth straight spec-quiet, implementation-heavy window, and moq again owns it — shifting from the July-10 GPU-transcode day to a C-FFI/bindings + moq-lite-06 day. Nine PRs merge July 11–12, led by FFI/libmoq surface expansion: #2142 “expose group fetch API” (+911/−7, Qizot/Jakub Perżyło), #2173 origin options + dynamic FFI (+657/−29), #2171 libmoq raw-track C ABI (+448/−40), #2177 moq-ffi track info (+220/−9), and #2168 Go wrapper catch-up (+460/−9) — the plumbing that lets the Go/Swift/Kotlin bindings drive the gateway/transcode features moq-dev built through early July. Alongside: #2161 moq-native quic::Client/quic::Server transport config (+512/−131), #2146 carry moq-video decode timestamps as moq_net::Timestamp, and #2178 “NVDEC AV1 decode support” (+175/−71) extending the July-10 GPU pipeline. In flight, moq-lite-06 becomes a visible design cycle: #2179 “cost-based cache-aware routing (moq-lite-06 WIP) + route-cost I-D” (+1232/−95, OPEN) pairs a routing feature with a vendored Internet-Draft, #2160 adds announce ids, and #2172 exposes a moq-relay Prometheus /metrics endpoint (+501/−1, OPEN) — an operability theme (routing cost + node metrics) that reads as prep for multi-node CDN deployment. fperex’s big Safari-support #2163 (+3057/−434) stays OPEN. Everything else is idle: all moq-wg repos quiet (the July-10 filters/FORWARD cluster 1812 sits untouched); the only other impl motion is moqtail #216 “Few Feat/top n optimizations” (Suhas Nandakumar, OPEN). The interop runner cuts once (July-11 00:32, 319/130/189/0, at-target draft-18 171) — pass −2 to 130, the first pass regression after three straight gains (107 → 124 → 132 → 130), a small likely-flaky dip on a flat matrix. No new draft revisions; mailing list quiet (weekly GitHub digest now overdue, last July 5); Slack silent ~5 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-dev/moq — an FFI/bindings day, and moq-lite-06 becomes a design cycle

moq’s day (all kixelated unless noted, nine merges July 11–12) turns from the July-10 media-plane work to the C-FFI / libmoq embedding surface — the boundary that lets non-Rust consumers drive the gateway and transcode features:

  • #2142 “feat(moq-ffi): expose group fetch API” (+911/−7, Qizot/Jakub Perżyło, MERGED July 11) — the largest FFI merge; group FETCH is now callable across the C ABI.
  • #2173 “Add origin options and dynamic FFI” (+657/−29) and #2171 “Update libmoq raw track C ABI” (+448/−40) MERGED July 12 — origin configuration + a reworked raw-track C ABI.
  • #2177 “Add moq-ffi track info and update” (+220/−9, MERGED July 12) and #2168 “go: catch up wrapper API” (+460/−9, MERGED July 11) — track-info accessors + the Go wrapper caught up to the expanded surface.
  • #2161 “feat(moq-native): add quic::Client/quic::Server transport config” (+512/−131, MERGED July 11) and #2146 “refactor: carry moq-video decode timestamps as moq_net::Timestamp” (+92/−56, MERGED July 11) — transport-config knobs + a decode-timestamp plumbing refactor.
  • #2178 “moq-video: add NVDEC AV1 decode support” (+175/−71, MERGED July 12) — a tidy tail on the July-10 GPU pipeline, adding AV1 to the NVDEC hardware-decode path.

Several more FFI refactors stay OPEN (#2174 raw frame timestamps, #2175 track datagrams through moq-ffi, #2176 fold subscribe_media latency into a MoqMediaConfig record, plus issues 2164). The moq-lite-06 line is now a visible design cycle, not just a version bump: #2179 “cost-based cache-aware routing (moq-lite-06 WIP) + route-cost I-D” (+1232/−95, OPEN) pairs a routing feature with a vendored route-cost Internet-Draft (continuous with July-10’s #2159 draft-vendoring), #2160 adds typed START/END/RESTART announce ids, and #2172 “expose a Prometheus /metrics endpoint for node traffic” (+501/−1, OPEN) adds relay operability — together a routing-cost + node-metrics theme that reads as moq-dev preparing moq-lite relays for real multi-node CDN deployment. fperex’s Safari playback/publish PR #2163 (+3057/−434) stays OPEN. No new release train in-window (moq-relay v0.13.3 etc. were July 9). See moq-dev.

WG, other impls, list, datatracker, interop

  • moq-transport / moq-wgall repos quiet in-window: no new items July 11–12. The July-10 filters/FORWARD cluster — Lorenzo Miniero’s Issue #1810 (filters section hard to process), sharmafb’s Issue #1811/PR #1812 (FORWARD on REQUEST_UPDATE), plus Mo Zanaty’s #1809 Location-filter redesign and Vasiliev’s #1801 — all sit untouched (last activity July 10). msf / loc / secure-objects / cmsf / catalog-format / privacy-pass / relay-dos quiet.
  • Other implementations — the only non-moq-dev motion is moqtail #216 “Few Feat/top n optimizations” (Suhas Nandakumar, +116/−26, OPEN, July 11). moq-rs quiet after its July-8/9 burst; imquic #32 (MoQT v19) untouched since July 10; quiche, moq-js, moxygen, moqx, Eyevinn (all), birneee/quiche_moq, Moqtopus quiet.
  • Mailing list: nothing new July 11–12 — newest is still Martin Duke’s July-7 “Agenda is posted” (IETF-126 agenda-126-moq-00, comments due July 12). The weekly GitHub digest is now overdue (last July 5; the ~weekly cadence would put the next around July 12, not yet posted).
  • Datatracker: no WG or individual revision bumps in-window — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03 (all 07-06), c4m-01, cmsf-01, msf-01, the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, locmaf-01, and draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent (~5 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-11 00:32:18 UTC cut: 319/130/189/0 (~40.8% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-10 00:38 cut (319/132/187/0, at-target 171): matrix flat at 319, skip flat at 0, at-target flat at 171, pass −2 (132 → 130), fail +2 (187 → 189). This is the first pass regression after three straight gains (107 → 124 → 132 → 130 across July 8/9/10/11) — a small, likely-flaky dip (2 cells, within the flake band the page saw with the July-5 −3 wobble that recovered next cut) on a structurally identical matrix, not a reversal of the hardening trend. Still targets draft-18 (the runner has not advanced to draft-19). No July-12 cut at check time. See moq-dev, interop-runner.

Activity (July 10 → July 11) — A third straight spec-quiet, implementation-heavy window, and the headline is moq: a ~7,000-LOC kixelated day dominated by GPU transcoding. Six PRs merge July 10, led by a new moq-transcode crate (#2140 “just-in-time transcoding for hang broadcasts (NVENC-capable)”, +1567/−20) and #2145 “NVDEC hardware decode, zero-copy NVDEC → NVENC transcode” (+1392/−166) — a full GPU decode→transcode→encode path. Alongside: IETF drafts vendored into the monorepo (#2159, nix + just, +3514/−3), group-memory path sharing + a 32-max-parts cap (#2156), a macOS decode-Send fix (#2162), and — notably — #2139 “Add RTC H.265 and AV1 ingest bridges” (+83/−4), which closes the July-9 gap issue #2133 (moq-rtc WHIP ingest lacked the H.265/AV1 bridges WHEP egress already had) same-window. Early moq-lite-06-wip work opens (#2160/#2161, announce ids). On the WG side moq-transport gets a small filters/FORWARD cluster — Lorenzo Miniero’s Issue #1810 “New section on filters hard to process” (the -19 filters text is hard to implement, continuous with the #1809/#1801 Range/Location-filter churn) + sharmafb’s Issue #1811/PR #1812 on whether FORWARD may ride a REQUEST_UPDATE for SUBSCRIBE_TRACKS — all OPEN, no merges. The interop runner cuts once (July-10 00:38, 319/132/187/0, at-target draft-18 171) — pass +8 to a new high 132, a third straight day of pass gains (107 → 124 → 132) on a flat matrix. No new draft revisions; mailing list quiet (weekly GitHub digest due ~July 12); Slack silent ~4 days; no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-dev/moq — a GPU-transcode day, and the WHIP-ingest gap closes

moq’s day (all kixelated, ~7,000 LOC across six merges July 10) centres on GPU transcoding — building a native, ffmpeg-free path from hardware decode through hardware encode:

  • #2140 “feat: moq-transcode, just-in-time transcoding for hang broadcasts (NVENC-capable)” (+1567/−20, MERGED July 10) — a new moq-transcode crate that transcodes Hang broadcasts on demand, using NVENC where available. JIT transcode lets a single ingested broadcast be served in multiple codecs/renditions without a separate encode pass per viewer.
  • #2145 “feat(moq-video): NVDEC hardware decode, zero-copy NVDEC → NVENC transcode” (+1392/−166, MERGED July 10) — adds NVDEC hardware decode and a zero-copy NVDEC → NVENC path so frames never leave GPU memory between decode and re-encode. Together with #2140 this is a complete GPU decode→transcode→encode pipeline.
  • #2139 “Add RTC H.265 and AV1 ingest bridges” (+83/−4, MERGED July 10) — the WebRTC gateway’s WHIP ingest now bridges H.265 and AV1, which WHEP egress already carried. This closes the July-9 issue #2133 (the ingest/egress codec asymmetry the wiki logged a day earlier) — CLOSED July 10.
  • #2159 “drafts: move IETF drafts into the monorepo with nix + just” (+3514/−3, MERGED July 10) — the IETF draft sources (moq-lite, Hang, etc.) are now vendored into the monorepo and built with nix + just, consolidating spec text alongside the code that implements it.
  • #2156 “Path memory sharing + 32 max parts enforcement” (+366/−94) — extends the July-8/9 group-memory-pool work with per-path memory sharing and a hard 32-max-parts cap; and #2162 “fix(moq-video): make decode Frame/Consumer Send on macOS” (+23/−9) unblocks the video decode path on macOS.

OPEN in flight: early moq-lite-06-wip work — #2160 / #2161 (announce ids) — the first signal the next moq-lite wire revision (-06) is being drafted after -05 finalized in early July; fperex’s Safari hardware-capture batch #2163 (July 11); Qizot’s moq-ffi group-fetch API #2142; plus a stack of kixelated planning issues (#2147–#2155) and a moq-ffi timestampUs=0 regression bug #2143 (Crypt0XRP0). No new release train in-window (moq-relay v0.13.3 etc. were July 9). See moq-dev.

WG, other impls, list, datatracker, interop

  • moq-transport — three new OPEN items July 10, all on the -19 subscription surface: Issue #1810 (Lorenzo Miniero, “New section on filters hard to process”) flags that the new filters section shipped in -19 is hard to implement/parse — topically continuous with Mo Zanaty’s still-OPEN #1809 (Location-filter redesign) and Vasiliev’s #1801 (“reconsider OR”), so the Range/Location-filter cluster is now drawing implementer feedback. Separately, Issue #1811 (sharmafb, “Can FORWARD be present on a REQUEST_UPDATE for SUBSCRIBE_TRACKS?“) + its fix PR #1812 (“Allow FORWARD on a REQUEST_UPDATE for SUBSCRIBE_TRACKS”) open a new question on whether the FORWARD flag can be updated mid-subscription. No merges. Other moq-wg repos (msf, loc, secure-objects, cmsf, catalog-format, privacy-pass) quiet; cmsf #27 (LOCMAF-by-reference) unchanged.
  • Other implementationsimquic #32 “Add support for MoQT v19” (Lorenzo Miniero) stays OPEN, touched July 10 (now +230/−154) — Miniero’s draft-19 work is the likely source of the #1810 filters feedback. moqx — only the moxygen sync-bot (#492, +1/−1) merged + a rolling snapshot rebuild. Eyevinn moqlivemock saw a dependabot bump (#98, golang.org/x/crypto). moq-rs quiet after its July-8/9 burst; quiche, moq-js, moqtail, moxygen, Eyevinn (warp-player/moqtransport/locmaf), birneee/quiche_moq, Moqtopus quiet.
  • Mailing list: nothing new July 10–11 — newest is still Martin Duke’s July-7 “Agenda is posted” (IETF-126 agenda-126-moq-00, comments due July 12). No weekly GitHub digest in-window (last July 5; next expected ~July 12).
  • Datatracker: no WG or individual revision bumps in-window — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03 (all 07-06), the Cisco tempo-00 + mocha-* suite, the three Will Law event-timeline drafts, and draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent (~4 days) — newest is still the July-7 qmux thread. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-10 00:38:27 UTC cut: 319/132/187/0 (~41.4% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-9 00:37 cut (319/124/195/0, at-target 171): matrix flat at 319, skip flat at 0, at-target flat at 171, pass +8 (124 → 132, a new post-expansion high), fail −8 (195 → 187). This is the third straight pass-gain cut (107 → 124 → 132 across July 8/9/10) on a structurally identical matrix — the cross-version cells added in the July-7 expansion keep converting green. Still targets draft-18 (the runner has not advanced to draft-19). No July-11 cut at check time. See moq-dev, interop-runner.

Activity (July 9 → July 10) — A second straight spec-quiet, implementation-heavy window — and the headline is again moq-rs: one day after its July-8 draft-16/draft-18 merge burst, the repo lands the last big piece of that track — itzmanish’s #181 “Publish message support” (+4049/−624) MERGES July 9 16:06 UTC, adding native PUBLISH-message handling on the draft-16 rewrite baseline and triggering a full release round (moq-relay-ietf v0.7.22, moq-pub bumped to a new minor v0.9.0, plus moq-sub/moq-clock/moq-test-client). moq has a normal kixelated day — #2135 “reject unsupported RTMP FourCC plays” (+538/−27), a moq-bench flake package (#2137), a JS version bump (#2136), and a site-wide notice about evolving APIs + AI-generated content (#2130) — plus a fresh release train (moq-relay v0.13.3) and a new gap issue #2133 (moq-rtc WHIP ingest lacks H.265 + AV1 bridges that WHEP egress already carries). On the WG side the only new item is Mo Zanaty’s moq-transport #1809 “Location filter changed to match the design of other filters” (+33/−45, OPEN) — a post-19 refinement of the Range/Location filter that dovetails with Vasiliev’s still-open #1801 (“reconsider OR”) — while Issue #1808 (PUBLISH_BLOCKED credit semantics) is CLOSED July 9 as a duplicate of #1637 (afrind + ianswett agree). This pass also surfaced a previously-unlogged July-6 datatracker item: the three MSF event-timeline spinout drafts (SCTE-35, WebVTT, IMSC1) that the wiki had predicted since May finally exist. The interop runner cuts once (July-9 00:37, 319/124/195/0, at-target draft-18 171) — pass +17 to a new high 124, a second straight coverage-to-conversion cut on a flat matrix. No new MoQ Monthly (#2, May 31); Slack silent; no list traffic; no new draft revisions; no open wiki issues.

cloudflare/moq-rs — PUBLISH message support completes the version track

One day after the July-8 merge burst cleared moq-rs’s stalled draft-16 rewrite (#170) and draft-18 request-stream rework (#178), the last large piece of that track lands:

  • #181 “Publish message support” (itzmanish, +4049/−624) MERGED July 9 16:06 UTC — native PUBLISH-message handling on the draft-16 rewrite baseline. This is the PR that had swelled to +8778 on July 7 as an OPEN attachment to the rewrite; rebased down and merged now that #170 is in.
  • Release plumbing followed immediately: #186 “chore: release” (+90/−16) MERGED 16:18 UTC, cutting moq-relay-ietf v0.7.22, moq-pub v0.9.0 (a new minor, consistent with the PUBLISH feature), moq-sub v0.4.11, moq-clock-ietf v0.6.17, and moq-test-client v0.1.9.

With #170, #178, and now #181 all merged, cloudflare/moq-rs has consolidated its entire draft-16/draft-18 forward track in a two-day window (July 8–9) after weeks of it sitting on long-lived OPEN PRs. See moq-rs, moq-transport.

moq-dev/moq — a normal kixelated day

moq’s day (all kixelated) is routine after the July-8 memory/dedup reshape:

  • #2135 “reject unsupported RTMP FourCC plays” (+538/−27, MERGED July 9 16:35 UTC) — the RTMP ingest gateway now rejects FourCCs it can’t bridge rather than failing opaquely.
  • #2130 “docs: add site-wide notice about evolving APIs and AI-generated content” (+49/−1, MERGED 01:37 UTC) — a doc.moq.dev banner flagging that the APIs are unstable and much of the churn is AI-assisted (the “codex” batches).
  • #2137 “Expose moq-bench as a flake package” (+10/−0) and #2136 “bump package versions” (+17/−17) MERGED; a fresh release train cut moq-relay v0.13.3, moq-ffi v0.2.28, moq-cli v0.8.2, libmoq v0.3.11.
  • OPEN: #2132 “auth: forward the connection transport to the —auth-api” and release PR #2134.
  • New OPEN issue #2133 “moq-rtc: WHIP ingest lacks H.265 + AV1 bridges (WHEP egress already carries them)” — a concrete asymmetry in the WebRTC gateway: egress already handles H.265/AV1 but ingest does not. See moq-dev.

WG, event-timeline drafts, other impls, list, datatracker, interop

  • moq-transport — the only new WG activity is PR #1809 (Mo Zanaty, July 9 03:42 UTC, “Location filter changed to match the design of other filters”, +33/−45, OPEN) — a post-19 refinement realigning the Location filter with the other subscription filters, topically continuous with Vasiliev’s open #1801 (“reconsider OR functionality in range filters”) and the Range Filters (#1765) work that made the -19 cut. Separately, Issue #1808 (sharmafb, PUBLISH_BLOCKED credit semantics) was CLOSED July 9 18:55 UTC as a duplicate of #1637afrind (00:42) and ianswett (18:27) both agreed it’s part of #1637, the disposition afrind had suggested a day earlier. Other moq-wg repos (msf, loc, secure-objects, cmsf, catalog-format, privacy-pass) quiet; cmsf #27 (LOCMAF-by-reference) unchanged since its July-8 wilaw review.
  • The MSF event-timeline spinout drafts are real. This pass surfaced three individual I-Ds on the datatracker, all -00 submitted 2026-07-06 by Will Law (Akamai) + Suhas Nandakumar (Cisco), that had not previously been logged: draft-wilaw-moq-scte35-event-timeline-00 (“SCTE35 transmission over MSF Event Timeline”, 9 pp), draft-wilaw-moq-webvtt-msf-00 (“WebVTT Packaging for MOQT Streaming Format”, 8 pp), and draft-law-moq-imsc1-msf-00 (“IMSC1 Packaging for MOQT Streaming Format”, 8 pp). These are the concrete realization of the event-timeline spin-out the wiki has tracked since the May-8 PR #133 discussion (wilaw: “wouldn’t it be better to specify all event timeline formats outside of the MSF spec?”). They landed quietly in the July-6 wave alongside transport-19 and the Cisco MOCHA/TEMPO suite and were missed in the July 6–9 passes. See moq-msf.
  • Other implementationsmoqx gmarzot’s jemalloc/TLS relay-image PR #480 was touched July 10 00:56 UTC (still OPEN, no merge); the admin /logs endpoint #491 saw a July-9 touch (still OPEN). quiche, moq-js, moqtail, imquic, moxygen, Eyevinn (all), birneee/quiche_moq, Moqtopus quiet.
  • Mailing list: nothing new July 9–10 — newest is still Martin Duke’s July-7 “Agenda is posted” (IETF-126 agenda-126-moq-00, comments due July 12). No weekly GitHub digest in-window (last July 5; next expected ~July 12).
  • Datatracker: no WG or individual revision bumps in-window — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03 (all 07-06), the Cisco tempo-00 + mocha-* suite, and draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent (404). The three Will Law event-timeline drafts (above) are July-6 items surfaced this pass, not new in-window. IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent — newest is still the July-7 qmux thread (afrind’s July-8 01:08 CEST reply, already logged). MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-9 00:37:17 UTC cut: 319/124/195/0 (~38.9% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-8 00:33 cut (319/107/212/0, at-target 171): matrix flat at 319, skip flat at 0, at-target flat at 171, pass +17 (107 → 124, a new post-expansion high), fail −17 (212 → 195). This is the second straight coverage-to-conversion cut: after July-8’s +14, another +17 lands on a structurally identical matrix as the cross-version cells added in the July-7 expansion keep hardening green. Still targets draft-18 (the runner has not advanced to draft-19). No July-10 cut at check time. See moq-rs, interop-runner.

Activity (July 8 → July 9) — A spec-quiet, implementation-heavy window. The headline is moq-rs: after weeks with its version work stalled on OPEN PRs, a tight July-8 04:16–04:19 UTC merge burst lands both forward tracks at once — itzmanish’s long-OPEN “[Rewrite] Draft-16 migration” (#170, +5456/−3475, OPEN since May 29) and englishm’s draft-18 request-stream rework (#178 “Remove MAX_REQUEST_ID, use bidi streams for requests”, +1012/−597) — followed by a v0.7.21 moq-relay-ietf release (#182/#185), Manish’s “expose relay session config” (#184), and the curious add-then-delete of the AuthHook-trait design doc (#169 merged, then #183 deletes it −724 hours later). moq has a memory/dedup day: the two large OPEN reshapes from the July-8 baseline both MERGE — a global LRU group-memory cache pool (#2110, +1378/−76) and a per-track timeline index (#2109, +1468/−53) — alongside a broadcast-dedup cluster, catalog bitrate auto-detection (#2124), JS lite FETCH (#2032), TypeScript stable 7.0.2, and a fresh unbounded-cache issue (#2125). WG side quiet: the only new item is sharmafb’s moq-transport Issue #1808 “Semantics for PUBLISH_BLOCKED when additional stream credit is received” (afrind suggests folding it into #1637); no draft revisions. imquic’s #32 “Add support for MoQT v19” is the first implementation PR explicitly targeting draft-19. The interop runner cuts once (July-8 00:33, 319/107/212/0, at-target draft-18 171) — pass +14 to a new high 107 with matrix/skip/at-target flat, the coverage-to-conversion move the page had flagged. No new MoQ Monthly (#2, May 31); Slack silent; no list traffic; no open wiki issues.

cloudflare/moq-rs — a merge burst consolidates the stalled version work

moq-rs had spent weeks carrying its version work on long-lived OPEN PRs: a main still on draft-14, itzmanish’s draft-16 rewrite (#170, OPEN since May 29), englishm’s draft-18 work on the draft-18-dev branch, and the AuthHook/C4M auth PRs. On July 8 the maintainers cleared much of that backlog in one sitting:

  • #170 “[Rewrite] Draft-16 migration” (itzmanish, +5456/−3475) MERGED 04:17 UTC — the community-led rewrite that had been OPEN since May 29 (itself the successor to the 155-day-old #131) finally lands.
  • #178 “draft-18: Remove MAX_REQUEST_ID, use bidi streams for requests” (englishm-cloudflare, +1012/−597) MERGED 04:16 UTC — the request-ID-removal / requests-on-bidi-streams direction (the WG’s draft-18 convergence, cf. transport Issue #1653), now in.
  • #169 “docs: add AuthHook trait design proposal” (englishm, +724/−0) MERGED 04:19 UTC — the AuthHook design doc OPEN since May 28 — then #183 “Delete docs/AUTH_HOOK_DESIGN.md” (englishm, −724) MERGED 13:08 UTC removes it again the same day (the design presumably superseded now that the concrete AuthHook/C4M impl #171 carries the work).
  • #184 “feat(moq-relay-ietf): expose relay session config” (itzmanish, +148/−39) MERGED 13:40 UTC, plus release-bot cuts #182 and #185 (moq-relay-ietf v0.7.21), and a small README note (#164, Renan Dincer).

Still OPEN after the burst: the huge PUBLISH-support PR #181 (+4049/−624, rebased down from its +8778 July-7 size), the rolling draft-18 vehicle #176, the AuthHook/C4M implementation #171, the filter framework #167, and thexeos’s relay interest-loss PR #180. The repo now has both its draft-16 rewrite and its draft-18 request-stream work merged rather than pending — the first real forward motion on moq-rs’s main/dev tracks the wiki has logged since the June draft-18 landing. See moq-rs, moq-transport.

moq-dev/moq — a memory/dedup day; the July-8 reshapes land

moq’s day (all kixelated) centres on the memory-pooling reshape the July-8 log flagged as two large OPEN PRs — both now MERGED:

  • #2110 “feat(moq-net): global LRU cache pool for group memory” (+1378/−76, MERGED 21:42) and #2109 “Per-track timeline index for each media track” (+1468/−53, MERGED 22:15) — the coordinated group-memory pool + per-track timeline index reshape completes.
  • Broadcast-dedup cluster: #2122 “close request_broadcast dedup gap” (+99/−3) and #2123 “dedupe conn.consume() per path so repeat subscribes share one broadcast” (+355/−25, closing issue #2121) — repeat subscribes to the same path now share a single upstream broadcast.
  • Catalog auto-detection: #2124 “auto-detect catalog bitrate” (+500/−65) MERGES while #2100 “auto-detect catalog metrics” is CLOSED unmerged (superseded) — the catalog-metadata line continues, and OPEN #2102 now reads “seed catalog with init hints” (+951/−243).
  • JS / wire: #2032 “[codex] implement JS lite FETCH” (+359/−57, OPEN since July 3) lands; #1371 “relative broadcast paths for cross-broadcast catalog renditions” (+1241/−241, incl. WHEP egress); #2129 TypeScript → stable 7.0.2 (off the June-28 RC); #2119 announce="source" waits for captured media.
  • Two breaking refactors: #2127 “drop vestigial serde + delete legacy serde feature” (+13/−115) and #2120 “PascalCase role-module namespaces” (+128/−128, the JS follow-on to the July-4 #2070 role split).

New OPEN issues (all kixelated, July 8): #2126 (separate model types from wire/catalog serialization) and #2125 “origin served-cache grows unbounded” — the latter a fresh memory-lifetime loose end sitting right alongside the day’s cache-pool work. Also OPEN: release PR #2099 and the kio shared-Sender/Receiver refactor #2074. See moq-dev.

WG, other impls, mailing list, datatracker, interop

  • moq-transport — the only new WG activity is Issue #1808 (sharmafb, July 8 22:06 UTC) “Semantics for PUBLISH_BLOCKED when additional stream credit is received”: when a relay had to send PUBLISH_BLOCKED (PUBLISH_SKIPPED) for lack of bidi stream credit, must it remember and re-PUBLISH those tracks once credit opens, or is re-SUBSCRIBE the subscriber’s job? afrind (July 9 00:42) suggests folding it into the existing #1637. No merges, no new PRs; the July-7 cleanup PRs (#1804/#1805) and issue #1801 stay OPEN. Other moq-wg repos (msf, loc, secure-objects, cmsf, catalog-format, privacy-pass) quiet; cmsf #27 (LOCMAF-by-reference) still OPEN.
  • Other implementationsimquic #32 “Add support for MoQT v19” (Lorenzo Miniero, +238/−168, OPEN) is the first implementation PR explicitly targeting draft-19 — a forward signal beyond moq-dev’s July-7 wire support (#2106). moqtail #214 “malformed track detection for end clients” (sharmafb, OPEN). moqx — sync-bot #490 (moxygen 4240a55) merged; a new admin /logs endpoint (#491, OPEN) + gmarzot’s jemalloc/TLS relay-image #480 still OPEN. quiche, moq-js, moxygen, Eyevinn (all), birneee/quiche_moq, Moqtopus quiet.
  • Mailing list: nothing new July 8–9 — newest is still Martin Duke’s July-7 “Agenda is posted” (IETF-126 agenda-126-moq-00, comments due July 12). No weekly GitHub digest in-window (last July 5).
  • Datatracker: no revision bumps — transport-19, privacy-pass-auth-03, secure-objects-01, loc-03 (all 07-06), the Cisco tempo-00 + mocha-* suite (07-06), and draft-ietf-quic-qmux-02 all unchanged; draft-ietf-moq-dts4moq still absent. IETF 126 Vienna July 20 / 23 / 24.
  • Slack: silent — newest is still the July-7 qmux thread (afrind’s July-8 01:08 CEST reply, already logged). MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-8 00:33:49 UTC cut: 319/107/212/0 (~33.5% pass; at-target draft-18 171 · 0 ahead · 148 behind). Versus the July-7 00:39 cut (319/93/226/0, at-target 171): matrix flat at 319, skip flat at 0, at-target flat at 171, pass +14 (93 → 107, a new post-expansion high), fail −14 (226 → 212). This is the coverage-to-conversion move the page flagged after the July-7 structural expansion: the ~34 cross-version cells that flipped skip→attempt on July 7 (mostly failing on first run) are now converting green — pass climbs +14 on a structurally identical matrix, the first cut where the widened surface is demonstrably hardening rather than just widening. Still targets draft-18 (the runner has not advanced to draft-19 despite -19 being cut July 6 and imquic #32 opening draft-19 impl work). No July-9 cut at check time. See moq-rs, moq-dev, interop-runner.

Activity (July 7 → July 8) — The interim’s aftershocks: a Cisco individual-draft suite surfaces — the six-part MOCHA real-time-communication architecture (chat, meetings, identity, MLS keying, reactions, address book) + TEMPO synchronized-playout, all -00 submitted July 6 by Cullen Jennings + Suhas Nandakumar (Cisco) — pushing MoQ from a media-transport into a full RTC application platform. These are the actual I-Ds behind the July-7 agenda requests (the July-7 log had them as unpublished placeholders). Post-draft-19, the WG turns to cleanup: a LOC property-type collision is fixed in moq-transport (#1807, Mo Zanaty) and the LOC tracker is swept (six issues closed COMPLETED, only private-properties #19 left). The LOCMAF-into-CMSF question resolves by reference: Tobbe’s cmsf #27 registers a locmaf packaging pointing at the standalone draft (per wilaw) — LOCMAF keeps its own draft. QMux returns to focus: draft-ietf-quic-qmux hit -02 (July 6), and in the first technical Slack traffic in ~2 weeks kixelated picks a QMux revision for his draft-19 impl (Luke / Lucas Pardue / afrind). Implementations: moq has a big merge day (moq-lite-05 finalized #2113, breaking moq-net frame refactor #2116, the external catalog-lifetime bug #2087 closed via #2108); moq-rs’s contributor-led draft-16 rewrite gains a huge PUBLISH-support PR (#181, +8778/−3475). Martin Duke posts the IETF-126 agenda (comments due July 12). The interop runner cuts once (July-7 00:39, 319/93/226/0, at-target draft-18 171) — a third structural expansion (matrix +25, skips cleared, pass +10). No new MoQ Monthly (#2, May 31); no open wiki issues.

MOCHA + TEMPO — a Cisco RTC-application suite over MoQ surfaces

The window’s biggest development is not a WG action but the discovery of a coordinated seven-draft Cisco push (all submitted July 6, all Cullen Jennings + Suhas Nandakumar) that had been flagged only as agenda-request names in the July-7 log. They are now confirmed as published individual I-Ds:

  • MOCHA (“MoQ Open Communication & Hosting Architecture”) — a six-part real-time-communication suite built on MoQT pub/sub: draft-jennings-moq-mocha-chat-00 (messaging — each device publishes on its own track in a channel namespace, causal ordering, roster, discovery), plus -identity, -meetings, -mls-keying (MLS E2E group keying), -pab (address book), and -reactions. This is the first tracked case of MoQ being used as the substrate for a full RTC application stack rather than a media-delivery format — a WebRTC-adjacent vision, with E2E security via MLS that parallels secure-objects’ object-level encryption.
  • TEMPO (draft-nandakumar-moq-tempo-00, 14 pp) — “Timing Extension for Media Playout Orchestration”: publishers stamp each Object with desired-playout + send times, relays rewrite the send-time stamp with their own clock so each subscriber gets a fresh reference from its nearest relay, and subscribers report sync state to a PlaySyncServer that instructs the publisher to adjust timing when the audience drifts. The synchronized-playout / watch-party problem in native MoQ terms — related to but distinct from Luke Curley’s age-based Object Timestamp Extension.

Both are individual drafts (not WG-adopted or discussed), and are IETF-126 Vienna agenda candidates via the July-7 requests. Also confirmed this pass: the “MoQ DPoP Proof” draft Suhas requested time for is the pre-existing draft-nandakumar-moq-generic-dpop-proof-00 (2026-03-01), not a new submission — only the agenda request is new. See moq-mocha, moq-tempo, interim-meetings.

moq-transport + LOC — post-draft-19 cleanup and a tracker sweep

With -19 cut, the transport/LOC front turned to housekeeping:

  • moq-transport #1807 “Fix LOC property type values” (Mo Zanaty, +4/−3) MERGED July 7 23:27 UTC — realigns LOC’s TIMESTAMP / VIDEO_FRAME_MARKING / VIDEO_CONFIG / AUDIO_CONFIG code points after loc-03 added AUDIO_CONFIG, closing same-day Issue #1806 (Subgroup Delivery Timeout vs Timestamp both 0x06).
  • Two new OPEN transport PRs: #1804 (afrind, “Require FETCH to be sent to at least one publisher”, fixes #1707) and #1805 (sharmafb, “Fix Redirect ambiguity with empty name and namespace”, fixes #1793). New OPEN issue #1803 (ianswett, “How do you know what Parameters a PUBLISH has?”). The Range-Filters follow-ups from July 6 partly resolved: #1800 (kixelated, NAMESPACE params) and #1798 (routing/loop-prevention) both CLOSED July 7; #1801 (Vasiliev, reconsider “OR” in range filters) stays OPEN with July-8 discussion.
  • LOC tracker swept (July 7 evening, kixelated + yuanchao-chris): six issues closed COMPLETED — #21 (audio config), #20 (LOC-02 collision), #15 (vi64 ambiguity), #13 (duplicate 0x06), #10 (moqt-17 vs loc-01 collision), #5 (metadata into payload). Only #19 “How do you encode LOC Private Properties?” remains OPEN — the London-hackathon private-properties ambiguity. See moq-transport, moq-loc.

LOCMAF → CMSF by reference, and QMux for draft-19

  • CMSF registers LOCMAF by referenceTobbe’s cmsf #27 “Register locmaf packaging referencing draft-einarsson-moq-locmaf” (July 7, +74/−1, OPEN) adds a locmaf packaging that normatively references the standalone LOCMAF draft rather than folding the format text in — the approach wilaw suggested on Issue #24. Net effect: LOCMAF keeps its independent individual-draft path (contrary to the earlier “fold in and retire” framing); CMSF just signals it in the catalog. Companion: Eyevinn/locmaf #2 bumps mp4ff to v0.53.0. See moq-cmsf, moq-locmaf.
  • QMux back in focusdraft-ietf-quic-qmux-02 was published July 6 (QUIC WG, superseding the individual draft-opik-quic-qmux-01). In the first technical #moq Slack traffic in ~2 weeks, Luke Curley (July 7 21:52 CEST) asks “qmux-02 or qmux-01 for draft 19?” — which QMux revision to target as the TCP-fallback substrate for his new moqt-19 support. Lucas Pardue: no real difference (correctness enforcement); pick most recent (-02) as baseline, wire is backwards-compatible with -01. afrind: “We’re not supporting -19 so I guess it doesn’t matter, but we can interop -18 on -01.” The MoQ binding draft-nandakumar-moq-qmux-moqt is still -00; the version choice is over the underlying QMux layer. See qmux, moq-dev.

Implementations — a big moq-dev merge day; a moq-rs rewrite surges

  • moq — six PRs MERGED July 7–8: #2113 finalize moq-lite-05 + fix FETCH framing (+148/−214), #2116 breaking moq-net “frames as plain data + batched reads” (+814/−913), #2108 require broadcast close() + propagate real teardown errors — closing the external Go catalog-lifetime bug #2087#2107 optional client TLS SNI override (ksletmoe-aws), #2117 / #2118 (egress-latency + JS import cleanups). Two large OPEN memory PRs: #2110 global LRU group-memory cache pool (+1330/−60) and #2109 per-track timeline index (+1469/−51). Safari HW-encode PR #2115 (fperex) OPEN. See moq-dev.
  • moq-rs — the contributor-led draft-16 rewrite (#170, itzmanish) gains a very large #181 “Publish message support” (+8778/−3475) July 7 — a second forward track alongside the internal draft-18-dev branch. #180 (relay interest-loss) still OPEN.
  • moqx — sync-bot #489 (moxygen 58cc137) merged; gmarzot’s jemalloc/TLS relay-image PR #480 updated. quiche (moqt subdir quiet), moq-js, moqtail, moxygen, imquic, birneee/quiche_moq, warp-player, Moqtopus all quiet this window.

Mailing list, datatracker, Slack, interop

  • Mailing list: Martin Duke “Agenda is posted” (July 7) — the IETF-126 MoQ session agenda (agenda-126-moq-00) is published; comments due July 12 (distinct from, and earlier than, the July-20 Consensus-Call-on-Draft-18 deadline). Plus the already-logged July-7 agenda-time requests (Suhas: DPoP Proof + Tempo; Cullen: Mocha + secure-objects + Auth Design Team).
  • Datatracker: six new individual drafts confirmed (2026-07-06): draft-nandakumar-moq-tempo-00 + the draft-jennings-moq-mocha-{chat,identity,meetings,mls-keying,pab,reactions}-00 suite. draft-ietf-quic-qmux-02 (QUIC WG, July 6). DPoP (draft-nandakumar-moq-generic-dpop-proof-00) and MOQT-over-QMux (draft-nandakumar-moq-qmux-moqt-00) both unchanged at -00 (2026-03-01). No WG-doc revisions since the July-6 wave (transport-19, privacy-pass-auth-03, secure-objects-01, loc-03); draft-ietf-moq-dts4moq still absent. IETF 126 Vienna July 20 / 23 / 24.
  • Slack: the qmux thread (above) is the first traffic since Tobbe’s July-6 LOCMAF-01 announcement. MoQ Monthly: still #2 (May 31). Wiki issues: none open.
  • Interop: the runner cuts once — the July-7 00:39:54 UTC cut: 319/93/226/0 (~29.2% pass; at-target draft-18 171 · 0 ahead · 148 behind; ~19-entry set incl. a new-looking moq5). Versus July-6 (294/83/177/34, at-target 152): matrix +25, skip −34 (→ 0, all cells attempted), at-target +19, pass +10 (new high 93), fail +49. A third structural expansion after June-26 and July-2; still targets draft-18 (not yet advanced to -19). See interop-runner.

Activity (July 6 → July 7) — The July-6 interim (interim-2026-moq-18, 16:30 UTC) convenes and its output is immediate: [[moq-transport|draft-ietf-moq-transport-19]] is cut the same day — the first transport revision since -18 (2026-05-12, Day +55) — and it lands as part of a coordinated WG draft wave: [[moq-loc|loc-03]], [[moq-secure-objects|secure-objects-01]], and a major [[moq-privacy-pass|privacy-pass-auth-03]] are all published July 6, plus englishm’s [[moq-relay-dos|relay-dos-01]]. The interim (agenda: fill-fetch, switch_from, rst/fin, filters, SUBSCRIBE_TRACKS→PUBLISH, concurrent subscriptions, default priority; the “MOQT Issues and PRs” slides + chat log + bluesheets are posted, but no formal minutes yet at check time) resolves the ready items into -19: Mo Zanaty’s Range Filters #1765 is the one gated Design PR to land, alongside clarification merges #1698 (FIN vs RST), #1788 (SUBSCRIBE_TRACKS params → PUBLISH), #1775 (concurrent subscriptions per Track), #1613 (MAX_REQUEST_UPDATES), #1799 (enum extensibility) + afrind’s #1802 (draft-19 release notes) — while the four contested Design PRs (fill-fetch #1673, SWITCH_FROM #1674, Subscription Fill #1642, SSTS #1638) all stay OPEN, deferred past -19. Range Filters immediately draws two follow-ups: Vasiliev’s #1801 (“reconsider ‘OR’ functionality in range filters”) and kixelated’s #1800 (NAMESPACE parameters). Separately Martin Duke posts a Consensus Call on Draft-18 (review the -17→-18 diff, file issues by July 20, higher bar after). On the media side Tobbe ships a major LOCMAF -01 (“Low Overhead CMAF for Media over QUIC”) with a new standalone Eyevinn/locmaf reference-impl + golden-vector conformance repo and a coordinated Eyevinn v0.12.0 (moqlivemock 97 + warp-player 152) moving to LOCMAF v0.3 — the first Slack traffic (July 6 08:15 CEST) in ~14 days. July 7 brings a burst of IETF-126 agenda requests (Suhas: MoQ DPoP Proof + MoQ Tempo; Cullen: MoQ Mocha + secure-objects + Auth Design Team; Mo Zanaty replies). Implementations: moq turns draft-19 support around within hours (#2106) alongside a large codex role-module mirror (#2091 +785/−675). The interop runner cuts once (July-6 00:39, 294/83/177/34, at-target draft-18 152) — pass +3, a fifth straight cut holding at-target 152 (the cut predates both the interim and -19, so it still targets draft-18). No new MoQ Monthly (#2, May 31); no open wiki issues.

moq-transport — interim-2026-moq-18 cuts draft-19; Range Filters lands, the contested design PRs defer

The interim-2026-moq-18 ran July 6 16:30 UTC as the pre-Vienna slot focused on open draft-ietf-moq-transport issues. Its posted agenda queued the design surface the wiki has tracked all cycle — fill-fetch, switch_from, rst/fin handling, filters, SUBSCRIBE_TRACKS Parameters copied to PUBLISH, multiple concurrent subscriptions per Track, adjustable default publisher priority — with “Chair opening remarks” + a “MOQT Issues and PRs” deck; materials (slides, chat log, bluesheets) are up, but no formal written minutes at check time. The outcome is legible in the same-day GitHub state: [[moq-transport|draft-ietf-moq-transport-19]] was cut July 6 (approved by Ian Swett; first revision since -18 on May 12), and seven PRs merged into it:

  • #1765 “Add Range Filters” (Mo Zanaty, +181/−24) — the one gated Design PR to make the -19 cut; the object/location range-filter work carried since London.
  • #1698 “Clarify FIN vs RST/STOP_SENDING semantics on request streams” (afrind, +38/−18).
  • #1788 “SUBSCRIBE_TRACKS Parameters copied to PUBLISH” (ianswett, +11/−1) — the fix for #1660.
  • #1775 “Clarify multiple concurrent subscriptions per Track” (suhasHere, +11/−17).
  • #1613 “Add MAX_REQUEST_UPDATES setup option + TOO_MANY_REQUEST_UPDATES error” (afrind, +34/−0).
  • #1799 “Include enumerations in extensible protocol elements” (afrind).
  • #1802 “Draft 19 release notes” (afrind, +34/−0).

The four contested Design PRs stayed OPEN and are deferred past -19: fill-fetch #1673 (the Cullen/Mo-debated redesign), SWITCH_FROM #1674 (+ soft-mode #1675), Subscription Fill #1642, and SSTS #1638 — alongside #1770 (updatable default priority), #1783 (safe-ASCII), #1789 (impersonation), #1790 (PUBLISH params). So -19 is the ready-clarifications-plus-Range-Filters revision; the switching / fill-fetch / subscription-fill design cluster remains live work. Range Filters landing immediately generated two new issues July 6: #1801 (Vasiliev, “Reconsider ‘OR’ functionality in range filters”) and #1800 (kixelated, “NAMESPACE doesn’t allow parameters like PUBLISH_NAMESPACE”). See moq-transport, interim-meetings.

The WG draft wave — loc-03, secure-objects-01, and a major privacy-pass-auth-03

Three WG drafts revved on July 6 alongside transport-19:

  • [[moq-privacy-pass|draft-ietf-moq-privacy-pass-auth-03]] — the most substantial of the wave, and the first revision since -02. It absorbs the entire July-1 Suhas triage + PR #20 deployment text and rebuilds the MoQT integration: reverse-flow issuance moves to AUTH REQUEST / AUTH RESPONSE parameters, token acquisition over an established connection via REQUEST_UPDATE, the PrivateTokenAuth structures and the auth-scheme registry are removed, TokenChallenge now rides in AUTH CHALLENGE transport parameters instead of reason phrases (closing the long-tracked “no clean challenge carrier” problem), a Privacy Pass codepoint is registered in the MOQT Auth Token Type registry, retry behavior after challenge errors is specified, and the reverse-flow docs expand to three-phase flows. Cullen Jennings is now a listed author (Suhas / Cullen / Thibault). The repo merge behind it: thibmeu’s PR #21 “Transport auth hooks” (+251/−123, July 6). See moq-privacy-pass.
  • [[moq-loc|draft-ietf-moq-loc-03]] — first LOC revision since -02, resolving the June audio-config gap. Merges: #24 “Add audio config, revise all audio and video properties” (Mo Zanaty, +26/−17) — the answer to Issue #21 (LOC had a Video Config but no audio equivalent for AAC AudioSpecificConfig etc.); and #23 “Fix truncated sentence in MoQ Object Mapping” (sharmafb). See moq-loc.
  • [[moq-secure-objects|draft-ietf-moq-secure-objects-01]] — first revision since -00 (the long-flagged -01 cut), carrying the June-29 test-vectors appendix (PR #88) + AAD-serialization work into a published draft. No new repo activity fell inside the July 6–7 window (the merges predate it). See moq-secure-objects.

Consensus Call on Draft-18, relay-dos -01, and the IETF-126 agenda requests

  • Consensus Call on Draft-18Martin Duke posts “Consensus Call on Draft-18” (July 6), asking the WG to review the diff from draft-17 to draft-18 and file any resulting issues no later than July 20, warning that “subsequent objections will face a higher bar.” July 20 is the first Vienna session — so this locks the -18 baseline for WGLC-track review even as -19 layers the interim’s incremental changes on top. Duke also posts a lighter “New to MOQ? Work for Oracle?” recruiting note.
  • [[moq-relay-dos|draft-englishm-moq-relay-dos-01]] — Mike English’s “Denial-of-Service Considerations for Media over QUIC Relay Deployments” (17 pp) bumps to -01 July 6, the individual draft behind the DoS design-team readouts.
  • IETF-126 agenda requests (July 7) — a burst of agenda-time requests for the three Vienna sessions (July 20/23/24): Suhas requests time for a “MoQ DPoP Proof” draft and a “MoQ Tempo” draft; Cullen replies on “MoQ Mocha”, draft-ietf-moq-secure-objects, and the Authorization Design Team; Mo Zanaty replies on the general agenda thread (July 6). DPoP Proof / Tempo / Mocha are new draft names surfacing here for the first time — agenda placeholders, not yet published I-Ds at check time; ones to watch as Vienna approaches. See interim-meetings.

LOCMAF -01 — Tobbe’s major revision, the standalone Eyevinn/locmaf repo, and Eyevinn v0.12.0

The one Slack event (breaking ~14 days of silence) is Tobbe’s July 6 08:15 CEST announcement: “LOCMAF is now draft-01… I went through everything to make it consistent, having a canonical unpacking, making it extensible with C2PA boxes like uuid, etc., resulting in a major update… there is a new Github repo with validation tools, golden vectors, etc. at Eyevinn/locmaf. The draft does no longer need any IANA-registration, since all codes are internal, and the packaging is signaled via the CMSF catalog.”

  • [[moq-locmaf|draft-einarsson-moq-locmaf-01]] (July 5 on the datatracker; 41 pp; Torbjörn Einarsson / Eyevinn + Hugo Björs) — the major consistency pass: canonical reconstruction (two canonical encoders given the same CMAF input produce byte-identical LOCMAF Objects, enabling golden-vector conformance), generic-box elements carrying pre-moof boxes (prft/emsg) verbatim + a raw-boxes escape hatch (extensible to C2PA uuid boxes), delta headers via zigzag varints with the first chunk carrying full metadata and later chunks only deltas (down to ~2 bytes), mdat unchanged, DRM/encryption metadata preserved. No IANA actions — FourCCs are self-describing and field IDs are LOCMAF-governed; packaging is signaled via the CMSF catalog (packaging: "locmaf" + locmafVersion "0.3").
  • Eyevinn/locmaf (new repo, created July 3; releases v0.1.0 July 4, v0.1.1 July 5) — a stdlib-only Go reference codec and its conformance suite: a byte-pinned golden-vector corpus + worked examples (negative CTOs, CENC/cbcs, BMDT re-anchoring, event-only chunks). Layout: locmaf/ codec, vi64/ MOQT varints+zigzag, cmd/locmaf/ CLI, testdata/ golden vectors, web/ for the locmaf.dev explainer.
  • Eyevinn v0.12.0 (July 6, all Tobbe) — the codec is extracted out of moqlivemock into the standalone module: moqlivemock #96 “feat: LOCMAF v0.3 via the Eyevinn/locmaf module” (+326/−3640 — the big deletion is the in-repo LOCMAF code moving to the module) + #97 release v0.12.0; warp-player #150 “support LOCMAF packaging version 0.3” (+3615/−1880) + #152 release v0.12.0 (“LOCMAF v0.3 release cut + Safari MSE latency stabilization”). See moq-locmaf, moqlivemock, warp-player.

Implementations — moq-dev turns draft-19 around in hours

  • moq#2106 “feat(moq-net, js/net): add moq-transport draft-19 (moqt-19)” (kixelated, +208/−39) MERGED July 7 00:43 UTC — draft-19 wire support landing within hours of the cut, the same fast spec-sync the wiki logged for lite-05. Alongside: #2091 “[codex] Mirror @moq/net role modules” (+785/−675, the JS mirror of the July-4 #2070 role split) MERGED July 6, #2105 (android JNI 0.22 compile fix, closing same-day Issue #2103), #2104 (moq-mux per-rendition init track-id fix). Still OPEN: #2102 “[codex] add media init hints” and #2100 “[codex] auto-detect catalog metrics”; the external catalog-lifetime bug #2087 is unchanged/OPEN. See moq-dev.
  • moqx — only a routine mirror sync (#488 “sync: moxygen d9b2ead”, +1/−1). quiche (moqt subdir quiet), moq-rs (#180 still OPEN, no change), moqtail, moq-js, moxygen, imquic, birneee/quiche_moq, Moqtopus all quiet this window.

Mailing list, datatracker, Slack, interop

  • Mailing list: busiest window since the interim run-up — July 6 I-D Actions (transport-19, privacy-pass-auth-03, secure-objects-01, loc-03), Duke’s Consensus Call on Draft-18 + “New to MOQ?”, Mo Zanaty’s IETF-126 agenda reply; July 7 the DPoP-Proof / Tempo / Mocha / secure-objects / Auth-Design-Team agenda requests (Suhas + Cullen). The July-5 weekly GitHub digest (bot) already logged.
  • Datatracker: transport-19 (2026-07-06, replacing -18); privacy-pass-auth-03, secure-objects-01, loc-03, relay-dos-01 all 2026-07-06; [[moq-locmaf|draft-einarsson-moq-locmaf-01]] 2026-07-05. Unchanged: msf-01, cmsf-01, c4m-01; live-agent-01 (July 3), lite-05 + overview-00 (June 30); draft-ietf-moq-dts4moq still 404. IETF 126 Vienna sessions July 20 12:00 UTC / July 23 14:30 / July 24 14:00.
  • Slack: Tobbe’s July-6 LOCMAF-01 announcement is the first message since Martin Duke’s June-22 Google-Meet link. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-6 00:39:47 UTC cut: 294/83/177/34 (~28.2% pass; at-target draft-18 152 · 0 ahead · 142 behind; 15-entry set). Versus the July-5 00:40 cut (294/80/180/34, at-target 152): matrix flat at 294, pass +3 (80 → 83), fail −3 (180 → 177), skip flat 34, at-target flat at 152 — a small recovery of the July-5 −1 wobble, the fifth straight cut holding at-target 152. This cut is stamped 00:39 UTC July 6, i.e. before the 16:30 UTC interim and before draft-19 — so it still targets draft-18 and reflects the pre-interim mains. No July-7 cut at check time. The structural number stays at-target 152; the next growth axis remains a draft-19 conformance surface now that -19 is cut. See interop-runner.

Activity (July 5 → July 6) — The morning of the July-6 interim (interim-2026-moq-18, 16:30 UTC), and the one substantive spec event is on the privacy-pass tracker: Thibault Meunier’s PR #20 “Key considerations” MERGES (July 5 21:42 UTC, by Suhas, +44/−5) — the auth workstream’s first merged spec text since the July-1 triage. It adds a “Deployment considerations” appendix to draft-ietf-moq-privacy-pass-auth: how a Client fetches key material for the bootstrap issuer (reuse HTTP-exposed issuers per RFC 9577; mitigate partitioning/privacy loss via consistency mirrors / KEYTRANS / SCITT) and — the tie-back — for the relay reverse issuer (the reverse-flow mode Suhas raised in #19 on July 1: key material shipped with app-install / webpage load / device setup, or fetched on-the-fly via HTTP or a MoQ API), citing thibmeu’s own draft-meunier-privacypass-reverse-flow. moq-transport otherwise sees only pre-interim PR churn — afrind + Mo Zanaty touch six OPEN PRs July-5 afternoon (16:32–21:21 UTC) incl. the gated Design PRs Range Filters #1765 + SWITCH_FROM #1674, plus #1799 / #1698 / #1675 / #1613 — no merge, no new issue; all five gated Design PRs (#1765/#1638/#1642/#1673/#1674) stay OPEN awaiting the 16:30 UTC gate. On the impl side moq’s codex sweep tapers to a trickle: dynamic-origin subscribe routing #2094 + an AAC catalog-description fix #2093 MERGE July 5, a release #2084 is cut, dependabot bumps land, and two new catalog-themed codex PRs open at midnight July 6 (#2100** auto-detect catalog metrics, #2101 keep parent models alive from children). The interop runner cuts once (July-5 00:40, 294/80/180/34) — pass −1 flaky dip, at-target draft-18 152 a fourth straight cut. No new WG/individual revision (transport-18 Day +55); the only new list item is the July-5 weekly GitHub digest (bot); Slack silent (newest June 22, ~14 days); no new MoQ Monthly (#2, May 31); no open wiki issues. The interim’s decisions on the gated Design PRs (fill-fetch #1673, SSTS #1638) will be logged in the next update.**

Privacy-pass — thibmeu’s “Deployment considerations” merge lands the reverse-flow key-material text

The day’s headline is the first merged spec text on the moq-wg/privacy-pass tracker since Thibault Meunier’s June issue burst — PR #20 “Key considerations” (thibmeu, created July 5 07:46 UTC, MERGED July 5 21:42 UTC by Suhas Nandakumar, +44/−5, one file). It adds a new # Deployment considerations back-section to draft-ietf-moq-privacy-pass-auth.md addressing two key-bootstrap problems the draft had left explicitly undefined:

  • Fetching key material for the bootstrap issuer — the draft still does not define how Clients retrieve issuer configuration or establish a relationship with an attester. It now notes Clients may reuse issuers exposed over HTTP (RFC 9577), and should reduce susceptibility to partitioning (which erodes the Privacy Pass privacy guarantee, RFC 9576 §6.2) by relying on consistency mirrors (the draft-ietf-privacypass-consistency-mirror I-D, multiple vantage points) or transparency mechanisms such as KEYTRANS (draft-ietf-keytrans-architecture) or SCITT (RFC 9943).
  • Fetching key material for the relay reverse issuer — the tie-back to the July-1 triage: for a relay operating in reverse-issuer mode (the reverse-flow token exchange Suhas raised in Issue #19), Clients should similarly retrieve key material — either via a pre-established relation (shipped as part of app install / webpage load / device setup) or on the fly (HTTP, or a MoQ API). The draft leaves the mechanism undefined but says the same consistency considerations apply.

The PR also reformats the entity list (Client / MoQ Relay / Privacy Pass Issuer / Attester) into a definition list, renames “Change Log” → “Changelog”, and adds references to thibmeu’s own draft-meunier-privacypass-reverse-flow plus the mirror/KEYTRANS/SCITT I-Ds. This is the concrete spec-text follow-through on the July-1 Suhas triage (#19 reverse-flow, #18 challenge carrier, #16 retry) — the auth design-team work converting from tracker issues into merged draft text, one day out from the interim. No new datatracker revision yet (still -02; the merge is on main, not cut into a new -03). See moq-privacy-pass, moq-c4m, moq-transport, interim-meetings.

moq-transport — pre-interim PR churn only; the gated Design PRs stay OPEN

No transport merge or new issue July 5–6, but the afternoon (16:32–21:21 UTC) shows the pre-interim touch-up pattern — afrind and Mo Zanaty updating six OPEN PRs ahead of the July-6 16:30 UTC session:

  • #1765 “Add Range Filters” (mzanaty) — updated 16:46 UTC (gated Design PR).
  • #1674 “Track Switching via the SWITCH_FROM parameter” (afrind) — updated 16:32 UTC (gated Design PR, Cullen-APPROVED July 3 pending rebase).
  • #1698 “Clarify FIN vs RST/STOP_SENDING semantics on request streams” (afrind) — updated 16:42 UTC.
  • #1675 “SWITCH_FROM Soft Mode” (afrind) — updated 16:37 UTC.
  • #1613 “Add MAX_REQUEST_UPDATES setup option / TOO_MANY_REQUEST_UPDATES error” (afrind) — updated 21:21 UTC.
  • #1799 “Include enumerations in extensible protocol elements” (afrind) — updated 00:52 UTC.

All remain OPEN, as do the five gated Design PRs (Range Filters #1765, SSTS #1638, Subscription Fill #1642, fill-fetch #1673, SWITCH_FROM #1674) — the July-6 gate has not lifted at check time. Other moq-wg repos (msf, loc, secure-objects, cmsf, catalog-format) all quiet. See moq-transport, interim-meetings.

Implementations — moq-dev’s codex sweep tapers to a trickle

  • moq — after the ~48-PR July-3/4 sweep, activity drops to a handful. New MERGED (July 5, kixelated): #2094 (+14/−14) “Route subscribes through dynamic origins” (route SUBSCRIBE through dynamic-origin resolution), #2093 (+52/−2) “[codex] fix AAC catalog description” (catalog-metadata correctness for AAC audio — the catalog theme running through the whole July sweep). Release + deps: #2084 (+144/−98, moq-bot) “chore: release” cut, with a follow-on release PR #2099 OPEN; dependabot bumps MERGED (pako 2→3 #2095, uv group #2096, github-actions #2097, cargo 9-update group #2098). New OPEN — catalog follow-ons (July 6 00:05 UTC): #2100 “[codex] auto-detect catalog metrics” and #2101 “[codex] Keep parent models alive from children” — both opened just after midnight, extending the catalog-lifetime line (cf. the external #2087 bug + the 2090 catalog-reservation follow-ons). See moq-dev.
  • moqx — only a routine mirror sync (#487 “sync: moxygen 3ea8c10”, omoq-sync-bot, MERGED July 5, +1/−1). quiche (no new moqt commit), moq-rs (#180 still OPEN, no change), moqtail, moq-js, moxygen, imquic, birneee/quiche_moq, Eyevinn (all), Moqtopus all quiet this window.

Mailing list, datatracker, Slack, interop — quiet on the eve of the interim

  • Mailing list: the only new item is the routine weekly GitHub digest (Repository Activity Summary Bot, July 5); no human thread since July 3’s Mo Zanaty / Cullen “Re: Review of PR1673” pair, and no interim agenda or minutes posted yet (the interim runs 16:30 UTC July 6; minutes would post later). No new I-D Action.
  • Datatracker: no revision bump — transport still -18 (Day +55 since 2026-05-12); msf-01, cmsf-01, loc-02, secure-objects-00, c4m-01, privacy-pass-auth-02 unchanged; [[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction-01]] (July 3), [[moq-lite|draft-lcurley-moq-lite-05]] + [[moq-overview|draft-westerlund-moq-overview-00]] (both June 30) unchanged; transport-19 not cut; draft-ietf-moq-dts4moq still 404. interim-2026-moq-18 (July 6, 16:30 UTC) is today; IETF 126 Vienna sessions July 20/23/24.
  • Slack: silent ~14 days; newest is Martin Duke’s June-22 Google-Meet link. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-5 00:40:00 UTC cut: 294/80/180/34 (~27.2% pass; at-target draft-18 152 · 0 ahead · 142 behind). Versus the July-4 00:37 cut (294/81/179/34, at-target 152): matrix flat at 294, pass −1 (81 → 80), fail +1 (179 → 180), skip flat 34, at-target flat at 152 — the smallest possible cross-version flaky-variance move, consistent with the window’s minimal impl churn (moq-dev’s tapering codex activity). This is the fourth straight cut holding at-target 152 since the July-2 expansion. Same 18-impl set. No July-6 cut at check time. The structural number remains at-target 152; the growth axis to watch is the at-target pass count climbing within that band, gated on the SSTS/draft-19 conformance surface decided at today’s interim. See interop-runner.

Activity (July 4 → July 5) — A quiet US-holiday window, one day before the July-6 interim — the substance is on the implementation side. The Eyevinn stack lands a coordinated joining-FETCH catalog-retrieval feature across all three repos July 4 (all Tobbe): Eyevinn/moqtransport v0.9.0 ships (PR #14 “resolve joining FETCH on the publisher side (draft-16)”), and both the Go publisher/subscriber (moqlivemock PR #95) and the TS player (warp-player PR #149) now “retrieve catalog via SUBSCRIBE plus relative joining FETCH” + document a -catalog-mode — the first substantive Eyevinn activity the wiki has logged since the June-9 hackathon hardening. moq’s codex sweep tails off July 4 afternoon: moq-wasm is backported to main (#2086 +727/−29, with wasm-compat fix #2085 by ewindisch), the Once write-once signal merges (#2080), per-project relay stats land (#2078 +363/−109), and the catalog-reservation + role-module themes spawn follow-ons (OPEN #2091 mirror @moq/net role modules +762/−671, #2089/#2090 catalog reservation, #2092 ffi lifetimes). A third external-filed defect appears: Issue #2087 (pisoj) “Go: Catalog becomes unavailable after a minute of playing” — a Go client gets RESET_STREAM on the catalog.json track after ~1 min unless the broadcast is re-published in a loop, a catalog-lifetime bug in the same family as msf #188 / the #2072 catalog-reservation gating. moq-transport quiet — no merge or new issue July 4–5 (only afrind’s #1799 enum-extensibility touched July 5 00:52 UTC, metadata-only); gated Design PRs (#1765/#1638/#1642/#1673/#1674) all stay OPEN pending July 6. The interop runner cuts once (July-4 00:37, 294/81/179/34) — pass −3 flaky dip, at-target draft-18 holds at 152 a third straight cut. No new WG or individual revision (transport-18 Day +54); Slack silent (newest June 22, ~13 days); no new MoQ Monthly (#2, May 31); no open wiki issues.

Eyevinn — joining-FETCH catalog retrieval lands across moqtransport / moqlivemock / warp-player

The day’s headline on the impl side is a coordinated Eyevinn feature shipping across all three repos July 4 16:48 → 17:32 UTC — making a relative joining FETCH the mechanism for retrieving the catalog, rather than a plain SUBSCRIBE-and-wait:

  • Eyevinn/moqtransport v0.9.0 (July 4 16:48 UTC) — the transport library’s single change is PR #14 “feat: resolve joining FETCH on the publisher side (draft-16)”, i.e. the publisher can now satisfy a joining FETCH (a FETCH relative to the current group). This is the library primitive both apps consume.
  • moqlivemock PR #95 MERGED (July 4 17:30 UTC) “feat: retrieve catalog via relative joining FETCH” — the Go publisher/subscriber bumps its moqtransport dependency to v0.9.0 and adds a -catalog-mode flag (documented) selecting how mlmtest fetches the catalog track.
  • warp-player PR #149 MERGED (July 4 17:32 UTC) “feat: retrieve catalog via SUBSCRIBE plus relative joining FETCH” — the TS/MSE player mirrors the same mode (SUBSCRIBE to pick up live catalog updates, plus a relative joining FETCH to grab the current catalog object immediately instead of waiting for the next publish).

This is the first June-cycle-substantive Eyevinn activity the wiki has logged since the June-9 London-hackathon hardening (bounded SETUP / draft-14-downgrade refusal), and it directly addresses the “how does a subscriber get the current catalog without a full-group wait” problem that also underlies kixelated’s msf #188. See moqlivemock, warp-player.

moq-dev — the codex sweep tails off; moq-wasm backported; a third external catalog bug

  • moq — the ~48-PR July-3/4 sweep tails into July 4 afternoon (all kixelated bar one). New MERGED: #2086 “[codex] backport moq-wasm to main” (+727/−29) with #2085 “fix: moq-net wasm compatibility” (ewindisch — a rare non-kixelated author) — pulling the WASM build target onto main; #2080 “signals: add Once (write-once awaitable + observable, used for Group.closed; was OPEN in the July-4 log); #2078 “moq-net: per-project stats via broadcast-path grouping” (+363/−109); #2079 “moq-relay: check token root against the connection path, route to the pid alias”; #2088 strip announced prefixes in JS, #2082 rename moq token binary, #2081 codex devshell hook, #2077 avoid moq-net/hang release breakage. New OPEN — catalog-reservation + role-module follow-ons: #2091 “[codex] Mirror @moq/net role modules” (+762/−671 — the JS mirror of July-4’s #2070 role-split), #2089 “[codex] Add catalog reservation gating” + #2090 “moq-rtc: share catalog reservation across ingest bridges” (follow-ons to the #2072 gating fix), #2092 “[codex] fix ffi producer owner lifetimes”, #2074 kio Consumer refactor (carried over). A third external-filed defect: Issue #2087 (pisoj, July 4 14:37 UTC) “Go: Catalog becomes unavailable after a minute of playing” — a Go client writing audio to a published broadcast gets broadcast=… track=catalog.json error=Received RESET_STREAM after ~1 min, but the stream survives indefinitely if the broadcast is (re-)published inside a loop. A catalog-track-lifetime bug in the same family as the static-vs-dynamic-catalog work (msf #188, the #2072 catalog-reservation gating) — the third outside-filed bug this cycle after t0ms’s open-GOP #2050, a sign the gateway breadth has real users. See moq-dev.
  • moq-rsPR #180 (relay interest-loss propagation) stays OPEN, no change since July 3. moqx — no merge July 4–5 (#480 jemalloc/TLS stats stack still OPEN). quiche (no new moqt commit since July 1), moqtail, moq-js, moxygen, imquic, birneee/quiche_moq, Moqtopus all quiet this window.

WG, mailing list, datatracker, Slack — quiet across the July-4 US holiday

  • moq-transport: no merge or new issue July 4–5. afrind’s #1799 “Include enumerations in extensible protocol elements” shows an updated bump to July 5 00:52 UTC but no new comment or commit (a metadata-only touch — a label/link change, not review activity). The gated Design PRs (Range Filters #1765, SSTS #1638, Subscription Fill #1642, fill-fetch #1673, SWITCH_FROM #1674) all stay OPEN — the July-6 gate is one day out. Other moq-wg repos (msf, loc, secure-objects, cmsf, catalog-format, privacy-pass) all quiet.
  • Mailing list: nothing new July 4–5 — the newest message is still July 3’s Mo Zanaty + Cullen Jennings “Re: Review of PR1673” pair (already logged). No new I-D Action, no weekly GitHub digest.
  • Datatracker: no revision bump — transport still -18 (Day +54 since 2026-05-12); msf-01, cmsf-01, loc-02, secure-objects-00, c4m-01, privacy-pass-auth-02 unchanged; [[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction-01]] (July 3), [[moq-lite|draft-lcurley-moq-lite-05]] + [[moq-overview|draft-westerlund-moq-overview-00]] (both June 30) unchanged; transport-19 not cut; draft-ietf-moq-dts4moq still 404. interim-2026-moq-18 (July 6, 16:30 UTC) is tomorrow; IETF 126 Vienna sessions July 20/23/24.
  • Slack: silent ~13 days; newest is Martin Duke’s June-22 Google-Meet link. MoQ Monthly: still #2 (May 31). Wiki issues: none open.

Interop: the runner cuts once — the July-4 00:37:04 UTC cut: 294/81/179/34 (~27.6% pass; at-target draft-18 152 · 0 ahead · 142 behind). Versus the July-3 00:38 cut (294/84/176/34, at-target 152): matrix flat at 294, pass −3 (84 → 81), fail +3 (176 → 179), skip flat 34, at-target flat at 152 — an ordinary cross-version flaky dip (the July-4 codex-sweep tail + Eyevinn joining-FETCH churn is exactly the kind of main reshaping that flips a handful of marginal cells), the third straight cut holding at-target 152 since the July-2 expansion. Same 18-impl set. No July-5 cut at check time. The structural number remains at-target 152; the growth axis to watch is the at-target pass count climbing within that band, gated on the July-6 SSTS/draft-19 conformance surface. See interop-runner.

Activity (July 3 → July 4) — The WG story is a Cullen Jennings review sweep across five open moq-transport PRs (July 3), and the fill-fetch design debate spilling onto the list. Cullen (“fluffy”) APPROVES afrind’s #1674 (SWITCH_FROM, “rebase onto main”) and #1783 (safe-ASCII reason phrase — “if we don’t do this now… we’ll be doing it in IETF Last Call”), COMMENTS on michalhosna’s #1770 (updatable default priority, residual race-condition concerns), touches suhasHere’s #1789 (impersonation), and requests CHANGES on afrind’s #1673 “Replace Joining FETCH with fill fetch streams” — the last mirrored in a “Re: Review of PR1673” list thread where Cullen + Mo Zanaty debate the fill-fetch design (error delivery on fill streams, duplicate object delivery, implicit forward=0 cancellation, nested-parameter complexity, whether to remove Joining FETCH at all). No merges July 3–4; the gated Design PRs (Range Filters #1765, SSTS #1638, Subscription Fill #1642, fill-fetch #1673, SWITCH_FROM #1674) all stay OPEN pending July 6. On the media-format side kixelated opens msf Issue #188 “Static vs dynamic catalogs” — a fresh design question from his own gateway work (container exporters need static tracks; MSF is dynamic → a race + a request for a “no more tracks” signal). On the Datatracker, [[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction]] bumps -00 → -01 (July 3, Alibaba’s AI-agent profile iterates). Implementations: moq roughly doubles its codex sweep to ~48 PRs MERGED July 3–4 — the July-3 log’s OPEN items all land (lite-05 QUIC datagram delivery #2039, NVENC vendored in-tree #2042 +52k, TS/IRD harness #2011) plus two new features (enhanced-RTMP capsEx multitrack #2068/#2060, catalog-reservation gating #2072) — and the July-2 gateway audit batch mostly CLOSES (#2000/#2001/#2003/#2004/#2010). moxygen lands a real spec-compliance fix by direct commit (DELIVERY_TIMEOUT=0 → PROTOCOL_VIOLATION for draft ≤16); moq-rs breaks a ~3-week quiet stretch with a new OPEN relay interest-loss-propagation PR (#180); moqx’s July-2 build PRs (#483/#484/#485) merge. The interop runner cuts July-3 00:38 (294/84/176/34) — flat vs the July-2 13:55 cut, so the at-target draft-18 count holds at 152 a second straight cut. No new WG revision (transport-18 Day +53); Slack silent (newest June 22, ~12 days); no new MoQ Monthly (#2, May 31); no open wiki issues.

moq-transport — Cullen’s review sweep + the fill-fetch design debate on the list

No transport merge or new issue July 3–4, but July 3 saw the most concentrated editor review activity since the June-29 merge batch — Cullen Jennings (“fluffy”) swept five open PRs (~15:04–17:20 UTC), the signature of a pre-deadline push to clear the Design-PR queue ahead of July 6:

  • #1674 “Track Switching via the SWITCH_FROM parameter” (afrind) — APPROVED (15:26 UTC); Cullen is fine merging as-is and filing follow-ups, then adds “this should be rebased onto main” (15:31).
  • #1783 “Restrict reason phrase and implementation name to safe ASCII” (afrind) — APPROVED (16:40 UTC) with the pointed “if we don’t do this now … we will be doing it in IETF Last Call” — the WGLC-hygiene argument.
  • #1770 “Make Default Publisher Priority an updatable parameter” (michalhosna) — COMMENTED (16:32 UTC): residual race-condition concerns remain, but Cullen thinks applications can live with them.
  • #1789 “Add additional details on preventing impersonation” (suhasHere) — touched (17:20 UTC).
  • #1673 “Replace Joining FETCH with fill fetch streams” (afrind) — CHANGES_REQUESTED (15:04 UTC), the substantive one (below).

The fill-fetch redesign (#1673, a revision of Subscription-Fill #1642: satisfy any subscription range, delivering the pre-Largest-Object portion on a “fill-fetch” unidirectional stream) drew a parallel “Re: Review of PR1673” list thread July 3. Cullen’s concerns: (1) error delivery — with a dual SUBSCRIBE + FETCH model there’s no clean way to return fill-stream error details, which breaks token-refresh for non-bearer auth; (2) duplicate object delivery — objects can arrive twice (FETCH + subscription), and the FILL_TIMEOUT=0 mitigation is “poor design”; (3) implicit vs explicit — he disputes auto-cancelling fill-fetches on forward=0 (use case: join at low-res while back-filling 30 s, then upgrade quality without abandoning the backfill); (4) nested parametersFILL_PARAMETERS containing other parameters is confusing when a parameter behaves differently by context; (5) terminology (“already-published”, before/after → location-based); (6) he’d rather keep Joining FETCH until there’s operational experience. Mo Zanaty concurs on nesting — “nested parameters are likely to surprise and confuse people” — and proposes the spec explicitly state top-level-vs-nested rules, noting delta-encoding context resets at each nested level and must be documented. The gated Design PRs (Range Filters #1765, SSTS #1638, Subscription Fill #1642, fill-fetch #1673, SWITCH_FROM #1674) all stay OPEN — the July-6 gate has not lifted. See moq-transport, interim-meetings.

MSF — kixelated opens the static-vs-dynamic catalog question

kixelated opened msf Issue #188 “Static vs dynamic catalogs” (July 3 20:13 UTC) — a design question surfaced directly by his own moq gateway work. His fMP4 / FLV / MPEG-TS / HLS exporters need static tracks (those containers can’t add or remove tracks mid-stream), but MSF is inherently dynamic (tracks can be added/removed/modified at any time), and because some publishers initialize tracks dynamically there’s a race condition on the consumer side. He asks MSF for a way to signal that no more tracks will be added/removed/modified, so a consumer can abort a “gross” sleep-based wait early instead of guessing when the catalog has settled. This is the spec-side counterpart to the same-window moq-dev fix #2072 “gate initial catalog publish until reserved tracks resolve” and the earlier catalog-jitter (#2020) / catalog-root (#2054) codex fixes — the media-gateway breadth generating concrete MSF requirements. No new MSF revision (still -01). See moq-msf, moq-dev.

Datatracker — the Alibaba AI-agent draft iterates to -01

[[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction]] bumped -00 → -01 (July 3) — the follow-on revision the -00 first-look flagged to watch for. It stays an individual draft (not adopted, no WG stream), the abstract is unchanged in shape (ASR/LLM-token/TTS mapping onto MOQT’s object hierarchy, barge-in turn-taking, pure application profile), and the Datatracker shows no explicit -00→-01 changelog. Notable mainly as continued Alibaba investment in the “MoQ as a reusable real-time substrate” thesis; still no WG-list discussion. No other WG or individual revision: transport still -18 (Day +53), msf-01, cmsf-01, loc-02, secure-objects-00, c4m-01, privacy-pass-auth-02 unchanged; the June-30 moq-lite-05 + moq-overview-00 unchanged; transport-19 not cut; draft-ietf-moq-dts4moq still 404. interim-2026-moq-18 (July 6, 16:30 UTC) is the only future interim; IETF 126 Vienna sessions scheduled (July 20/23/24). See moq-live-agent-interaction.

Implementations — moq-dev’s sweep doubles + a moxygen spec fix + moq-rs stirs

  • moq — the codex bugfix sweep roughly doubles: ~48 PRs MERGED July 3–4 (all kixelated bar one; ~25 [codex]-prefixed). The July-3 log’s OPEN items all landed: #2039 “moq-net: lite-05 QUIC datagram delivery” (+1611/−255, the biggest lite-wire feature), #2042 “vendor the NVENC fork in-tree as moq-nvenc (+52393/−53), #2036 (gateway-findings rebuild), #2035 (rtmp/srt/rtc/hls → 0.1.0), #2011 (TS/IRD compliance harness into smoke CI). Two substantial new features: #2068 “enhanced-RTMP capsEx negotiation + multitrack” (+1127/−264) with #2060 vendoring rml_rtmp as a private module (+11794/−31, fixes Issue #2049); #2072 “gate initial catalog publish until reserved tracks resolve” (+631/−291 — the code side of msf #188). Plus a moq-net role-module split (#2070 +1537/−1471), open-GOP H.264 handling (#2066 treat recovery-point SEI as keyframe, fixing external contributor t0ms’s Issue #2050), zero-copy frame bytes (#1921), and continued codex fixes (mux hardening #2057, MSF catalog-root #2054, FLV DTS #2052, Swift/Kotlin packaging #2045, js docs/TrackInfo timescale #2047, python TLS pinning #2061). The July-2 gateway audit batch mostly CLOSES: 2010 all resolved July 3 (the “do the audit items convert to fixes as fast as the closed half did?” question the July-3 log posed — answered: yes). New OPEN: #2080 “signals: add Once — a write-once awaitable + observable value”, #2074 kio Consumer shared Sender/Receiver refactor, #2081 codex devshell hook; new issues 2073 (mirror catalog/role-module changes into JS) + #2067 (open-GOP tune-in end-to-end test). See moq-dev.
  • moxygen — a genuine spec-compliance fix by direct commit (moxygen merges to main outside GitHub PRs): c14a6bb9 (July 3 02:23 UTC) “Draft 16 and below: DELIVERY_TIMEOUT of 0 is PROTOCOL_VIOLATION” — enforces that a zero DELIVERY_TIMEOUT is a protocol violation on draft ≤16 (+ a routine e0b58105 hash update). Worth flagging because PR-based scans miss moxygen’s direct-commit workflow. See moxygen.
  • moq-rs — breaks a ~3-week quiet stretch: PR #180 OPEN (thexeos, July 3 23:47 UTC) “relay: propagate downstream interest loss with warm-cache linger + upstream UNSUBSCRIBE” — relay-side interest-loss propagation (linger a warm cache, then send an upstream UNSUBSCRIBE when downstream interest is gone). Not yet merged; the first substantive moq-rs movement the wiki has logged since mid-June. See moq-rs.
  • moqx — the July-2 build/CI PRs land: #485 (mondain — native Ubuntu/Debian-derivative build support), #484 (retire the moqx-000 legacy alias), #483 (perf-test Pages deploy), plus sync-bot #486 — all MERGED July 3. No new issues; the standing version-negotiation hazard #472 is unchanged. See openmoq.
  • quiche (no new moqt commit since the July-1 SubscribeNamespace fix), moqtail, moq-js, imquic, birneee/quiche_moq, Eyevinn (moqlivemock / warp-player / moqtransport), Moqtopus all quiet this window.

Interop: the runner cuts once — the July-3 00:38:09 UTC cut: 294/84/176/34 (~28.6% pass; at-target draft-18 152 · 0 ahead · 142 behind). This is identical in every count to the July-2 13:55 cut (294/84/176/34, at-target 152) — the first fully-flat cut since the July-2 expansion, so the at-target draft-18 count holds at 152 a second straight cut, confirming the coverage expansion settled rather than reverted. Same 18-impl set. No July-4 cut at check time. The structural number remains at-target 152; the growth axis to watch is the at-target pass count climbing within that band, gated on the July-6 SSTS/draft-19 conformance surface. See interop-runner.

Activity (July 2 → July 3) — Will Law posts the concrete SSTS design to the list (July 2 12:20 UTC), converting the June-22 interim’s Sender-Side Track Switching decisions into text on the gated Design PR #1638: a SSTS_ALGORITHMS setup parameter + SWITCHING-SET-ASSIGNMENT framework, a mandatory Algorithm 0, and removal of the per-set MAX_DTS_CONCURRENT_TRACKS (D)DoS knob — the first spec-side motion on the year’s biggest transport design item since the interim, ahead of July 6. moq-transport repo otherwise quiet (no merge/issue; 1765 only comment-iterating). On the impl side the day belongs to moq: ~23 PRs MERGED in a Luke Curley “[codex]” AI-assisted bugfix sweep (lite wire edge cases, IETF object-property KVP encoding #2031, dropped group-fetch requests, MSF catalog-jitter, HLS/RTMP/RTC gateway fixes) + NVENC hardware-encode correctness + a big merge-main-into-dev (#2013 +15185/−4472), alongside a 17-issue gateway audit batch kixelated filed the same morning and new OPEN work on lite-05 QUIC datagram delivery (#2039) and in-tree NVENC vendoring (#2042). moqx merges afrind stats (#478/#477) + gmarzot PKCS#12 TLS (#460); sharmafb opens a FETCH-priority test helper on moqtail (#213); moxygen gets a gmarzot logging fix (#207 OPEN). The interop runner cuts July-2 13:55 (294/84/176/34) with the at-target draft-18 count nearly doubling 78→152 — a coverage expansion, not a pass-rate move. No new WG revision (transport-18 Day +52); Slack silent (newest June 22, ~11 days); no new MoQ Monthly (#2, May 31); no open wiki issues.

SSTS — Will Law turns the June-22 interim decisions into PR text

The gated Design PR the wiki has tracked all month as “frozen pending July 6” saw its first substantive motion since the interim: Will Law (Akamai) posted “Add Sender-Side Track Switching (SSTS) #1638” to the list July 2 12:20:43 UTC, describing the updates he pushed to PR #1638 to implement the interim-17 (June 22) action items:

  • Rename: “Dynamic Track Switching” → “Sender-Side Track Switching (SSTS)” — matching the interim’s naming decision.
  • Multi-algorithm: SSTS now supports multiple switching algorithms, advertised by relays via a new SSTS_ALGORITHMS setup parameter (the array-of-preferred-algorithms negotiation the interim specified).
  • SWITCHING-SET-ASSIGNMENT framework: a base parameter framework that individual algorithms extend — the extension point that makes the IANA-registered algorithm ID meaningful.
  • Algorithm 0: the mandatory default baseline (throughput thresholds + activation rules), i.e. the interim’s “Algorithm Zero.”
  • Removed MAX_DTS_CONCURRENT_TRACKS: the per-switching-set (D)DoS-protection setup option is dropped per the interim’s decision to rely on auth tokens + existing relay protections rather than negotiated concurrency limits (Gwendal Simon’s original (D)DoS concern).

Will Law invites review and alternative-algorithm implementations to exercise the extension mechanism — a signal that the “Algorithm Zero + IANA registry” design is meant to be validated by more than one algorithm before draft-19. This is the primary gate item heading into the July 6 interim. See switch-abr, moq-transport, interim-meetings.

moq-transport — quiet; only comment-iteration on open PRs

No transport merge or new issue July 2–3. The only movement is comment activity on already-OPEN PRs: afrind’s #1799 (enum extensibility) and ianswett’s #1790 (PUBLISH-parameter placement) were touched July 2, and Mo Zanaty’s Range-Filters #1765 drew comments. The gated Design PRs (Range Filters #1765, DTS/SSTS #1638, Subscription Fill #1642, fill-fetch #1673, SWITCH_FROM #1674) all stay OPEN — the July-6 gate has not lifted. See moq-transport.

Mailing list, datatracker, Slack — quiet apart from the SSTS post

  • Mailing list: the SSTS post (above) is the only new July-2 message. No new I-D Action, no new weekly GitHub digest (last was June 28), nothing dated July 3.
  • Datatracker: no revision bump — transport still -18 (Day +52 since 2026-05-12); msf-01, cmsf-01, loc-02, secure-objects-00, c4m-01, privacy-pass-auth-02 unchanged; the June-30 individual drafts ([[moq-lite|draft-lcurley-moq-lite-05]], [[moq-overview|draft-westerlund-moq-overview-00]]) and June-29 [[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction-00]] all unchanged; transport-19 not cut; draft-ietf-moq-dts4moq still 404. interim-2026-moq-18 (July 6, 16:30 UTC) is the only future interim; IETF 126 Vienna sessions scheduled (July 20/23/24).
  • Slack: silent ~11 days; newest is Martin Duke’s June-22 Google-Meet link.
  • privacy-pass: no new tracker activity (the July-1 Suhas 16 triage is already logged in the July-1→2 section below).

Implementations — moq-dev’s codex bugfix sweep + a gateway audit batch

  • moq~23 PRs MERGED July 2–3, mostly a Luke Curley “[codex]” AI-assisted bugfix sweep: #2033 lite wire edge cases (+116/−39), #2031 “fix IETF object property KVP encoding” (+260/−27 — the same Key-Value-Pair v16-delta class moqtail fixed in #208), #2028 dropped group-fetch requests (+147/−13), #2030 JS group-cache accounting, #2029 moq-net wasm timestamp fallback, #2020 MSF catalog-jitter compat, plus HLS/RTMP/RTC gateway fixes (#2016 HLS playlist RFC counters, #2018 RTMP play resolve timeout, #2019 shared RTMP publish paths, #2022 moq-rtc loopback ICE fallback). Media/codec: #1997 NVENC hardware-encode correctness (IDR/param-sets/pitched input, +308/−41), #2034 VT/mic/DXVA NV12 fixes, #2038 moq-video capture-encoder on a dedicated thread (+283/−49), #2015 fMP4 composition offsets. Bindings/infra: #2037 ANNOUNCE rename + moq-ffi 0.3.0 (+250/−93), #1998 per-sink frame-drop latency for export gateways, and the periodic #2013 merge-main-into-dev (+15185/−4472). Alongside, kixelated filed a 17-issue gateway audit batch (07-02 05:12) — OPEN: #2010 (moq-hls broadcaster map never evicts), #2006 (RTMP play of nonexistent broadcast hangs), #2005 (moq-rtc A/V sync, no NTP anchor), #2003 (hang catalog aspect-ratio field JS/Rust mismatch), #2001 (moq-mux/srt cross-timescale Timestamp panics), #2000 (moq-mux FLV export non-monotonic DTS), #2007 (E-RTMP codecs to legacy clients, no negotiation) — several sibling issues (#1999/#2002/#2004/#2008/#2009) were fixed and CLOSED the same window. New OPEN work: #2039 “moq-net: lite-05 QUIC datagram delivery”, #2042 vendor the NVENC fork in-tree as moq-nvenc, #2032 JS lite FETCH, #2035 bump rtmp/srt/rtc/hls to 0.1.0, + a t0ms MPEG-TS/IRD compliance harness (#2024/#2011). See moq-dev.
  • moqx — the afrind perf/stats + gmarzot TLS lines keep landing: #478 MERGED (widen object-ack-latency histogram tail to 1s) + #477 MERGED (peterchave — tune auto-regression testing) — both were OPEN in the July-2 log; #460 MERGED (gmarzot — PKCS#12 TLS bundle support, in-memory/cloud-vault-friendly, +915/−23); sync-bot #481. New OPEN: #485 (Ubuntu/Debian derivative build support), #484 (retire the moqx-000 legacy alias), #483 (perf-test Pages deploy), #480 (docker jemalloc + TLS stats stack). New issues: #482 (gmarzot — buffer-based FizzServerContext helper) and the standing #472 (default MOQX_MOQT_VERSIONS advertises draft-16 first, so negotiation caps at 16 even when draft-18 is mutual — a version-negotiation hazard directly relevant to the interop expansion). See openmoq, moxygen.
  • moqtailsharmafb (Aman Sharma, a moq-transport editorial contributor) opens PR #213 “Helper to validate different priority in same subgroup in FETCH response” (July 2 22:19) — a cross-pollination signal, a WG-side contributor sending a FETCH-priority test helper to the moqtail codebase, following June-30/July-1’s KVP-delta (#208) and subgroup-header (#211) wire fixes. See moqtail.
  • moxygen — one new OPEN PR: #207 (gmarzot, July 2 21:02) “Fix FOLLY_XLOG_STRIP_PREFIXES to strip moxygen’s own root” — a logging-prefix fix upstream. See moxygen, openmoq.
  • quiche (no new moqt commit since the July-1 SubscribeNamespace Request-ID fix), moq-rs, moq-js, imquic, birneee/quiche_moq, Eyevinn (moqlivemock / warp-player / moqtransport), Moqtopus all quiet this window.

Interop: the runner cuts once — the July-2 13:55:17 UTC cut: 294/84/176/34 (~28.6% pass; at-target draft-18 152 · 0 ahead · 142 behind). Versus the July-1 00:48 cut (266/80/152/34, at-target 78): matrix +28 (266 → 294), at-target nearly doubles 78 → 152 (+74), behind −46, pass +4, fail +24, skip flat 34 — a draft-18 coverage expansion (more impls advertising draft-18 pull ~46 previously-behind cross-version cells to at-target, plus 28 new cells) where the newly-at-target cells mostly fail on first attempt, so the pass count barely moves while at-target and fail jump. Structurally this is the June-26 +41-cell expansion continuing, not a regression. See interop-runner.

Activity (July 1 → July 2) — The auth workstream surfaces on the privacy-pass tracker for the first time since London: Suhas runs a triage pass July 1 (~16:00–16:24 UTC), opening a new design issue #19 “Reverse Flow and MOQT Integration” (relay-as-issuer token exchange, possibly reusing REQUEST_UPDATE/request_ok/request_error) and commenting on the standing thibmeu issues #16/#18 with a concrete plan (replace ReasonPhrase with MoQTokenChallenge; explore challenging without closing the session) — the June-29 reactivated Martin Duke “AUTH design team” materializing as tracker work. moq-transport otherwise quiet (no merge; only ianswett’s #1788 iterating). On the impl side it is a tooling/observability-heavy day: quiche’s moqt module posts its first commit since June 24 (Request-ID increment on SubscribeNamespace), moqx runs an afrind-led Prometheus/perf-metrics push (a self-contained live metrics dashboard #479 +833, plus perf-client metrics/jemalloc/logging fixes), moq renames its CLI binary to moq under a unified endpoint grammar (#1985) and opens an MPEG-TS-export dense-PCR cluster, moxygen upstream gains two OPEN afrind qlog/viz PRs (#205/#206), and moqtail lands a subgroup-header bitmask-dispatch fix (#211). The interop runner cuts once (July-1 00:48, 266/80/152/34, at-target 78) — a −5 flaky dip off the June-30 post-expansion high. No new WG revision (transport-18 Day +51); Slack silent (newest June 22, ~10 days); no new MoQ Monthly (#2, May 31); no open wiki issues.

Privacy-pass / auth — Suhas triages the AUTH design-team backlog on the tracker

The auth workstream, dormant on the moq-wg/privacy-pass tracker since Thibault Meunier’s June-12 issue burst, produced its first activity in three weeks — a Suhas Nandakumar triage pass July 1 ~16:00–16:24 UTC, the concrete follow-through on Martin Duke’s June-29 reactivation of the “AUTH design team” mailing-list thread:

  • Issue #19 “Reverse Flow and MOQT Integration” (NEW, suhasHere) — raises the reverse-flow token-exchange question: once a connection is established, how are reverse-flow tokens exchanged, and can new subscriptions get tokens from the relay acting as issuer (rather than round-tripping to the original Privacy Pass issuer)? Suhas floats reusing REQUEST_UPDATE / REQUEST_OK / REQUEST_ERROR to carry it — tying the auth flow back into existing MOQT control messages rather than inventing a carrier.
  • Issue #18 “Specify token challenge and acquisition during regular operation” (thibmeu, June 12) — Suhas comments with a two-part plan: (1) replace the ReasonPhrase carrier with MoQTokenChallenge (the long-standing “no clean challenge carrier in a SETUP-closure reply” problem the wiki has tracked since thibmeu’s 15 in June), and (2) see whether the challenge can be performed without closing the session at all.
  • Issue #16 “Specify retry behavior after auth challenge errors” (thibmeu, June 11) — Suhas notes it is “similar to #18”: once #18’s mechanism lands in MoQT, add supporting text here.

This is the privacy-pass counterpart to the C4M token track and the transport-side auth machinery; the design-team work is now visible as tracker triage rather than only list threads. See moq-privacy-pass, moq-c4m, moq-transport, interim-meetings.

moq-transport — quiet; the read-through backlog still OPEN

No transport merge July 1–2. The only movement is ianswett’s #1788 “SUBSCRIBE_TRACKS Parameters copied to PUBLISH” iterating (July 1 13:50 UTC), still OPEN. The June-30 sharmafb-issue set (#1792/#1793/#1795/#1796/#1798), afrind’s OPEN editorial PRs (#1783 ASCII-safe reason phrase, #1786 mTLS security, #1799 enum extensibility), and the gated Design PRs (Range Filters #1765, DTS/SSTS #1638, fill/fill-fetch/SWITCH_FROM) all stay OPEN — the July-6 gate has not lifted. See moq-transport.

Mailing list — two scheduling threads draw co-chair replies (no new I-D)

Three July-1 list messages, all replies to existing threads (Slack still silent ~10 days; newest is Martin Duke’s June-22 Google-Meet link):

  • Magnus Westerlund + Ali C. Begen “Re: Proposed Virtual Interim dates” (July 1) — replies on Martin Duke’s June-30 thread proposing post-Vienna virtual-interim slots. Co-chair (Westerlund) + Ali Begen weighing in on the recurring ~monthly inter-IETF cadence. See interim-meetings.
  • Suhas Nandakumar “Re: IETF 126 Agenda requests” (July 1) — reply on the Vienna agenda-building thread (sessions July 20/23/24).

No new I-D Action; no weekly GitHub digest this window.

Datatracker — no revision bump

No WG-document or individual-draft revision July 1–2: transport still -18 (Day +51 since 2026-05-12); msf-01, cmsf-01, loc-02, secure-objects-00, c4m-01, privacy-pass-auth-02 unchanged; the June-30 individual drafts ([[moq-lite|draft-lcurley-moq-lite-05]], [[moq-overview|draft-westerlund-moq-overview-00]]) and June-29 [[moq-live-agent-interaction|draft-liu-moq-live-agent-interaction-00]] all unchanged; transport-19 not cut; draft-ietf-moq-dts4moq still 404. interim-2026-moq-18 (July 6, 16:30 UTC) is the only future interim; IETF 126 Vienna sessions scheduled (July 20/23/24).

Implementations — a tooling/observability-heavy day; quiche moqt resumes

  • quiche — the moqt module posts its first commit since June 24: “Increment Request ID on SubscribeNamespace” (1b65043b, July 1 18:39 UTC) — a small correctness fix keeping the Request-ID counter monotonic across SUBSCRIBE_NAMESPACE, resuming the main-branch protocol-tracking after a ~week gap. Still draft-16 on the public relay. See quiche-moq.
  • moqx — an afrind-led Prometheus/perf-metrics push (July 1–2): #479 MERGED (+833/−0, July 2 00:31) “add a self-contained live Prometheus metrics dashboard” — a standalone observability tool; plus #475 (--client-metrics dump client Prometheus .prom), #474 (serialize LoggingConfig), #473 (jemalloc LD_PRELOAD for the perf client), #470 (perf-metrics elapsed/CPU/throughput fix), all MERGED July 1; OPEN: #480 (gmarzot — jemalloc + TLS-terminated stats stack in the published relay image), #478 (widen object-ack-latency histogram tail to 1s), #477 (peterchave — tune auto-regression testing). Two sync-bot moxygen mirrors (#476/#471). See openmoq.
  • moq#1985 MERGED (+1354/−761, July 1 22:04) “moq-cli: unified endpoint grammar (binary renamed to moq)” — a notable UX change collapsing the CLI’s endpoint syntax and renaming the binary to moq; #1984 MERGED default watch-reload to enabled; #1993 MERGED scope relay-bind env vars so the pub client stays a client. New OPEN — an MPEG-TS-export dense-PCR cluster: #1992 windowed TS export with dense uniform PCR (supersedes 1989), #1991 settle the TS export catalog before freezing PSI, plus #1994 (kio poll-driven tokio::Sleep wrapper) and #1996 (moq-cli CORS origins) — refining the moq-mux MPEG-TS export path. See moq-dev.
  • moxygen — the upstream tree gains two OPEN afrind PRs July 1 that pivot to qlog/visualization tooling: #205 “Overhaul MoQ viz: NDJSON input, track-alias reconstruction, no CDN dep” (+1511/−966) and #206 “Wire per-connection QLogger via HQServerTransportFactory::setQLoggerFactory” (+13/−0) — the qlog work (mirrored on moqx #464) surfacing upstream. The June-30/July-1 stats/test PRs (#204/#203/#201/#200/#199) stayed CLOSED-unmerged. See moxygen, openmoq.
  • moqtail#211 MERGED (+12/−18, July 1 13:48) “fix(ts): use bitmask dispatch for subgroup header detection” — a wire-parsing fix using bitmask dispatch to detect subgroup-header type variants, following June-30’s KVP v16-delta fix (#208); plus CI/release plumbing (#209/#212). See moqtail.
  • moq-rs, moq-js, imquic, birneee/quiche_moq, Eyevinn (moqlivemock / moqtransport; warp-player dependabot-only), Moqtopus all quiet this window.

Interop: the runner cuts once — the July-1 00:48:30 UTC cut: 266/80/152/34 (~30.1% pass; at-target 78). Versus the June-30 21:32 post-expansion high (266/85/147/34): matrix/skip/at-target flat, pass −5 (85 → 80), fail +5 (147 → 152) — an ordinary cross-version flaky-variance dip as impl mains churn (the day’s moq-dev binary-rename / TS-export work + moqx/moqtail reshapes), not a regression of working cells. At-target draft-18 holds at 78. See interop-runner.