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

Activity (Sep 27 → Sep 30) — One Monday afternoon settles most of the pre-Seattle logistics: the LOCMAF liaison to MPEG goes out, the Seattle agenda posts, IETF 127 gets three sessions, interim-24 gets minutes, and the chairs open a core-vs-expansion debate on top-N and SSTS. Draft-22 still does not exist.

Nearly everything spec-side happened on Mon Sep-28 between 15:03 and 17:18 UTC. The tracker kept busy without merging, a Quint model found the window’s most interesting protocol bug, and the implementation side moved toward draft-21: OpenMOQ’s moqxr tagged it, while moq-playa and imquic opened PRs. Slack carried no new top-level posts at all, only late replies on two older threads.

The LOCMAF liaison goes to MPEG, and adoption now waits until at least Oct-30

Liaison statement 2285, “IETF MOQ WG intention to adopt work on a low-overhead packaging (LOCMAF) for CMAF media carried over Media Over QUIC Transport”, was posted Sep-28 15:04 UTC (list copy). Westerlund submitted it on Sep-17 and AD Mike Bishop approved it eleven days later. It is from MOQ to ISO/IEC JTC1/SC29/WG3, purpose For action, deadline 2026-10-30. The chairs are the response contacts and Torbjörn Einarsson is the technical contact. The body is the WG’s own framing of LOCMAF:

  • The target case: “CMAF chunk headers (~100 bytes and up) can be as large as or larger than the coded frame itself, which is common for low-bitrate, low-latency audio.”
  • The key assurance: “Critically, LOCMAF does not alter or redefine CMAF.” Reconstruction is decode-equivalent including CENC per-sample metadata, with a canonical byte-identical form for conformance testing.
  • LOCMAF is a packaging layer referenced normatively from CMSF (a locmaf packaging value), and it relies on CMAF, ISOBMFF and CENC.
  • “We plan to await your response before proceeding to a formal WG adoption call.”

This is the step interim-23 promised on Sep-8. The adoption call it gates cannot open before Oct-30, after Seattle. Meanwhile the implementation evidence keeps accumulating: moq-playa merged generic EME in its MSE adapter on Sep-28 (#18), the declared gap in its LOCMAF support, and moqlivemock v0.16.0 / warp-player v0.16.0 added LOCMAF subtitle tracks.

”Draftification”: the chairs reopen where top-N and SSTS live

Duke and Westerlund, Sep-28 16:26 UTC (permalink): “The chairs are going to initiate a consensus call about the status of various proposed MOQT features – should they be in a separate expansion draft, or should they be in the core MOQT draft?” The two features are top-N (PR #1830) and SSTS (wilaw/moqt-ssts). The message takes two things as given: the WG “already has rough consensus that it will complete the work in some form,” and both features are optional because each is behind a Setup option that can be zero. It asks participants to set aside process and timelines and think about “these standards far into the future. Would this be better as one RFC or as multiple RFCs?” The considerations it lists are whether being in core raises the odds of implementation, whether splitting helps or hurts comprehension (“people have asserted both viewpoints”), and whether a smaller RFC is easier to revise if its assumptions prove false. The message does not start the call. Discussion is wanted on-list by Oct-13, the Tuesday of Seattle (“interop time would be a lovely time to have high-bandwidth discussions”), so that meeting time is not spent on it, and the call follows “soon afterwards.”

This is effectively the second poll Law asked for on Sep-21, and it formally reopens the contested IETF-126 call that moved SSTS out of core. Top-N has not been touched on GitHub since Aug-27, and the SSTS draft has never been submitted to the datatracker.

Seattle agenda, IETF 127 sessions, interim-24 minutes

  • Seattle agenda posted (Sep-28 16:33 UTC, agenda-interim-2026-moq-25-moq-01), with no list announcement. Wed Oct-14: URIs (Cullen) · SSTS (Will) · Demo (Yu) · MOQT Issues (Alan/Ian) through the afternoon. Thu Oct-15: Interop Discussion (Mike) · Auth Design Team (Mike) · MOQT Issues including a working lunch · Next Interim Planning · Parking Lot. That is about 7¾ hours of MOQT issues across two days, and no slot for MSF, CMSF, LOC, LOCMAF or catalog. Both agenda requests the wiki had recorded (Jennings’ URIs, Law’s SSTS) got 45 minutes each.
  • IETF 127: three sessions (2h + 2h + 1h), filed by Duke Sep-28 16:32 UTC; AD Mike Bishop approved the third at 17:18. This answers Duke’s Sep-25 two-or-three question.
  • interim-24 minutes posted (Sep-28 15:03 UTC, minutes-interim-2026-moq-24-202609211630), a week after the meeting. They confirm the chatlog-derived record: draft-22 + draft-18 as the Seattle target, pause orthogonal to filter state, and SWITCH_FROM’s unaligned threshold == → >=. They add one new item: a February 2027 hybrid interim aligned with Mile High Video in Denver/Boulder, which Jennings said Cisco might host.
  • Late registration (Sep-28 15:30 UTC, permalink): “You are well past deadline to register … But if you do it right away, you can slip in there.” The Oct-26 virtual interim reached its Sep-30 deadline for concerns with none raised on-list.
  • Still no draft-22: the datatracker has none and the repo’s newest tag is draft-ietf-moq-transport-21. Twelve days before interop opens, the named target is an editor’s copy.

WG tracker: no merges, one formal-methods bug, and review traffic on #1946

moq-transport merged nothing Sep-27 → Sep-30, and neither did any other moq-wg repo. The issues and reviews were substantive, though:

  • #1958: a relay can report a stale Largest Object to a new subscriber when its upstream subscription is paused, so the subscriber never learns it must FETCH. kidq330 found it by generating a Quint model of draft-21, the first formal-methods finding the wiki has seen against MOQT, and reproduced it in a moxygen relay unit test. afrind and Swett agree the text must forbid a possibly-stale value. afrind notes that a relay able to “subscribe upstream to metadata only” would help, which is the INCLUDE_PAYLOAD idea in #1955.
  • #1959 → PR #1960: a standalone FETCH cannot take a relative Location filter (“what does it even mean to say FETCH -4?”), so it becomes REQUEST_ERROR / INVALID_RANGE.
  • #1946 (namespace-discovery restructure): Suhas reviewed it, afrind revised, and Swett re-approved it on Sep-29. One loose end became #1961 on the PUBLISH_SKIPPED reconnect wording.
  • #1953 (Location Filter → enum) and #1954 (Track Name length > 0) each have two approvals. #1954 also has an open objection from Suhas (“why to force that to implementors”). On #1955 afrind prefers keeping the Payload Length and signalling omission in the data plane, “more clearly matches HEAD.”
  • #1857 (group/subgroup-scoped metadata) got an operator use case from Riedl (Pluto TV): ad-break state that a mid-group joiner needs before its first frame, which today goes in a side track “because object 0 is the only other place for it.”
  • msf: no merges. On #211 (LOC→MOQT stream mapping), Curley pushed back that “moq-transport defines that sub-group == stream” and warned against a subgroup per frame. #212 (required track fields per packaging/role) is uncommented.
  • CAT-4-MOQT: new PR #52 (Suhas) defines connection-scoped replay for non-DPoP tokens, so a catreplay=1 token presented at SETUP can be reused for later actions on the same connection.

Datatracker: one individual revision

draft-liu-moq-live-agent-interaction-02 (Alibaba; submitted Sep-27, posted Sep-28) is the only MoQ submission of the window. It adds a Tool Action Authorization section with AUTH_REQUIRED (0x08) and AUTH_RECEIPT (0x09) control signals, so an AI agent asks for per-action user authorization for consequential tool calls (payments, permission changes, bookings). See moq-live-agent-interaction. No WG-document revision: transport-21, loc-04, msf-01, cmsf-01, secure-objects-01, privacy-pass-auth-03 and c4m-01 are all flat. Two tracked individual drafts expire soon: draft-duke-moq-subscribe-rewind-02 on Oct-4 and draft-herz-moq-nmsf-01 on Oct-9.

Slack: two late threads, one of them written by an agent

No new top-level message in #moq, #moq-rs, #moq-interop-runner or anywhere else in the window. Two older threads got replies:

  • afrind’s PUBLISH_DONE question is answered — the text already existed. Steven Riedl (Sep-28): draft-21 §3.4 already defines Stream Count as including “any fill fetch streams,” and moq-dev’s moq-relay counts that way too. afrind: “lol I wrote that text and didn’t remember that I did and I guess my agent didn’t find it either.” Riedl then said the reply was his agent’s (“BTW, this is my agent talking”) and gave the first operator view of fill fetch, noting the fill code in moq-relay is Curley’s: “folding the joining fetch into the SUBSCRIBE means one request, one authorization and one Stream Count, and the fill and the subscription are cut from the same snapshot, so there’s no gap or overlap to reconcile”; for linear channels a current-group fill “is also exactly the join we want.”
  • English in #moq-interop-runner (Sep-29), answering Curley’s Sep-25 request for published conformance results: the data-plane tests he is adding are “meant to be pretty similar to” afrind’s moxygen suite, “but included in the nightly automated test runs.”

Interop: three flat-ish cuts, and draft-14 starts leaving the matrix

CutCellsPassFailSkip
Sep-284752272462
Sep-294752192542
Sep-304752242492

That is net −6 vs Sep-27’s 230 high, with the roster, split (336 · 22 · 117) and target (draft-18) unchanged. Most flips reverse the next night. The one structural change: moqx dropped draft-14 (its image now defaults to [16, 18]; moqx #770), so moq-rs-draft-14 → moqx fails on h3 CONNECT 400 from Sep-29. The registration fix runner #131 and a moxygen equivalent #132 are open and approved. No runner commits since Sep-25; no draft-22 or draft-20 configuration twelve days before Seattle.

Implementations: draft-21 spreads, moq-rs wakes, the Eyevinn stack ships v0.16

  • Draft-21: openmoq/moqxr v0.4.0 (Sep-28; #45, +11,954/−231) makes draft-21 selectable. moq-playa #20 (draft-21 subscriber/player/publisher, +2,603/−265) and imquic #38 (v20/v21, +1,704/−455) are open. moq-dev tests span drafts 14–22.
  • moq-rs had its first merge in a month: passthrough FETCH (#236, itzmanish, +2,946/−61). A cache-free relay now proxies a standalone FETCH upstream, which is the rule Will Law stated on Sep-18.
  • Eyevinn: moqlivemock v0.16.0/v0.16.1, warp-player v0.16.0 and moqtransport v0.14.0 (Sep-29/30). moqtransport applies draft-18 §7.2 stream tiering over quic-go v0.62.0, and moqlivemock schedules catalog 0 / audio+subtitles 64 / video 128. Experimental paint-model subtitles (stpc/wvtc) and LOCMAF subtitle tracks arrive, played by warp-player, and v0.16.1 fixes Safari WebTransport.
  • shaka-player: #10665 moves its moqlivemock demo assets to mlm/… tuples. That resolves the open question the wiki raised on Sep-18: the v0.15.0 tuple change had broken them, with DOES_NOT_EXIST. The same PR fixes the draft-18 REQUEST_ERROR field order. #10663 adds MSF_COMPRESSION (GZIP, property 0x78). v5.3.0 is still unreleased.
  • libquicr: draft-18 SUBSCRIBE_NAMESPACE on main (#959) plus a picoquic performance pass (#944). main now uses ALPN moqt-18.
  • quiche: one commit, the draft-18 GOAWAY format (parser/framer only). moxygen: 16 commits of relay/session robustness (use-after-free, subgroup reset on cancel, moqtest cadence), no draft changes. moqtail: three fixes (PUBLISH forward state, objects before FETCH_OK, duplicate subgroup headers found with moqtopus point-cloud streaming).
  • moq-dev: ~220 commits. It released moq-relay v0.15.8 et al. on Sep-28, with a breaking auth-parity change (#4319) queued for relay 0.16.0. Also: an in-repo draft-lcurley-moq-active-count extension on dev (#4268), a lite-07 redesign (64-bit leading-ones varints; SUBSCRIBE ranges replacing FETCH), MPEG-TS multi-program import, and quest plans aimed explicitly at “Seattle interop, Oct 12.” Its moxygen-conformance line (a midpoint default priority, OBJECT_DATAGRAM, IETF FETCH of whole groups) is still on a quest branch, not main.
  • Branch-only: aiomoqt 0.12.0 (draft-20 + publisher priority, PR #40); aiopquic 0.5.0 WT-teardown fixes. Silent: moq-js, birneee/quiche_moq, Eyevinn/locmaf.

Activity (Sep 22 → Sep 27) — Luke Curley drops four brand-new individual drafts in one day at the IETF-127 cutoff, the draft-19 consensus call closes without controversy, and the moq-transport merge drought finally breaks after fifteen days — while Slack goes almost completely silent.

The window’s centre of gravity moved off the WG tracker and onto the datatracker. On Sep-24, ahead of the IETF 127 submission cutoff, Luke Curley submitted four new individual drafts plus three revisions in a single batch — the largest single-day expansion of the MoQ individual-draft surface the wiki has recorded. Meanwhile Martin Duke closed the draft-19 consensus call (Sep-23) with a one-line message and no recorded objections, and the moq-transport editors merged their first PR in fifteen days. Slack #moq carried exactly one top-level message in six days.

The Sep-24 individual-draft batch — four new documents, all Curley

All submitted 2026-09-24, all authored by L. Curley. Abstracts below are quoted from the published text:

  • draft-lcurley-moq-e2ee-00 — MoQ End-to-End Encryption Profile. “Authorized publishers and subscribers share a 32-byte broadcast secret out of band. Each publisher instance mints an epoch and publishes under an opaque broadcast path ending in it. HKDF-SHA-256 derives opaque physical track names and per-track AES-128-GCM keys from the secret and the epoch; grouped frames and datagrams use separate key domains.” It is deliberately not moq-secure-objects: encryption binds to epochs rather than Key IDs, there are no in-band headers, the nonce doubles as an identity counter, and datagram and grouped-frame key domains are separate. This is the profile moq-dev has been implementing in-tree since mid-September — the code preceded the draft.
  • draft-lcurley-moq-solicit-00 — MoQ Solicit Extension. A SOLICIT setup option letting an endpoint declare that advertisements to it must be solicited first: declare nothing and you keep receiving unsolicited PUBLISH_NAMESPACE (the status quo for a peer unaware of the extension); declare it once during setup and the peer withholds advertisements, answering only SUBSCRIBE_NAMESPACE. Directly adjacent to the namespace-discovery restructuring in flight as #1946.
  • draft-lcurley-moq-flate-00 — DEFLATE Compressed Tracks for MoQ. “Each subgroup is one raw DEFLATE stream, sync flushed at each object boundary, so every object stays self-delimited while later objects compress against the earlier ones in the subgroup.” The subgroup boundary is what keeps a dropped group from corrupting the rest — compression history stays inside the subgroup.
  • draft-lcurley-moq-mpegts-00 — MoQ MPEG-TS Catalog Extension. An mpegts catalog section recording “what demultiplexing an MPEG-2 Transport Stream into a MoQ broadcast would otherwise lose”: each track’s PID and PMT descriptors, program identity, SI tables, and a carriage record for every elementary stream the publisher did not decode — enough to reassemble the original multiplex. Note this lands the same week as [[moq-msfts|draft-gregoire-moq-msfts-01]], a separate MPEG-TS-over-MOQT packaging draft, revised the same day.

Revisions in the same batch: [[moq-hang|draft-lcurley-moq-hang-03]], [[moq-lite|draft-lcurley-moq-lite-06]], [[moq-msfts|draft-gregoire-moq-msfts-01]] (all Sep-24), and [[moq-cluster|draft-lcurley-moq-cluster-01]] (Sep-21, just before the window).

Still no draft-22. draft-ietf-moq-transport stands at -21 (Sep-8). interim-24 named draft-22 as a Seattle interop target on Sep-21; six days later the document does not exist. Curiously, moq-dev merged a commit referencing lite-07 on Sep-27 — three days after lite-06 was published.

WG: the draft-19 consensus call closes, and the merge drought breaks

  • Draft-19 consensus call concluded (Duke, Sep-23 16:23 PDT, archive). The message is one sentence — “This concludes the consensus call on draft-19 changes” — closing a call that opened Sep-4 and ran through Sep-18, which had invited the community to “file issues in github on any concerns” about the draft-18 → draft-19 delta. No objections are recorded in the closing message. Worth noting what this formally blesses: draft-19 is the revision that introduced Range Filters (#1765) — the feature the contested IETF-126 consensus call had slated to move out of the core document.
  • First moq-transport merge in fifteen days: #1956 “Add Track Namespace to list of value encodings” (ianswett) merged Sep-26 17:13 UTC, closing issue #1942 (TRACK_NAMESPACE_PREFIX format is not defined for Control Message Parameters). The previous merge was #1940 on Sep-11 — so the “ninth consecutive no-merge window” recorded on Sep-22 ran to roughly a fortnight before breaking.
  • Swett converted the Sep-20/21 triage into four PRs, all opened Sep-24/25, all still OPEN:
    • #1953 Change Location Filter to an enum (+22/−26) — fixes #1937, the item Jennings and afrind had called “a no brainer” at interim-24.
    • #1954 Require Track Names to have a length > 0 (+4/−2) — fixes #1636, mirroring the existing Track Namespace Tuple rule; a zero-length Track Name becomes a PROTOCOL_VIOLATION except where otherwise specified (e.g. namespace-scoped REDIRECT).
    • #1955 Add INCLUDE_PAYLOAD parameter (+21/−5) — fixes #1933. A new INCLUDE_PAYLOAD parameter (0x36) for SUBSCRIBE / FETCH / SUBSCRIBE_TRACKS, letting a subscriber ask for object headers and metadata without payloads, plus a new Object Payload Omitted (0x1) Object Status so publishers can say so explicitly. This is the “HTTP-HEAD analogy” from the Sep-21 discussion, now in wire form.
    • #1957 Make DEFAULT PUBLISHER PRIORITY a Message Parameter (+24/−16) — fixes #1270, and is explicitly offered as an alternative to #1770, the updatable-default-publisher-priority PR the interim-21 minutes leaned toward rejecting as “error-prone … probably not needed.”
  • Issues closed: #1232 (meaning of Forward State), #1859 (equal-priority interleave vs. serial — open since Aug-26), #1942. New issue: #1952 “REQUEST_ID validation is still kinda broken.”
  • #1890 (Refactor Namespace Discovery section) was closed unmerged, superseded by #1946 “Restructure Publisher and Namespace Discovery, Give Subscribe Tracks its own…”, which remains open.
  • msf saw four active PRs and no merges: #211 (LOC→MOQT stream mapping via packagingMetadata, fixes #200), #212 (required track fields per (packaging, role), fixes #139), #210 (refactor track namespace and name definitions), #190 (Event Timeline track Property). All other moq-wg repos were silent.

Seattle: agenda requests open until Sep-29, and the chairs are sizing the sessions

Duke to the list (Sep-25 12:30 PDT, archive): “The agenda requests for Seattle are still open till 9/29.” The operative detail is that he and Magnus must file session requests and are deciding between two or three sessions — and “if we have three sessions, one is virtually guaranteed to be the last one on Friday.” He asks for requests “preferably by Monday” (Sep-28) to size the ask. The two known requests remain Jennings’s MoQT URI (30–60 min) and Law’s SSTS (conditioned on the promised second poll running first).

Slack: near-total silence, and one fill-fetch question

#moq carried one top-level message across the whole window — afrind, Sep-26 02:25 CEST: “Does PUBLISH_DONE’s Stream Count include fill fetch streams?”, answering himself sixteen hours later: “I tried ‘no’ but now I’m trying ‘yes’ and I think that’s going to be better.” Small, but it is a genuine gap in draft-20’s fill-fetch text — PUBLISH_DONE’s Stream Count predates fill fetch streams, and the draft does not say whether they count. No issue filed yet.

The real conversation happened in #moq-interop-runner on Sep-25, where Curley asked afrind whether the moxygen conformance results are “published anywhere … is there an automated report or something you can link to?” Answer: no, not at this time — you download a prebuilt moxygen tree from OpenMOQ and run it yourself. The exchange then turned concrete:

  • moq-dev failed the smoke test on both QUIC and WebTransport against draft-18, so the suite refused to run at all: “If you can’t get one object through with all the bits correct it refuses to run the whole suite.”
  • Cause, per Curley: “I don’t implement publisher priority on the wire yet.” afrind’s rule: “I don’t require that you implement the priority algorithm (yet, those tests are coming, bwahaha), but the value needs to come through.”
  • Curley’s ask is a reporting one, and it echoes what the nightly runner already does: “it would be dope if there was a full matrix of scenarios and failures, not a 0/1 result … exact namespace versus prefix, publish vs subscribe.”
  • afrind’s matrix has grown to ten sections (adding 9. FETCH Ranges and 10. Joining FETCH since the Sep-2 hackathon’s eight). Scores: moxygen 75/76 QUIC, 74/76 WT; moqx 68/76, 70/76; Nokia moqt-nr 41/76, 52/76; moq-rs 51/76 on WT (QUIC no-subscribe); imquic 25/76; moq-dev, moqtail and stitcher-moq all “no subscribe.” Section 10 is failing for everyone — afrind’s own two relays included, and he flagged it: “nice that my two relays also failed. I think the tool has some pending fixes.”

Interop: the matrix grows to 475 on a new implementation, and pass sets a high

quic-zig joined the matrix — registered via runner #127 (endel), merged Sep-22 21:41 UTC — taking the matrix from 437 → 475 cells. It enrolled at the target, which is why at-target rose by exactly the matrix growth (298 → 336).

CutCellsPassFailSkip
Sep-23475216258—
Sep-24475208265—
Sep-25475219254—
Sep-26475222251—
Sep-274752302432

Sep-27’s 230 pass is an all-time high in absolute terms (previous: 204 on Sep-19), though the pass rate is ~48% on a bigger matrix. Split on Sep-27: at-target draft-18 336 · ahead 22 · behind 117. Nineteen implementations now appear: aiomoqt, imquic, moq-dev-js, moq-dev-rs, moq-go, moq-playa, moq-rs, moq-rs-draft-14, moq-rs-draft-18, moq5, moqlivemock, moqtopus, moqx, moxygen, quic-zig, stitcher-moq, xquic, xquic-draft-18.

The runner still targets draft-18, six days after interim-24 named draft-18 + draft-22. It did take a preparatory step: a Sep-22 docs commit “reference interop target draft rather than pinning draft 18”, plus runner #129 (spec/data-plane-foundation) merged Sep-25 — the data-plane test scaffolding English flagged back in August.

Implementations: quiche runs a draft-18 conformance sprint; moq-dev and moxygen keep pace

  • quiche (moqt) — 11 commits, the most focused work in the window. A deliberate draft-18 conformance pass: Implement draft-18 PADDING streams and datagrams, Update Stream Error codes to MOQT draft-18, Enforce draft-18 namespace restrictions, Rename MoQT SetupParameters to SetupOptions, Return session error if a request ID is reused in a SUBSCRIBE, or has the wrong parity, Unknown Uni Stream types are a protocol error, Handle unknown Mandatory To Implement Track Properties, plus msan/uninitialised-value fixes in the parser and session tests.
  • moq-dev — 100+ commits (the API page cap; four releases on Sep-26: moq-relay v0.15.7, moq-gst v0.4.7, obs-moq v0.6.5 / v0.6.6 / v0.6.7). Substantive items: the SETUP AUTHORIZATION TOKEN option now reaches the verifier (#4278), delay/jitter detection on JSON and binary tracks (#4270), encoders advertising catalog delay (#4260), close()/end() to end a broadcast in every language binding (#4031, #4259), Opus pre-skip and gain carried through dOps (#4294), and lite-07 stream-count tails (#4224) — already past the lite-06 published three days earlier.
  • moxygen — 36 commits. Draft-18 correctness and relay hardening: Stop sending MAX_REQUEST_ID in draft 18 setup, Reject duplicate aliases before completing SUBSCRIBE_OK, Normalize request ID in relay REQUEST_UPDATE error responses, Prevent stale MoQ unknown-alias waiters, Retire publishers explicitly at session close (#237); plus mlog work — a SamplingMLoggerFactory for probabilistic session sampling (#238) and Stop MLog from retaining object payload bodies.
  • libquicr — 4 commits, all build/platform, no protocol work: Add windows compatibility (#933), Add to macos/win, Run tests in parallel, Repo cleanup (#952). Notable only as a portability push — libquicr is broadening past Linux.
  • moqtail — 1 commit, but a substantive one: “rename warp to cmsf and make catalog version string” (Sep-24). The last of the legacy warp naming is gone from the catalog path in favour of CMSF, and the catalog version becomes a string rather than a numeric. A small compatibility break for anything still emitting the old name.
  • Housekeeping only: aiomoqt (1 commit — benchmark runbook, #39; its v0.11.1 release was Sep-22, already counted), imquic (1 commit — a documentation date fix).
  • Silent all window: moq-rs, moq-js, birneee/quiche_moq, moqlivemock, warp-player, moqtransport, moq-playa.

Activity (Sep 19 → Sep 22) — interim-24 resets the Seattle interop target to draft-18 + draft-22, the issue tracker wakes from an eight-window sleep, and aiomoqt 0.11.1 ships the relay FETCH the Sep-18 design note asked for.

This section covers a four-day window because the wiki’s nightly update job failed to run on Sep 20, 21 and 22 (expired credentials, not a source outage); it was swept manually on Sep-22. The window’s durable event is a WG decision: at the Sep-21 interim (interim-2026-moq-24) the group declared draft-22 an interop target alongside draft-18, superseding the draft-20 target set at interim-23 two weeks earlier. On the implementation side, moq shipped moqt-22 the same day, aiomoqt cut v0.11.1 with relay FETCH and namespace discovery — the exact gap Will Law and Aman Sharma flagged on Sep 17–18 — and moq-playa merged its LOCMAF player, making LOCMAF’s third implementation family a merged one. The WG repos stayed merge-free for a ninth straight window, but the tracker came alive: 19 comments and a new issue across Sep 20–21.

interim-24 (Sep 21): the interop target becomes draft-18 + draft-22

Minutes are not yet posted — the datatracker meeting page carries only the agenda, chair slides, an “MoQT issues and PRs 9/21” deck and the chatlog. So the record below is drawn from the chatlog plus Martin Duke’s Slack post minutes after the session (Sep-21 19:06 CEST), and should be re-checked when Westerlund uploads the minutes (interim-23’s landed one day later).

  • Interop target = draft-22 and draft-18. Duke, in #moq: “In the meeting just now, we declared draft-22 (along with -18) to be the Interop target. -22 is functionally identical to -20 except the ALPN, so there should be no practical difference.” This supersedes interim-23’s draft-20 decision (Yes 7 / No 5 / No opinion 4 poll) and restores the interim-21 framing in which draft-22 is the next official target. Note the sequencing: draft-22 is not published yet — the datatracker’s newest moq-transport revision is still -21 (Sep 8) — so the target currently names a revision that exists only as editors’ copy. The nightly interop-runner still targets draft-18; nothing in its config has moved.
  • #1636 empty namespace: the room leaned to a tuple must carry at least one byte, but a namespace may have zero tuples (Mike English, +1 Swett); a reserved .all wildcard was rejected (Jennings: no need for it “no matter what way we go on this”).
  • #1825 Location-Filter vs pause: Will Law — “I would expect an unpause to resume the prior filter state. Filter should be orthogonal to pause state” — with several +1s. Jennings’s follow-up on the issue is explicit that the meeting redirected it: “See sept 21 meeting for what we decided to try next on this.”
  • SWITCH_FROM: resetting mid-object was accepted; hard vs soft modes were worked through; and the exact-(=9) versus at-least-(>=9) Start Group question was pointed at a flag or enum rather than a bare comparison. Luke Curley: “you always want to switch down based on the subscriber’s current/next group, not the publisher’s current/next group, as race conditions can only cause bad outcomes.”
  • PUBLISH_NAMESPACE: afrind confirmed PUBLISH_NAMESPACE <> remains valid as a default upstream, and that “waiting for SUB_TRACKS for publish defeats the reason we added publish” — i.e. the 0.5-RTT saving for publisher clients is the point of the message.
  • No LOCMAF adoption discussion appears in the chatlog; the adoption call stays parked behind the MPEG liaison agreed at interim-23.
  • Logistics: Duke pointed people at the Seattle interim registration; Jennings floated that Cisco may be able to host in Boulder for a future meeting.

The tracker wakes: a Sunday triage pass, and #1937 converges on an enum

No moq-wg repo merged anything in the window — the ninth consecutive no-merge window — but Jennings spent Sep-20 working the backlog (seven issues in ~45 minutes) and afrind answered each on Sep-21, mostly in the hours before and after the interim:

  • #1937 — Location Filter Length → enum reached something close to consensus in-thread: Jennings asked the extensibility question (“do we want filters that are not MTU?”), afrind answered that he expects implementations to extend it, Swett agreed an enum “is potentially a bit easier to extend”, and Jennings closed with “the more I think about this, the more I think this is a no brainer that enum is a better way to spell this.”
  • #1933 — metadata-only subscribe: Jennings asked whether a filter would do; afrind’s answer sharpened the ask into an analogy — “like an HTTP HEAD request”, Objects with a real Payload Length but no payload, which no filter can express today — and added a top-N fan-in use case (1,000 publishers, e.g. security cameras, and a subscriber that wants the top 5). Will Law pushed back on the word: “metadata” is not a MOQT term of art; prefer “Send Object properties only” / “empty Object payloads”.
  • #1857 — group-level metadata: Jennings noted the field practice of hanging group metadata off object 0; afrind confirmed that is all the draft offers today and that the WG has been “running with” it.
  • #1941 picked up a Design label from Jennings, prompting a useful clarification from afrind: Design/Editorial labels are for PRs (they tell editors how long to hold a PR open), not for issues.
  • New issue #1951 (Jennings, Sep-20): UNSUPPORTED_EXTENSION does not say which extension is unsupported. afrind is wary of another error-code-dependent field (cf. #1837) and suggested the answer may fall out of how #1941 resolves.
  • Also touched: #1352 (how to restore the original filter when forwarding is turned back on), #1073, #1948 and #1949 (afrind: drop the latter unless a concrete use case appears).

After the meeting: the SWITCH_FROM > vs >= thread

afrind opened a dedicated Slack thread the same evening (Sep-21 20:02 CEST) — “hard-mode SWITCH_FROM > vs >= Start Group” — and worked it through with Gwendal Simon over ten replies. The concrete hazard: B’s Largest Group = 10 and SWITCH_FROM Start Group = 11, but the publisher skips group 11 and the relay only ever sees 12 — as specified, the algorithm is stuck. Relaxing step 4 to “an object in any group >= Start Group” creates the mirror hazard when Start Group is behind Current Group (the switch executes on an arbitrary object in group 10 even though the fill range cannot be delivered until the relay has the start of group 9). Simon’s proposal is definitional rather than mechanical — make Start_Group “the first group that is ready to be delivered according to the filtering algorithm and the precedence rules of FILL_FETCH” — and he argues hard mode is unaffected either way, with soft mode’s pause deferred until the group before Start_Group is delivered. afrind’s reading is that the difference matters most in hard mode, where you want media that can be rendered from A or B but not both.

Seattle agenda requests: MoQT URI and sender-side track switching

Two substantive requests landed against Duke’s Sep-29 deadline for the Oct 12–15 Seattle in-person meeting:

  • Jennings (Sep-20), MoQT URI — 30–60 min: moving URI, DNS resolution and TLS certificate matching into a separate draft (the subject of the long-open PR #1909), what breaks over raw QUIC, what breaks over WebTransport, the current handling of fragments, and mDNS-based local relay discovery with Google Cast and AirPlay as the motivating use cases.
  • Will Law (Sep-21), Sender-Side Track Switching — 10 min + 30 min: Law notes a prior poll showed majority support for adopting SSTS and asks the chairs to run the second poll promised in Vienna — whether SSTS belongs in MOQT or as an extension point — before the meeting, so materials can be prepared accordingly.

Separately, Jennings thanked the editors on the Draft-21 thread for the retrospective-branch method (a draft-20 branch with only structural changes replayed, plus a normalized sentence-comparison diff: 15 sentences removed as obsolete, 31 added, 20 modified) — “that has made this all much easier to review.”

Implementations: aiomoqt answers the FETCH note, moq-playa lands LOCMAF, moq-dev ships moqt-22

  • aiomoqt v0.11.1 (Sep-22 00:50 UTC; PR #38, +2,351/−333 across 45 files) closes the loop opened on Sep 17–18, when Sharma reported “your relay doesn’t handle FETCH” and Will Law answered with the design rule that a cacheless relay should issue its own upstream FETCH. The release adds exactly that — relay FETCH plus namespace discovery — and three protocol corrections worth recording: PUBLISH_DONE now ends a subscription rather than the session; the default FETCH handler rejects with NOT_SUPPORTED instead of sending a FETCH_OK it never follows with a data stream (§10.13); and object timestamps move to the loc-04 TIMESTAMP (0x10, wall-clock µs) from the private 0x20, with receivers reading both. Sharma verified on Sep-21 — “The FETCH fixes all check out, and SUBSCRIBE_NAMESPACE now delivers NAMESPACE” — with one gap left open: observers never receive NAMESPACE_DONE, neither on withdrawal nor on publisher session close.
  • moq-playa merged its LOCMAF player (PR #15, merged Sep-19 08:29 UTC, +9,801/−67 across 242 files), so LOCMAF’s third implementation family is now on main rather than in review. Follow-ups through the window: LOC-04 support (Sep-20), LOCMAF raw-chunk sample validation, and a player fix keeping request IDs separate from track aliases (Sep-21).
  • moq ran 100 commits in the window (16 · 19 · 48 · 17 by day), with the Sep-21 spike overlapping the interim. Durable items: moqt-22 support in moq-net (#3858) — shipped the same day the WG named -22 a target; moq-e2ee-00 implemented with epoch-scoped generations (#3863); the QUIC layer consolidated onto a single backend and then onto moq-noq, moq.dev’s own fork of noq (#3811, #3866); a finalized libmoq release API (#3819); and a run of GPU video work (Vulkan image import into CUDA, GPU colour conversion, NVENC). No new release tags — the Sep-17 set (moq-relay v0.14.18 et al.) still stands.
  • moqtail added SUBSCRIBE_NAMESPACE and completed SUBSCRIBE_TRACKS on the client (#390) and fixed empty-FETCH handling (#385), both Sep-20; no release (relay@0.14.1 from July stands).
  • moqlivemock v0.15.1 (Sep-21 09:06 UTC) — a correctness fix that matters for long assets (loop duration computed in uint64) plus an altGroups naming cleanup.
  • moxygen handled FETCH in the MoQProxy (Sep-21) and normalized empty object payloads in Edgetee (Sep-22). libquicr made datagram receive immutable (Sep-21).
  • Quiet through the whole window: moq-rs, moq-js, quiche (no quiche/quic/moqt commits since its Sep-16–18 sprint), imquic, warp-player, moqtransport, birneee/quiche_moq, moq-interop-runner, and shaka-player (two commits, neither MSF/MoQ).

Interop: a new high on Sep-19, then three flat cuts

Four nightlies ran, all on the 437-cell matrix with 3 skips and an at-target / ahead / behind split that never moved (298 / 22 / 117):

Cut (UTC)PassFailΔ pass
2026-09-19 00:25:07204230+1 (a new high for the 437-cell matrix)
2026-09-20 00:28:21201233−3
2026-09-21 00:29:04200234−1
2026-09-22 00:26:27201233+1

The Sep-19 cut extends the aiomoqt v0.11.0 gain recorded on Sep-18 (+8) by one more cell, then the matrix drifts back inside its familiar ±1–3 band — i.e. the v0.11.0 step is real and has held, and the three cuts after it are flake, not decay. Two things the numbers do not yet show: v0.11.1 shipped after the Sep-22 cut (00:50 UTC vs 00:26 UTC), so its relay-FETCH work reaches the matrix no earlier than the Sep-23 nightly; and the runner still targets draft-18, so interim-24’s draft-22 decision has yet to appear in the nightly configuration at all. quiche-moq continues to pass zero cells.

On the runner’s design, Sharma raised a structural question in #moq (Sep-22): should the runner move to a QUIC-interop-style external validator that decrypts a capture using SSLKEYLOGFILE, rather than leaving correctness checking to the test client — “may not be sustainable if we want more complex tests.” afrind’s reply named the sharper version of the risk: implementations “may not implement the validation correctly and falsely report success” — a point Lucas Pardue punctuated by linking the volkswagen defeat-device joke repo.

Activity (Sep 18 → Sep 19) — a quiet consolidation window whose one durable, measurable event is on the interop matrix: the Sep-18 nightly is the first cut to exercise aiomoqt v0.11.0 across the board, and it moved +8 to 203 pass — the largest single-day gain since the Sep-12 matrix growth and the first move outside the ±1–3 within-band flake range of the prior ten cuts, i.e. plausibly the v0.11.0 effect Riedl predicted. On the impl side quiche completed NEW_GROUP_REQUEST (a third commit allowing it on subscription update incl. PUBLISH_OK) and adopted the draft-18 TrackProperties naming; moq ran another ~30-PR day (an @moq/auth Key/KeySet reshape + moq-net refactors, no release). The WG side is idle for an eighth straight no-merge window; datatracker (transport-21 stands), IETF list (newest still Duke’s Sep-16 note), and MoQ Monthly (#2) are all flat; no open wiki issues. Slack’s lone in-window item is Will Law’s design note that a cacheless relay should issue its own upstream FETCH.

The window has no WG/spec event that lands: no PRs merged and no issues opened across all seven moq-wg repos (moq-transport/msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) — an eighth straight no-WG-merge window. Datatracker: no WG-doc revision (transport-21 stands, no -22) and no individual-draft revision (qlog-events-08, the Sep-17 bump, is the newest submission). IETF list: no new human message since Duke’s Sep-16 “Future Virtual Interims” (verified: control-ID 404, real permalink 200; no new weekly digest yet). No new MoQ Monthly (still #2); no open wiki issues.

Interop: Sep-18 nightly +8 to 203 — the first cut with aiomoqt v0.11.0 across the board

  • The runner published one new cut — 2026-09-18 00:25:31 UTC — 437 / 203 / 231 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass +8 (195 → 203), fail −8. This is the first nightly to pull aiomoqt v0.11.0 (shipped Sep-17 14:13 UTC, after the Sep-17 00:26 nightly), exactly the cut Riedl flagged — “since the nightly pulls latest, tonight’s matrix should be the first with 0.11 across the board.” The +8 is the largest single-day pass gain since the Sep-12 matrix growth and the first move outside the ±1–3 within-band flake range of the prior ten cuts — so it is plausibly the v0.11.0 effect, not flake (aiomoqt registers as one client + two relay endpoints, so a genuine conformance fix propagates to several cells at once). The caveat: the at-target / ahead / behind split is byte-identical (298 / 22 / 117) to Sep-17, so the movement is 8 cells flipping fail→pass within the draft-18 band, not any version-negotiation or roster change. The runner still targets draft-18; stitcher-moq’s draft-20 cells stay skipped (still the only draft-20 endpoint). No Sep-19 cut at check time. See interop-runner.

Implementations: google/quiche completes NEW_GROUP_REQUEST; adopts draft-18 TrackProperties naming

  • quiche — two moqt commits Sep-18 following the Sep-16–17 draft-18 sprint. f44c3550c “Allow NEW_GROUP_REQUEST on subscription update (including PUBLISH_OK)” (19:52 UTC) is a third NEW_GROUP_REQUEST commit on top of Sep-17’s part-1 (7f1f920d) + relay-publisher wiring (cffebe23) — extending the dynamic-groups mechanism onto the subscription-update / PUBLISH_OK path, the exact surface the WG is refining in moq-transport #1947 (“NEW_GROUP_REQUEST might be in REQUEST_UPDATE even without DYNAMIC_GROUPS”) and #1948. 213deeca6 “Rename TrackExtensions to TrackProperties, to conform to MOQT draft-18 terminology” (18:57 UTC) tracks the extensions→track-properties reshape — the same rename behind moq-transport #1950 (“Rename UNSUPPORTED_EXTENSION to UNSUPPORTED_MANDATORY_TRACK_PROPERTY”). Both marked “Not in production.” Folded into quiche-moq Recent Highlights (the NEW_GROUP_REQUEST bullet updated in place).

Implementations: moq-dev’s firehose continues — @moq/auth Key/KeySet reshape + moq-net refactors (no release)

  • moq — ~30 PRs merged Sep-18, no release train (the Sep-17 tags — moq-relay v0.14.18 et al. — stand). Two dominant streams, both continuations of already-recorded workstreams (so log-only, not an entity-page edit per Entity Pages Are Reference, Not Logs):
    • @moq/auth reshape on top of the Sep-15 moq-auth/CAT reference-server landing: reshape around Key and KeySet (#3773, +471/−506), one type per contract concept (#3776), end a live session when a re-check no longer grants (#3774) + push a re-check to live sessions (#3778, +1767/−213) — i.e. dynamic auth revalidation / session revocation — plus ReloadDelay/ReloadStatus (#3775).
    • moq-net refactors: announce prefixes on every wire; consumers read paths (#3770, +1408/−2739), slim the moq-net public surface (#3779), reprice PUBLISH_NAMESPACE with REQUEST_UPDATE (#3762, +1244/−213), fold session placeholders into PROTOCOL_VIOLATION (#3755); libmoq demand/dynamic-track-requests (#3748, +1346/−131), default QUIC backend to noq (#3757), an ffi shutdown fix (#3766), and a wall of quest(m2) planning-doc merges. New OPEN: #3769 (price cluster links by measurement, David von Wrangel), #3780, #3784, #3786 (add a Muse Spark PR reviewer alongside Codex). New user-question issue #3759 “How to publish stream to MediaMTX MoQ over QUIC?“.
  • Other impl churn (log-only): libquicr merged three subgroup reset/close hardening PRs — #947 immediate reset on incomplete subgroup, #946 serialize reset/close with enqueue, #945 rethrow over throw-sliced (+ #944 “Performance updates”, Tim Evens, OPEN). moqlivemock opened issue #143 “Enable longer (>50s clips) to be used” (peterchave; #142 SCTE-35 still OPEN). shaka-player was busy Sep-18 but on non-MoQ work only (AV1 transmuxer #10603, DRM-teardown fix, release tags 5.2.11 / 5.1.24) — no new LOCMAF/MoQ PRs beyond the Sep-17 batch already logged. aiomoqt’s 0.11.1 front #38 stays OPEN (no merge). Quiet: moq-rs (#235 OPEN), moq-js, moqtail (#374/#388 OPEN), imquic, moxygen (#228 OPEN), moqtransport (v0.13.0 stands), birneee/quiche_moq, moq-playa (#15 LOCMAF OPEN), moq-interop-runner (#127 OPEN).

Slack: Will Law on cacheless relays and FETCH

  • The only new #moq message in-window is Will Law (Akamai, Sep-18 10:41 CEST), in the aiomoqt v0.11.0 thread, responding to Aman Sharma’s Sep-17 note that aiomoqt’s ersatz-relay doesn’t handle FETCH (and Marzot’s “not a real relay… no cache” reply): “If a relay doesn’t have a cache, then when it receives a FETCH it should go upstream and issue its own FETCH against the original publisher.” A concise statement of the expected relay-without-cache FETCH behaviour — the upstream-FETCH-proxy pattern mlmrel already implements (serve FETCH from the group cache when covered, proxy upstream otherwise) and the gap aiomoqt’s #38 is written to close. #moq-rs / #moq-interop-runner silent in-window.

Activity (Sep 17 → Sep 18) — after a run of quiet windows the implementation side reactivated broadly on Sep-17: aiomoqt shipped its long-in-flight v0.11.0 final (plus aiopquic v0.4.0) — the Slack headline, with Steven Riedl reporting a clean 6/6 raw QUIC + 6/6 WebTransport run against the stitcher-moq relay; moq’s firehose resumed (~30 merges + a release train, moq-relay v0.14.18) with a pre-draft-20 joining-FETCH push and a wall of breaking renames; and quiche ran a draft-18 sprint that adds NEW_GROUP_REQUEST support. On the WG side issue traffic woke up — three new moq-transport issues Sep-17 (#1948/#1949/#1950) — but still nothing merged across all seven moq-wg repos (a seventh straight no-merge window). The one spec-doc event is an individual-draft revision: Lucas Pardue’s draft-pardue-moq-qlog-moq-events-08 (Sep-17, first bump since rev-07 on Jul-20). Interop ticks +3 within-band (195), a tenth straight flake — and the Sep-17 nightly predates the v0.11.0 release, so the first cut with 0.11 is still to come.

The window has no WG/spec event that lands: no PRs merged across all seven moq-wg repos (moq-transport/msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) — a seventh straight no-WG-merge window — but moq-transport issue traffic resumed after the recent lull (three new issues below). Datatracker: no WG-doc revision (transport-21 stands, no -22); one individual-draft revision, draft-pardue-moq-qlog-moq-events-08 (below). The interim-24 agenda doc stays at rev-01 with no minutes. IETF list: no new human message since Duke’s Sep-16 “Future Virtual Interims” (verified: control-ID 404, real permalink 200). No new MoQ Monthly (still #2); no open wiki issues. Slack #moq carried genuine substance this window — the aiomoqt v0.11.0 release thread (below).

Implementations: aiomoqt ships v0.11.0 final (+ aiopquic v0.4.0); Riedl’s 6/6 interop report

  • aiomoqt v0.11.0 — final (release, Sep-17 14:13 UTC; PR #36 merged Sep-17 13:38, +20,524/−3,093, Marzot) shipping alongside aiopquic v0.4.0 (release, Sep-17 12:04 UTC; PR #25 merged). This is the first final 0.11.0 after a months-long rc chain (rc3 Sep-3 → rc6 Sep-13), and it finally lands the long-in-flight SUBSCRIBE_OK vi64 decode fix (the RFC-9000-varint-vs-LOC-vi64 bug Steven Riedl hit in August) in a tagged release. Marzot announced it on #moq (Sep-17 16:22 CEST): “Drafts 14, 16, 18 general purpose MOQ client/server package w/ examples and utilities. Numerous performance improvements, conformance fixes and added media pipeline support w/ MSF/CMSF LOC/CMAF/TS.” Recorded as a durable milestone on aiomoqt.
  • Steven Riedl (Pluto TV) ran the ghcr latest (the 14:13Z build) through the interop-runner harness against Pluto’s stitcher-moq / moq-relay endpoints: 6/6 on raw QUIC and 6/6 on WebTransport (the probe pins draft-16; DRAFT=18 also 6/6). Tests 4 and 6 pass via aiomoqt’s COMPAT path around moq-relay’s non-spec 404 (a moq-dev-side quirk, not aiomoqt). “Since the nightly pulls latest, tonight’s matrix should be the first with 0.11 across the board.” He also flagged an entrypoint draft-pin bug — DRAFT=draft-18 (the runner registry’s spelling) makes moq_interop_client exit 2 (invalid parse_draft_spec value: 'draft-18', no TAP) and MOQT_DRAFT=draft-18 is silently ignored; only DRAFT=18 / --draft 18 work — now tracked as aiomoqt issue #37 (the runner side, interop-runner#127-era DRAFT= handling, is unchanged). And Aman Sharma noted aiomoqt’s ersatz-relay doesn’t handle FETCH and SUBSCRIBE_NAMESPACE may be incomplete; Marzot reiterated it is “not a real relay” (no cache — a vehicle for exercising more APIs/scenarios), and a fix front is already OPEN as PR #38 “0.11.1: relay FETCH + namespace discovery, loc-04 timestamps, protocol fixes” (Sep-18).

Implementations: moq-dev’s firehose resumes — release train + pre-draft-20 joining + breaking renames

  • moq — back to a firehose after its one-window pause (~30 PRs merged Sep-17, Curley + AWS/Cloudflare contributors). A release train cut Sep-17: moq-relay v0.14.18 (first relay bump since v0.14.17 on Sep-14), moq-ffi v0.3.19, moq-cli v0.11.2, moq-gst v0.3.12, libmoq v0.5.16 — release PR #3680 merged (Sep-17 10:26); a fresh release PR #3730 is already OPEN. The two OPEN breaking PRs the prior window flagged both merged: #3705 (rename ConnectionStatsReader → connection::Monitor) and #3706 (client address on conn/ws spans), joined by #3672 (scope origins with pattern unions) and #3670 (public modules + typed cluster peer config, merged Sep-18 00:02).
  • Durable-ish substance among the churn: a pre-draft-20 joining path — #3727 “join pre-draft-20 peers via Largest Object + FETCH” (+1091/−222) continues the Sep-15 #3701 quest so a draft-20 endpoint can still join older peers; an MPEG-TS catalog extension carried over MSF (#3720, +928/−115); group-scoped DEFLATE written up as an in-repo IETF draft (#3715 “draft(flate): group-scoped DEFLATE as an IETF draft” — the compression experiment now on the author-in-repo path the moq-archive/moq-cluster drafts took; folded into moq-dev Recent Highlights); Hang timelines that only move forward (#3711, +957/−1211); and JSON/binary config parity (#3718). Plus a wall of breaking renames/cleanups: one name per announce/request/origin (#3725), rank anonymous hop chains last (#3724), drop MoqCancel for Go context.Context (#3723), embedder admits sessions in-process (#3735). New OPEN issues: #3731 (media-aware TS lane vs MSFTS ES-level carriage — six decisions) and #3717 (e2ee: drop the .e2ee suffix and /<epoch> path segment). Two PRs (#3728/#3729) add docs noting the in-repo drafts are AI-generated from the implementation. Day-by-day detail stays in log; only the DEFLATE-as-draft milestone was folded into the entity page.

Implementations: google/quiche moqt draft-18 sprint adds NEW_GROUP_REQUEST support

  • quiche — a six-commit draft-18 sprint Sep-17 on top of the Sep-16 FETCH→bidi move: SUBSCRIBE_OK and REQUEST_OK updated to draft-18 (81f59114), and — the new capability — NEW_GROUP_REQUEST support added in two parts (7f1f920d “part 1” + cffebe23 wiring it into MoqtRelayTrackPublisher), plus a cache-non-empty guard when pulling from the outgoing queue (8734d018) and two OSS-build fixes (95b12df5, ae779d8d). NEW_GROUP_REQUEST is the dynamic-groups mechanism the WG is actively refining (see #1948/#1950 below); quiche is now implementing it (all marked “Not in production”). Folded into quiche-moq Recent Highlights.
  • Other impl activity (log-only): libquicr #943 “Add max stream ID config” merged (Sep-17 15:50; #942 flush-TX-on-subgroup-abandon + #939 OPEN); warp-player #194 “accept MSF catalog version ‘1’, fix namespace-prefix examples” merged (Sep-17 10:37, +75/−19 — a small v0.15.0 follow-up); moqtail opened #388 “Support draft-ietf-moq-msf-01” (OPEN; #374 SSTS still OPEN); moqlivemock opened #142 “Add SCTE-35 support” (OPEN). Quiet: moq-rs (#235 CAT-auth OPEN), moq-js, imquic, moxygen (#228 OPEN), moqtransport (v0.13.0 stands), birneee/quiche_moq, moq-interop-runner (#127 quic-zig OPEN).

WG: moq-transport issue traffic resumes; still no merge

  • After the recent lull, Martin Duke opened three new moq-transport issues on Sep-17, all OPEN, all small clarification/design corners — the kind of item destined for the interim-24 agenda:
    • #1950 “Rename UNSUPPORTED_EXTENSION to UNSUPPORTED_MANDATORY_TRACK_PROPERTY” — an error-code rename following the extensions→track-properties reshape.
    • #1949 “Chunked encoding for objects when size is not known initially?” — whether an object can be sent before its total size is known.
    • #1948 “NEW_GROUP_REQUEST with a value of Group ID far in the future” — bounding the requested Group ID (the same NEW_GROUP_REQUEST surface quiche just implemented, above). This joins Duke’s Sep-15 #1947.
  • No PRs merged in any moq-wg repo; the carried OPEN cluster (#1946 editorial restructure, #1915, #1876, msf #210) is untouched. Recorded here, not on moq-transport (nothing landed).

Datatracker: qlog-moq-events revised to -08

  • draft-pardue-moq-qlog-moq-events-08 (submitted Sep-17 20:10 UTC) — Lucas Pardue (Cloudflare) et al.’s qlog event definitions individual I-D advanced from rev-07 (Jul-20) to rev-08, a ~2-month update. Still an individual (unadopted) draft; it defines qlog/mlog event schemas for MoQ diagnostics — related to the afrind/Miniero “mlog vs dedicated events” thread from August. The index individual-draft tracking is bumped from -06 to -08.

Interop: Sep-17 nightly +3 within-band; tenth straight flake

  • The runner published one new cut — 2026-09-17 00:26:09 UTC — 437 / 195 / 239 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass +3 (192 → 195), fail −3, with the at-target / ahead / behind split byte-identical (298 / 22 / 117) to the Sep-16 cut — three cells flipping fail→pass within the existing draft-18 band, a tenth straight within-band flake. This nightly ran at 00:26 UTC, before aiomoqt v0.11.0 shipped (14:13 UTC), so the +3 is flake, not the v0.11.0 effect — per Riedl the first matrix with 0.11 across the board will be the Sep-18 cut (not yet run at check time). The runner still targets draft-18; stitcher-moq’s draft-20 cells stay skipped (still the only draft-20 endpoint). See interop-runner.

Activity (Sep 16 → Sep 17) — the durable headline is on the Eyevinn stack: moqlivemock and warp-player both cut v0.15.0 the evening of Sep-16, making the mlmpub → mlmrel → warp-player chain work through a relay for the first time by putting real Track Namespace tuples on the wire and switching namespace discovery from push (unsolicited PUBLISH_NAMESPACE) to pull (SUBSCRIBE_NAMESPACE) — and moqlivemock’s mlmrel relay now ships in a tagged release passing all six moq-interop-runner relay cases. Secondary: quiche’s moqt module reawakens (FETCH moved onto a bidirectional stream — first moqt commit since Sep-4); Martin Duke proposes Oct-26 as the sole virtual interim between the Seattle and San Francisco meetings (concerns to the chairs by Sep-30); the Sep-16 interop nightly ticks −2 within-band (192), a ninth straight flake. moq’s firehose paused (no merge, no release, two OPEN PRs); the WG side is idle for a sixth straight window.

The window has no WG/spec event that lands: no PRs merged and no issues opened across all seven moq-wg repos (moq-transport/msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) since the prior update — a sixth straight no-WG-merge window. Duke’s Sep-15 issue #1947 and the carried OPEN cluster (#1946 editorial restructure, #1915, #1876/#1875, #1939/#1941) saw only comment activity; msf #210 (Will Law, track-namespace refactor) stays OPEN. Datatracker: no new WG-doc or individual-draft revision (transport-21 + conditional-filtering-01 stand); the interim-24 agenda doc stays at rev-01. But the sweep surfaced two individual I-Ds the prior update missed — Aman Sharma’s draft-sharma-moq-atomic-subscription-bundles-00 and draft-sharma-moq-cache-signaling-00 (both -00, submitted Sep-15; below). IETF list: one new human thread — Duke’s “Future Virtual Interims” (below). No new MoQ Monthly (still #2); no open wiki issues. Slack #moq silent in-window.

Implementations: the Eyevinn stack learns to work through a relay — tuple namespaces + pull-based discovery (v0.15.0)

  • moqlivemock v0.15.0 (release, Sep-16 19:11 UTC; PR #141 “feat!: real namespace tuples and pull-based namespace discovery”, merged Sep-16 19:10 UTC, +740/−210, tobbee) and warp-player v0.15.0 (release, Sep-16 19:14 UTC; PR #193 “discover namespaces with SUBSCRIBE_NAMESPACE and encode them as tuples”, merged Sep-16 19:13 UTC, +486/−43) landed together, fixing the reason mlmpub → mlmrel → warp-player did not work through a relay. Two root causes, both real, both breaking wire changes:
    • (1) Namespaces are now ordered tuples, not one slash-joined field. mlmpub had announced cmsf/clear as a single Track Namespace Field containing a slash; per draft-18 §2.4.1 a namespace is an ordered set of fields matched a field at a time (§8.4), so that single field matched the prefix ("cmsf") never — a probe against the relay showed ("cmsf") → 0 matches. The content namespaces are now ("mlm","cmsf","clear") and friends, with -nsprefix (default mlm) naming the leading publisher field so one SUBSCRIBE_NAMESPACE covers a whole publisher on a shared relay and two mlmpub instances on one relay can be told apart. ("moq-test","interop") is deliberately never prefixed — the interop runner addresses it by that exact tuple. A new internal.NamespaceTuple/NamespaceString mapping keeps the slash-joined string form (the MSF catalog namespace member, the -namespace flag, log lines) and the wire tuple from drifting; the CMSF catalog now carries the namespace actually announced, prefix included. warp-player mirrors this — namespaceFields() splits at the wire boundary and it fixed a matching Writer.encodeTuple bug (a field count of N followed by a single joined value that no peer could parse).
    • (2) Discovery is now pull-based (SUBSCRIBE_NAMESPACE), not push (unsolicited PUBLISH_NAMESPACE). mlmpub had opened a PUBLISH_NAMESPACE toward every session that connected; per §6.1 SUBSCRIBE_NAMESPACE is the in-band discovery mechanism and §8.4 obliges a relay to forward PUBLISH_NAMESPACE only to matching (i.e. asking) subscribers. Now mlmpub answers SUBSCRIBE_NAMESPACE and pushes nothing, mlmrel announces only to its namespace subscribers and queries its own upstream (HandleUpstream — without which a relay-behind-relay left the downstream relay with an empty table), and mlmsub -discover asks (falling back to listening on NOT_SUPPORTED). warp-player now sends SUBSCRIBE_NAMESPACE on connect (keeping the passive listener as a fallback, saying so on screen when nothing arrives within 5 s) and adds a “Namespace prefixes” field (comma-separated, blank = all; one SUBSCRIBE_NAMESPACE per prefix since §10.18 rejects overlapping prefixes with PREFIX_OVERLAP); a request-ID collision (the player counted Request IDs separately from the client) that surfaced the moment SUBSCRIBE_NAMESPACE spent one was fixed. Testing also caught an mlmrel bug — a dead upstream went unnoticed for 3+ minutes because a session’s context isn’t cancelled when the connection dies — so relay.Handle now watches the connection and -upstream keeps a 10 s keepalive.
    • mlmrel now ships in a tagged release. The relay that was untagged through the Sep-1→2 hardening (v0.14.0 stood) is now part of v0.15.0, described in the release notes as accepting pub/sub over QUIC and WebTransport on one port, preserving group/subgroup/object IDs, priorities, statuses, object properties and the END_OF_GROUP bit, ending subgroups downstream exactly as upstream (FIN→FIN, reset→reset via moqtransport v0.12.0 SubgroupEndEvents), serving FETCHes from its group cache when covered and proxying otherwise, and holding a SUBSCRIBE for an unannounced namespace for the subscriber’s RENDEZVOUS_TIMEOUT (§10.2.6) — “All six moq-interop-runner relay test cases pass.” Recorded as a durable milestone on moqlivemock (namespace table + Recent Highlights) and on warp-player.

Implementations: google/quiche moqt reawakens; moq-dev pauses

  • quiche — FETCH moved onto a bidirectional stream (commit bc4e3dd9, Sep-16 22:08 UTC, “Move FETCH to a bidi stream as part of draft-18 update”) — the first moqt-module commit since Sep-4, resuming the long-running draft-18 wire migration that has been peeling control/data messages (SUBSCRIBE, TRACK_STATUS, PUBLISH_NAMESPACE, and the control channel itself) onto dedicated streams. It also removes request_id from FETCH_OK / REQUEST_ERROR to align the callback structs with the wire messages (marked “Not in production”). Folded into quiche-moq Recent Highlights.
  • moq — the firehose paused. No merges and no release since Sep-14 (moq-relay v0.14.17 / moq-ffi v0.3.18 stand). Two new OPEN breaking PRs only: #3705 “feat(tokio)!: rename ConnectionStatsReader to connection::Monitor” (Curley, Sep-16 21:40) and #3706 “feat(moq-tokio)!: surface the client’s address/identity in Request and relay logs” (Guillaume Quintard, Sep-16 21:47). A genuine tempo drop after two weeks of daily merges.
  • Quiet: moq-rs (#235 CAT-auth OPEN), moq-js, moqtail (#374 OPEN), imquic, moxygen (#232 merged Sep-16 00:15, already logged; #228 OPEN), libquicr (#939 OPEN, #941 merged Sep-15 already logged), aiomoqt (#36 OPEN), moqtransport (v0.13.0 stands), birneee/quiche_moq, moq-interop-runner (#127 quic-zig OPEN).

WG logistics: Duke proposes Oct-26 as the lone Seattle→SF virtual interim

  • Martin Duke, “[Moq] Future Virtual Interims” (list, Sep-16 14:21 UTC, permalink, verified HTTP 200 + DKIM; a fabricated-ID control returned 404) — the chairs propose 26 October as the sole virtual interim date between the Seattle (Oct 12–15) and San Francisco meetings, asking anyone with concerns to tell the chairs no later than Sep-30. A forward-calendar logistics note, not a consensus call. This is the first human list message since the Sep-15 pair (afrind’s interim-24 agenda + Duke’s Seattle call-for-items); recorded on interim-meetings.

Datatracker: two Aman Sharma individual drafts surface at -00 (Sep-15, prior-window catch-up)

  • Aman Sharma (U. Michigan) posted two individual I-Ds on Sep-15 that the prior update’s datatracker line missed (they were submitted ~5 h before that update’s cutoff), both formalizing extension ideas he had floated on Slack the week before:
    • draft-sharma-moq-atomic-subscription-bundles-00 “Atomic Subscription Bundles for Media over QUIC Transport” (submitted Sep-15 20:25 UTC) — the write-up of the atomic-subscription-bundles idea behind moq-transport issue #1860 (Aman’s Sep-10 #moq note “an extension for atomic subscription bundles”).
    • draft-sharma-moq-cache-signaling-00 “Cache Signaling for Media over QUIC Transport” (submitted Sep-15 19:37 UTC) — the cache status / cache availability extension he pitched Sep-9 on #moq (moq-transport issue #1907). Both are individual, unadopted, single-author drafts; added to the index individual-drafts tracking.

Interop: Sep-16 nightly −2 within-band; ninth straight flake

  • The runner published one new cut — 2026-09-16 00:25:16 UTC — 437 / 192 / 242 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass −2 (194 → 192), fail +2, with the at-target / ahead / behind split byte-identical (298 / 22 / 117) to the Sep-15 cut — two cells flapping pass→fail within the existing draft-18 band, a ninth straight within-band flake. The runner still targets draft-18; stitcher-moq’s draft-20 cells stay skipped (still the only draft-20 endpoint). No Sep-17 cut at check time. See interop-runner.

Slack: quiet in-window

  • No new #moq message Sep-16/17 — the newest item is still Miniero’s Sep-14 12:23 CEST reply confirming the imquic FETCH object-ordering fix (logged two entries ago). #moq-rs / #moq-interop-runner silent in-window. (Note: the Sep-16 Eyevinn v0.15.0 wave was not announced on Slack — it surfaced only on GitHub.)

Activity (Sep 15 → Sep 16) — a fifth straight window with no WG merge; the durable substance is again on the moq-dev side, and this window it is a follow-through: the in-band moq-auth / Common Access Token reference-server sprint that was OPEN last window LANDS on main (#3684/#3686/#3688, all merged in the early hours of Sep-15), and the E2EE redesign lands too — the moq-e2ee-00 path-epoch reshape (#3690) merges. New Sep-15 moq-dev work bumps the vendored moq-cluster draft to -01 (#3702, in-repo only) plus a pre-draft-20 joining-FETCH quest (#3701) and an m1 dev-API/release-gate audit (#3700). On the WG side nothing merges — one new issue (#1947, Duke), zero PRs across all seven moq-wg repos. The one genuinely new WG-adjacent activity is meeting logistics: afrind posts the interim-24 (Sep-21) draft agenda (with the matching agenda-interim-2026-moq-24-moq-01 doc landing on the datatracker Sep-15 23:57 UTC) and Duke opens a call for agenda items for the Oct 12–15 Seattle in-person meeting — the first human IETF-list traffic since Westerlund’s Sep-9 minutes announcement. libquicr has a busy merge day. Slack silent; interop ticks −3 within-band (194), an eighth straight within-band flake.

The window has no WG/spec event that lands: moq-transport saw no PRs and no merges — the only new item is issue #1947 “NEW_GROUP_REQUEST might be in REQUEST_UPDATE even without DYNAMIC_GROUPS” (Martin Duke, opened Sep-15 20:47 UTC, OPEN) — a small editorial corner case that immediately became an interim-24 agenda item. The carry-over OPEN cluster (#1946 editorial restructure, #1915, #1876/#1875, #1939/#1941, #1942/#1943) is untouched, and the sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were quiet. Datatracker: no WG-doc revision (transport-21 stands) and no individual-draft revision (conditional-filtering rev-01 stands); the one new doc is the interim-24 agenda (below). No new MoQ Monthly (#2); no open wiki issues.

WG logistics: the interim-24 (Sep-21) agenda is posted; Duke calls for Seattle agenda items

  • afrind, “[Moq] Draft Agenda for moq interim 9/21” (list, Sep-15 22:56 UTC, permalink, verified HTTP 200 + Meta/pps DKIM) — the draft agenda for interim-2026-moq-24 (the fourth Vienna→Seattle virtual session, Sep-21 16:30–18:00 UTC), matched by the datatracker doc agenda-interim-2026-moq-24-moq-01 (rev-01, submitted Sep-15 23:57 UTC). Agenda items: Draft-21 update & planning; update on #1825; SWITCH_FROM; #1636 empty namespace; #1857 subgroup/group-level properties; #1933 option to subscribe to metadata only; #1941 TRACK_STATUS and Mandatory-to-Understand; and #1947 ignore-unsupported-NEW_GROUP_REQUEST-in-REQUEST_UPDATE (the issue Duke opened the same day). Recorded on interim-meetings.
  • Martin Duke, “[Moq] Call for agenda items: Seattle In-person meeting” (list, Sep-15 20:52 UTC, permalink, verified HTTP 200 + DKIM) — soliciting topics for the Oct 12–15 Seattle hybrid interim (F5 Tower). A logistics solicitation, not a consensus call. These two are the first human IETF-list messages since Westerlund’s Sep-9 minutes announcement (the only intervening list item was the Sep-13 automated “Weekly github digest” bot post).

Implementations: moq-dev’s in-band auth sprint lands; the E2EE reshape merges; the cluster draft goes -01

  • moq — the moq-auth / CAT reference server lands on main. The sprint the prior entry recorded as a wall of OPEN PRs merged in the early hours of Sep-15: #3684 “moq-auth and @moq/auth own the contract and the token” (merged Sep-15 01:41 UTC, +3839/−3446), #3686 “moq auth serve is the reference auth server” (merged Sep-15 02:20 UTC, +1135/−88), and #3688 “admit every session through a moq-auth lease” (merged Sep-15 03:48 UTC, +2153/−7319 — a big net deletion swapping the old auth path for the lease model). So the in-band CAT reference server is now on main — crossing the “revisit if it lands” bar the prior entry set, so it is promoted to a durable moq-dev Recent Highlights milestone (folded into the security bullet). Same in-band-auth theme as moq-rs’s still-OPEN CAT #235 and moq-transport’s Sep-9 #1927.
  • The E2EE redesign merges. #3690 “docs(e2ee): moq-e2ee-00 with a path epoch, plus the core reshape quests” (merged Sep-15 02:28 UTC, +1452/−106) lands the moq-e2ee-00 path-epoch reset the prior window recorded as OPEN. So the E2EE profile reshape is now on main (the Rust moq-e2ee-01 core stays, but the profile is reset toward the -00 path-epoch shape); the moq-dev E2EE bullet is updated in place.
  • New Sep-15 work. #3702 “revise the cluster draft to -01 and plan its implementation” (merged Sep-15 04:10 UTC, +170/−17) bumps the vendored [[moq-cluster|draft-lcurley-moq-cluster]] to -01 in-repo — note this is a repo-internal draft revision; the datatracker document stays at -00 (not yet submitted), so index is unchanged. It lands alongside afrind’s moq-cluster review batch #3693–#3698 (setup-option parity, one-dimensional RELAY_COST, HOP_PATH length, multi-publisher namespaces, REQUEST_UPDATE cost — all closed quickly). Also merged: #3701 “joining FETCH for pre-draft-20 peers” quest (+72) and #3700 “audit the dev API and plan the release gates” m1 quest (+566/−66). Closed-unmerged: #3699 (expire cached groups in order), #3703 (gate embed-test UDP-port helper to Linux). The breaking-branch #3672 (scope origins with pattern unions) / #3670 (public modules + typed cluster peer config) stay OPEN. No new release — moq-relay v0.14.17 (Sep-14) stands; release PR #3680 still open.
  • libquicr — a busy merge day (Rich Logan / Tim Evens / GhostofCookie): the tick-service fix #935 “Fix tick service default” finally merged (Sep-15 18:05 UTC, +27/−20 — OPEN since Sep-11), plus #936 (config for all cc algs, +34/−7), #938 (move shutdown status), #940 (picoquic bump), and #941 (move fetch eval first). #937 closed-unmerged (superseded by #940). #939 “Remove shared bytes for received data” (+899/−894) stays OPEN — a material receive-buffer refactor in review.
  • moxygen: #232 “Resync with internal repo” merged Sep-16 00:15 UTC (+88/−31, sharmafb); #231 closed-unmerged (superseded dup). #228 (afrind, keep a publisher in pubTracks_ until its data streams end) still OPEN.
  • Quiet: moq-rs (CAT-auth #235 still OPEN), moq-js, quiche (moqt subdir last commit Sep-4), moqtail (Sender-Side Track Switching #374 OPEN, no movement), imquic, aiomoqt (#36 long-standing OPEN branch, no merge), moqtransport, moqlivemock, warp-player, birneee/quiche_moq, moq-interop-runner (#127 quic-zig still OPEN).

Interop: Sep-15 nightly −3 within-band; eighth straight flake

  • The runner published one new cut — 2026-09-15 00:27:01 UTC — 437 / 194 / 240 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass −3 (197 → 194), fail +3, with the at-target / ahead / behind split byte-identical (298 / 22 / 117) to the Sep-14 cut — three cells flapping pass→fail within the existing draft-18 band, an eighth straight within-band flake since the Sep-12 roster growth. The runner still targets draft-18; the stitcher-moq draft-20 cells stay skipped (still the only draft-20 endpoint). No Sep-16 cut at check time. See interop-runner.

Slack: quiet in-window

  • No new #moq message Sep-15/16 — the newest item is still Miniero’s Sep-14 12:23 CEST reply confirming the imquic FETCH object-ordering fix (logged in the prior entry). #moq-rs / #moq-js / #moq-interop-runner all silent in-window.

Activity (Sep 14 → Sep 15) — a fourth straight window with no WG merge; the durable substance is again all on the moq-dev side, and this window it is an in-band-auth pivot. moq-dev cuts a Sep-14 release train (moq-relay v0.14.17 + moq-ffi v0.3.18 — the first relay bump since v0.14.15 on Sep-2) and opens a large new moq-auth / Common Access Token reference-server sprint (#3686 “moq auth serve”, +5015/−3765, OPEN; #3684/#3688 OPEN; planning quests #3689 “plan CAT support” + #3682 merged). At the same time its E2EE workstream reshapes: the TypeScript moq-e2ee-01 core (#3663) and the versioned token-claims API (#3676) are both closed unmerged Sep-14, and a moq-e2ee-00 path-epoch / core-reshape (#3690) opens. On the WG side nothing merges — afrind opens one OPEN editorial-restructure PR (#1946). The window’s one spec-doc fact is a new individual-draft revision — Nokia’s Conditional Range Filters draft is renamed and bumped to draft-yuyou-moq-conditional-filtering-01 (posted Sep-14). Slack: Miniero confirms the imquic FETCH object-ordering fix. Interop ticks +1 within-band (197).

The window has no WG/spec event that lands: moq-transport saw no merges — the only new PR is #1946 “Restructure Publisher and Namespace Discovery, Give Subscribe Tracks it’s own section” (afrind, opened Sep-14 20:43 UTC, +229/−190, OPEN), a pure editorial restructure in the same draft-21/22 reorganization vein — Namespace Prefix Matching gets its own section, SUBSCRIBE_TRACKS is split into its own section, per-message behaviour is hoisted out of the five namespace-message sections, Publishing now precedes Subscribing, and a publisher→relay→subscriber ladder diagram is added (its own sentence-diff reports 2343/2379 sentences unchanged, i.e. navigational). No wire change; recorded here, not on moq-transport (nothing merged). Martin Duke’s older #1637 “What does MOQT do without bidi stream credit?” saw new activity (Sep-14). The carry-over OPEN cluster (#1915, #1876, #1939/#1941, #1942/#1943) is untouched, #1944/#1945 stay CLOSED-unmerged, and the sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were quiet. IETF list: flat — no new human message since the Sep-13 automated “Weekly github digest” bot post. Datatracker: no WG-doc revision (transport-21 stands), but one individual-draft revision (below). interim-24 (Sep-21) has no minutes/agenda docs yet. No new MoQ Monthly (#2); no open wiki issues.

Datatracker: Nokia’s Conditional Range Filters draft renamed + bumped to -01

  • draft-yuyou-moq-conditional-filtering-01 (posted 2026-09-14, submitted Sep-13) — Yu You (Nokia) et al.’s Conditional Range Filters individual I-D advanced a revision. Two things happened together: the draft was renamed from draft-yuyou-conditional-filtering to draft-yuyou-moq-conditional-filtering (inserting the WG’s -moq- naming convention — the rename actually landed at rev-00 of the new name on Aug-26, which the wiki hadn’t captured), and it is now at rev-01. The new name formally replaces the original draft-yuyou-conditional-filtering-00 (Aug-17). Still a four-author Nokia-led individual draft (Yu You, Serhan Gül, Ali C. Begen, WG co-chair Zaheduzzaman Sarker), not adopted; the mechanism is unchanged in substance (RANGE_FILTER_CONDITION + PRIOR_SUBGROUP_ID_GAP). Recorded on moq-conditional-filtering and index.

Implementations: moq-dev’s auth pivot — a release train + a moq-auth/CAT reference-server sprint; the E2EE profile reshapes

  • moq — a Sep-14 release train. PR #3550 “chore: release” (merged Sep-14 18:16 UTC) cut a fresh batch: moq-relay v0.14.17 (first relay bump since v0.14.15 on Sep-2), moq-ffi v0.3.18, moq-cli v0.11.1, moq-token-cli v0.5.48, libmoq v0.5.15, moq-gst v0.3.11, obs-moq v0.5.15 (hang 0.20.12 on the JS side). A follow-up release PR #3680 is pending.
  • New direction — an in-band moq-auth / Common Access Token reference server. The dominant new theme is a set of large OPEN PRs building a reference auth server: #3686 “feat(auth): moq auth serve reference auth server” (+5015/−3765), #3684 “moq-auth and @moq/auth own the contract+token” (+3843/−3446), and #3688 “admit every session through a moq-auth lease” (+1891/−7248), seeded by merged planning quests #3689 “plan Common Access Token (CAT) support” (+281/−6) and #3682 “plan the auth server line on dev”. This is the same in-band-auth theme as moq-rs’s still-OPEN CAT bearer-auth #235 and moq-transport’s Sep-9 #1927 SETUP auth-token tightening — moq-dev now building a full reference server around CAT. Mostly OPEN, so recorded here rather than as a durable moq-dev milestone yet.
  • The E2EE profile reshapes rather than extends. One window after the Rust moq-e2ee-01 core landed (#3665, Sep-14 00:01, prior entry), the TypeScript moq-e2ee-01 core #3663 was closed unmerged (Sep-14 23:37, +2511/−24) and the versioned v0/v1 token-claims API #3676 was also closed unmerged, while #3690 “docs(e2ee): moq-e2ee-00 with a path epoch, plus the core reshape quest” (+1368/−106, OPEN) proposes a moq-e2ee-00 reset with a path epoch and a core-reshape quest. So the E2EE effort is being redesigned (the Rust -01 core stays in main, but the TS core is dropped and the profile reworked toward a -00 path-epoch shape) — the moq-dev Recent Highlights E2EE bullet is updated in place to reflect this.
  • Follow-ons that landed Sep-14: #3638 “feat(relay)!: own listeners and workers for embedders” (+541/−161, merged — was OPEN), #3674 “feat(libmoq)!: select decoded pixel format/size from C” (+669/−62, merged), #3671 “feat(ffi)!: replace MoqAudioCodec enum with opus() object”, #3679 (moq-gst connection statistics, bgreenway), plus a rustls 0.23.45 bump for RUSTSEC-2026-0285 (#3685) and assorted CI/quest housekeeping.
  • libquicr: #913 “Stream closure cleanup” merged Sep-14 14:27 UTC (+426/−57, Rich Logan); #937 (bump picoquic), #936 (config for all cc algs), and #935 (tick-service) stay OPEN.
  • moqtail: #374 “Sender-Side Track Switching” (Alperen Fatih Zengin, +2036/−34, OPEN, active Sep-14) — the SSTS work continuing; switch-from #386 + empty-FETCH #385 unchanged.
  • Quiet: moq-rs (CAT-auth #235 still OPEN, no change), moq-js, quiche (moqt last commit Sep-4), imquic (repo quiet; the FETCH fix below is a live-relay change), moxygen (#228 OPEN), aiomoqt, moqtransport, moqlivemock, warp-player (dependabot only), birneee/quiche_moq, moq-interop-runner (#127 quic-zig still OPEN).

Interop: Sep-14 nightly +1 within-band; no roster change

  • The runner published one new cut — 2026-09-14 00:28:25 UTC — 437 / 197 / 237 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass +1 (196 → 197), fail −1, with the at-target / ahead / behind split byte-identical (298 / 22 / 117) to the Sep-13 cut — one cell flipping fail→pass within the existing draft-18 band, a seventh straight within-band flake since the Sep-12 roster growth. The runner still targets draft-18; the stitcher-moq draft-20 cells stay skipped (still the only draft-20 endpoint). No Sep-15 cut at check time. See interop-runner.

Slack: Miniero confirms the imquic FETCH object-ordering fix

  • One #moq item in-window: Lorenzo Miniero (Sep-14 12:23 CEST, in the relay-conformance-sweep thread) replied to Aman Sharma — “Apologies for the late reply … this should be fixed now!” — closing out the imquic FETCH object-ordering bug Aman reported Sep-8 (a FETCH response must deliver a group’s objects in numerical order; imquic had been replaying them in arrival order because it wasn’t sorting packets when preparing FETCH objects) and that Miniero had deferred “tomorrow.” A small conformance close-out on the live lminiero.it:9000 relay (Miniero’s claim; not yet re-verified by Aman). #moq-rs / #moq-js / #moq-interop-runner silent in-window.

Activity (Sep 13 → Sep 14) — a third straight quiet-WG window whose durable substance is entirely on the moq-dev side: the moq-e2ee-01 end-to-end-encryption workstream graduates from a profile into shipping code — the Rust core lands (#3665, +3381/−23, the window’s biggest PR) and a TypeScript core follows (#3663, OPEN) on top of the Sep-12 profile+shared-vectors (#3629). Alongside it moq-dev merges a wildcard/pattern-routing + relay-clustering wave (#3649/#3648/#3647 + moq-room #3634 + Connection-recovery #3636). On the WG side nothing merges — only two failed AI-rebase PRs (#1944/#1945, both CLOSED-unmerged) on Ian Swett’s live “make Track Alias a SUBSCRIBE_OK parameter” rework (#1875/#1876). Slack, the IETF list, and the datatracker are flat; interop ticks −3 within-band (196).

The window has no WG/spec event that lands: moq-transport saw no merges — the only new PRs were #1944 “RFC: Make Track Alias a Parameter returned in SUBSCRIBE_OK (#1876 redux)” and #1945 “Resolve merge conflicts from PR #1876” (Ian Swett, both Sep-13 ~22:12 UTC, both CLOSED-unmerged with +0/−0 — auto-created by the Jules AI agent, which “created a new branch” instead of resolving the rebase, so both were abandoned). The live design thread behind them is #1875 “Forcing SUBSCRIBE to always use Track Alias is becoming complex” (Swett, OPEN) — the proposal to move the Track Alias back to a SUBSCRIBE_OK-returned parameter (reviving #1876); no code has landed, so it is recorded here, not on moq-transport. The carry-over OPEN clarification cluster (#1915, #1939/#1941, #1942/#1943) saw no new activity, and the sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were quiet. Slack #moq carried nothing new (newest is still Aman Sharma’s Sep-10 atomic-bundles note, already logged); sibling channels empty. IETF list: the only new message is the Sep-13 automated “Weekly github digest” bot post — no new human thread since Westerlund’s Sep-9 minutes announcement. Datatracker: no new draft revision (transport-21 stands; all docs flat). No new MoQ Monthly (#2); no open wiki issues.

Implementations: the moq-e2ee-01 encryption workstream graduates into shipping code; wildcard routing + relay clustering land

  • moq — end-to-end encryption is now a sustained cross-language workstream, not a single planning PR. Following the Sep-12 #3629 “add the moq-e2ee-01 profile and shared vectors” (+1726/−40, logged in the prior entry), the actual implementations landed: #3665 “feat(e2ee): add the Rust moq-e2ee-01 core” (merged Sep-14 00:01 UTC, +3381/−23 — the window’s largest PR) and #3663 “feat(e2ee): add TypeScript moq-e2ee-01 core” (+2511/−24, OPEN Sep-13). The prior entry flagged the profile as “worth watching whether it graduates into a sustained E2EE workstream” — it now has (profile + Rust core shipped + TS core in flight, with shared test vectors signalling cross-impl interop intent), so this window it is promoted to a durable moq-dev Recent Highlights milestone.
  • Wildcard/pattern routing + relay clustering (all kixelated, merged Sep-13): #3649 “advertise wildcard routes with Pattern events” (breaking, +2085/−843), #3648 “mesh CLI and relay LAN peers through Cluster” (+1227/−1234), #3647 “make reader group and frame limits explicit” (breaking, +928/−339), and docs #3661 “path patterns and wildcard advertisements”. OPEN follow-ons: #3672 (scope origins with pattern unions), #3670 (typed cluster peer config with symmetric cost), #3657 (expose a broadcast’s route count) — continuing the moq-cluster relay-mesh direction.
  • Carry-over OPEN work landed: #3634 “extract hang.live conferencing into @moq/room and moq-room” (merged Sep-13, +2649/−107) and #3636 “recover a Connection by replacing its URL after auth failure” (merged Sep-13, +353/−155); the embedder-owned-listeners #3638 stays OPEN. New OPEN Sep-14 planning/FFI PRs: versioned v0/v1 token-claims API (#3676), one continuous broadcast clock at the catalog root (#3675), libmoq pixel-format from C (#3674). No new release — moq-ffi v0.3.17 / moq-token-cli v0.5.47 (both Sep-9) / moq-relay v0.14.15 (Sep-2) all stand.
  • Interop runner: #127 “Register quic-zig (client and relay)” (endel, OPEN Sep-12) — a pending registration for a new quic-zig implementation; not yet merged, so no matrix change yet. Added to the interop-runner registration history “Open now” list.
  • Quiet: moq-rs (CAT-auth #235 still OPEN, last touched Sep-9), moq-js, quiche (moqt last commit Sep-4), moqtail (switch-from #386 minor Sep-12 + empty-FETCH #385, both OPEN), imquic (last commit Sep-8), moxygen (#228 OPEN), libquicr (tick-service #935 OPEN, no new activity), aiomoqt (0.11.0 #36 minor bump Sep-13), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.

Interop: Sep-13 nightly −3 within-band; no roster change

  • The runner published one new cut — 2026-09-13 00:28:57 UTC — 437 / 196 / 238 / 3 (at-target draft-18 298 · ahead 22 · behind 117): pass −3 (199 → 196), fail +3, with the at-target / ahead / behind split byte-identical (298 / 22 / 117) to the Sep-12 cut — no structural change, just three cells flapping pass→fail within their existing version band (a sixth straight within-band flake since the Sep-12 roster growth). The runner still targets draft-18; the stitcher-moq draft-20 cells stay skipped (no second draft-20 endpoint yet). No Sep-14 cut at check time. See interop-runner.

Activity (Sep 12 → Sep 13) — another quiet window, but with the first sign of the Seattle draft-20 pivot reaching the interop roster: stitcher-moq (Pluto TV / Paramount) declares draft-20 support (runner PR #126), the first draft-20 endpoint in the runner, growing the matrix to 437 cells on the Sep-12 cut. moq-dev lands its big breaking net/ffi/tokio Connection refactor wave (#3613–#3627, all merged) and a new end-to-end-encryption profile (#3629, moq-e2ee-01 + shared vectors); no release. The WG side is flat — no new moq-transport activity since Sep-11, no list traffic, no draft revision, Slack silent.

The window has no WG/spec event: moq-transport saw no new activity after Sep-11 (afrind’s #1940 forward→paused merge and the Engelbart/Duke follow-on issues #1942/#1943 were all Sep-11, logged in the prior entry; #1915 and Duke’s Mandatory-Track-Properties pair #1939/#1941 all stay OPEN), and the sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were quiet. Slack #moq carried nothing new (newest is still Aman Sharma’s Sep-10 atomic-bundles note, already logged); sibling channels empty. IETF list: flat — newest message is still Westerlund’s Sep-9 minutes announcement. Datatracker: no new draft revision (transport-21 stands; all docs flat). No new MoQ Monthly (#2); no open wiki issues. The window’s durable substance is entirely on the tooling/implementation side: the interop roster’s first draft-20 endpoint and moq-dev’s continuing firehose (below).

Interop: stitcher-moq becomes the first draft-20 endpoint; the matrix grows to 437 cells

  • Runner PR #126 “stitcher-moq: declare draft-20 support” (Steven Riedl, merged Sep-11 16:37 UTC) — Pluto TV / Paramount’s stitcher-moq relay is now the first endpoint in the runner to declare draft-20, ahead of the draft-18 nightly target and aligned with the interim-23 decision to make draft-20 the Seattle interop target. On the Sep-12 00:24:46 cut this grew the matrix 434 → 437 cells — the 3 new cells all land in the “ahead” band (ahead 19 → 22) and all show as skipped (skip 0 → 3) (stitcher-moq’s draft-20 pairings aren’t yet producing pass/fail). Within the unchanged draft-18 band, one cell flipped pass → fail (200 → 199), an ordinary within-band flake. So the Sep-12 result is 437 / 199 / 235 / 3 (at-target draft-18 298 · ahead 22 · behind 117). Recorded on interop-runner (Current standing + roster + registration history). The automated nightly runner itself still targets draft-18 — this is the roster moving toward draft-20 before the nightly matrix does.
  • Also merged Sep-11: #115 “docs: define interop reporting and test lifecycle” (the neutral data-plane contract / reporting spec — previously logged as OPEN). #125 (MOQtail relay URL update) merged Sep-5.

Implementations: moq-dev lands the net/ffi Connection refactor + a new E2EE profile; no release

  • moq — a ~39-merge Sep-12 (Curley near-solo; two AWS contributions from ksletmoe-aws; no new release — moq-relay v0.14.15 / moq-ffi v0.3.17 / moq-token-cli v0.5.47 all stand). The breaking net/ffi/tokio Connection-refactor wave opened Sep-11 (logged OPEN) all landed: store versioned recording objects in the archive (#3613, +1578/−101), collapse the JS Reload + Shared classes into one Connection (#3614), preserve session/stream protocol error details across the FFI (#3615, +2896/−333), split a connection’s send estimate among JS publishers (#3616), passthrough imports reserve peak-hold bitrate (#3617), partition LAN discovery by application (#3621), have the FFI follow the connection’s bandwidth share (#3622, +1809/−161), and expose the reconnect epoch + QUIC stream cap (#3627), plus stats/HLS fixes (#3620/#3625).
  • New direction — end-to-end encryption: #3629 “feat(e2ee): add the moq-e2ee-01 profile and shared vectors” (+1726/−40, merged Sep-12) adds an moq-e2ee-01 profile with shared test vectors — a fresh security capability (the “shared vectors” framing signals cross-impl interop intent). Worth watching whether it graduates into a sustained E2EE workstream; recorded here rather than as a durable moq-dev milestone for now (single early -01 PR).
  • More package extraction / media work: publishers now set stalled on lagging video renditions (#3630, +1282/−31), the pattern matcher was extracted into moq-pattern / @moq/pattern (#3631, +959/−645), and a hang.live conferencing extraction into @moq/room + moq-room (#3634, +2649/−107) is OPEN, alongside OPEN connection-recovery/relay-embedder PRs (#3636/#3638). New issues from t0ms: #3603 (client-cert identity never reaches the authz decision, OPEN); #3605/#3608 (auth cache-control / subscriber-health telemetry, both CLOSED).
  • Quiet: moq-rs (CAT-auth #235 still OPEN, now +7549/−79), moq-js, quiche (moqt last commit Sep-4), moqtail (switch-from #386 + empty-FETCH #385 still OPEN), imquic (last commit Sep-8), moxygen (#228 OPEN), libquicr (tick-service #935 OPEN, no new Sep-12/13 activity), aiomoqt, moqtransport, moqlivemock, warp-player, birneee/quiche_moq.

Activity (Sep 11 → Sep 12) — a quiet consolidation window: the interim-23 “forward → paused” rename PR (#1940) merges to main, and the WG’s design queue keeps branching — Engelbart and Duke open three new clarification issues (#1942/#1943, plus the Sep-10 Mandatory-Track-Properties pair). moq-dev stays a firehose (a new “compressed tracks” quest + a large breaking net/ffi refactor wave; no release). Slack, the IETF list, and the datatracker are all flat. Interop ticks +1 back to 200 — the split still byte-identical (a fifth straight within-band flake).

The window has no headline event — it is the tail of the interim-23 disposition work continuing to land and branch. On Sep-11 afrind’s PR #1940 “Call the forwarding state paused” — the concrete first half of the forward-parameter split, logged as OPEN in the Sep-10→11 entry — merged to main (17:16 UTC), so the rename the forwarding states to “paused”/“resumed” half of disposition (1) is now spec text; the forward-removal-via-empty-Location-Filter mechanics remain deferred to #1352. Around it the WG’s clarification queue kept branching: Mathis Engelbart opened #1942 (the new Track Namespace Prefix field from Sep-10’s #1930 uses the Track Namespace encoding, which isn’t one of §9.20’s four control-parameter value encodings) and Martin Duke opened #1943 (what a relay should do with a reserved namespace in a NAMESPACE / NAMESPACE_DONE message — only reachable via a SUBSCRIBE_NAMESPACE for the empty namespace) — both editorial follow-ons to the Sep-9–10 refactor merges, alongside Duke’s still-open Sep-10 Mandatory-Track-Properties pair (#1939/#1941). The one clarification PR still unmerged is #1915 (preserve the SUBGROUP_HEADER PROPERTIES bit when forwarding). Implementations: moq stayed a firehose (kixelated + Frando; no new release — moq-relay v0.14.15 stands) — a new “compressed tracks” quest (#3604, a moq-flate track wrapper + bindings) plus a large batch of breaking net/ffi/tokio refactor PRs opened (#3613–#3627); libquicr opened a tick-service fix (#935) and merged its test-race fix (#929). Slack #moq silent — no new message since Sep-10 (Aman Sharma’s atomic-bundles note, already logged); sibling channels empty. IETF list: nothing new since Sep-9. Datatracker: no new draft revision (transport-21 stands; all docs flat). Interop: the Sep-11 00:26:18 cut — 434 / 200 / 234 / 0 (at-target draft-18 298 · 19 · 117) — is pass +1 (199 → 200) with the version split byte-identical to Sep-10, a fifth straight within-band flake. No new MoQ Monthly (#2); no open wiki issues.

moq-transport: the “forward → paused” rename merges; two more editorial follow-on issues open

  • PR #1940 “Call the forwarding state paused” (afrind) merged Sep-11 17:16 UTC — the interim-23 forward-parameter-split rename is now on main. It leaves FORWARD itself unchanged, adds a new “Pausing Subscriptions” section, and fixes #1694; the forward-removal-via-empty-Location-Filter part (wording carried from #1825) stays deferred to #1352. Recorded on moq-transport (disposition (1) updated: rename half merged).
  • #1942 “TRACK_NAMESPACE_PREFIX format is not defined for Control Message Parameters” (Mathis Engelbart, Sep-11 14:13 UTC) — §9.20 of draft-21 lists exactly four parameter value encodings (uint8, varint, Location, Length-prefixed), but the TRACK_NAMESPACE_PREFIX parameter (the field Sep-10’s #1930 renamed) uses the Track Namespace encoding from §8.7, which isn’t one of them. Engelbart asks whether that encoding should be added to the list — a direct clean-up follow-on to the rename PR.
  • #1943 “Reserved Namespaces in NAMESPACE messages” (Martin Duke, Sep-11 21:35 UTC) — §§2.4.2/6.5 say applications are rebuffed from reserved namespaces and such requests are ERRORed, but a NAMESPACE / NAMESPACE_DONE message is neither, and a reserved namespace can appear there when a SUBSCRIBE_NAMESPACE targets the empty namespace. Duke asks the correct behaviour (a . NAMESPACE presumably an error; .session presumably OK if not application-originated) and whether a reserved-namespace PUBLISH/PUBLISH_NAMESPACE should be answered UNINTERESTED rather than DOES_NOT_EXIST. These sit alongside Duke’s open Sep-10 Mandatory-Track-Properties pair (#1939/#1941). The sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were all quiet in-window.

Implementations: moq-dev firehose (a “compressed tracks” quest + a breaking net/ffi wave); libquicr tick fix

  • moq — another heavy Sep-11 (Curley + Frando/Franz Heinzmann; no new release — moq-ffi v0.3.17 / moq-token-cli v0.5.47 both Sep-9, moq-relay v0.14.15 stands). The notable merge is a new roadmap direction: #3604 “quest: compressed tracks (moq-flate track wrapper + bindings)” (+147/−0) — a planning doc for a moq-flate per-track compression wrapper (worth watching; it echoes the on-list “MoQ + Compression” layering debate). The rest is a large wave of breaking net/ffi/tokio refactor PRs opened (mostly still OPEN): store versioned recording objects in the archive (#3613), collapse the JS Reload + Shared classes into one Connection (#3614), preserve session/stream protocol error details across the FFI (#3615), split a connection’s send estimate among JS publishers (#3616), partition LAN discovery by application (#3621), have the FFI follow the connection’s bandwidth share (#3622) and expose the reconnect epoch + QUIC stream cap (#3627), plus HLS/stats fixes (#3620/#3625) and more quest-planning docs (#3611/#3619/#3623, all merged).
  • libquicr: PR #935 “Fix tick service default” (OPEN Sep-11), and #929 “Fix race in tests” merged Sep-10; the network-logger #934 and windows-compat #933 stay OPEN.
  • moxygen: PR #230 (internal re-sync, merged Sep-10, logged prior); #228 (afrind) stays OPEN.
  • moq-rs: the CAT bearer-auth PR #235 stayed OPEN — no new merges in-window.
  • Quiet: moq-js, quiche (moqt last commit Sep-4), moqtail (switch-from #386 + empty-FETCH #385 still OPEN), imquic (last commit Sep-8), aiomoqt (rc5 Sep-4), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-11 00:26:18 UTC — 434 / 200 / 234 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass +1 (199 → 200), fail −1, with the at-target / ahead / behind split byte-identical to Sep-10 — a fifth straight within-band flake (cells flapping within their existing version band, no reclassification or roster change). The runner still targets draft-18; no Sep-12 cut at check time. See interop-runner.

Activity (Sep 10 → Sep 11) — a post-interim cleanup + implementation window: the interim-23 design dispositions start becoming code — afrind opens the first concrete PR of the “forward → paused” rename (#1940) and merges the ~nine-PR editorial-clarification backlog (the draft-22 cleanup work) into main; Duke opens a new Mandatory-Track-Properties issue pair. On Slack, Aman Sharma floats a second WG extension (atomic subscription bundles, #1860). moq-dev stays a firehose; interop dips −8 but the version split is byte-identical (a fourth straight within-band flake, 199). No new list traffic, no new draft revision.

The window’s durable substance is the interim-2026-moq-23 dispositions beginning to land as spec text. The minutes (posted Sep-9) had recorded seven decisions by topic; on Sep-10 afrind (a) opened PR #1940 “Call the forwarding state paused” — the concrete first half of the forward-parameter split (rename the forwarding states to “paused”/“resumed” now; leave the forward-removal-via-empty-Location-Filter mechanics for later) — and (b) merged the backlog of editorial/clarification PRs he had opened Sep-6–9 (the “draft-22 editorial cleanup” the interim-23 minutes named), clearing them from OPEN into main. Meanwhile Martin Duke opened a new Mandatory-Track-Properties design sub-thread (issues #1939/#1941). Slack #moq carried a single item — Aman Sharma pointing to a second proposed extension (atomic subscription bundles) alongside his Sep-9 cache-availability one. Implementations: moq stayed a firehose (kixelated + Frando; a breaking hang frame-duration change + a moq-video camera/decoder wave; no new release — moq-relay v0.14.15 stands), moxygen merged a routine internal re-sync, and libquicr opened a network-logger PR; moq-rs’s CAT-auth #235 stayed OPEN. Interop: the Sep-10 00:24:34 cut — 434 / 199 / 235 / 0 (at-target draft-18 298 · 19 · 117) — is pass −8 (207 → 199) but with the at-target / ahead / behind split byte-identical to Sep-9, a fourth straight within-band flake (a larger swing than the prior single-cell flips, but no reclassification). IETF list: nothing new Sep-10/11 — the newest message is still Westerlund’s Sep-9 minutes announcement (already logged). Datatracker: no new draft revision (transport-21 stands; all other docs flat); no new MoQ Monthly (#2); no open wiki issues.

moq-transport: the interim-23 dispositions start landing — forward→paused PR opens, the editorial backlog merges

  • PR #1940 “Call the forwarding state paused” (afrind, opened Sep-10 22:00 UTC, +52/−42, OPEN) is the first concrete implementation of an interim-23 disposition. Per the minutes, the forward-parameter item was split: rename the states now, redesign the mechanism later. This PR does the rename — it leaves FORWARD itself unchanged and adds a new “Pausing Subscriptions” section for the rest of the draft to point at. afrind notes the wording comes from #1825 (which also removes FORWARD in favor of an empty Location Filter — “that part is left for #1352”), and it fixes #1694. Recorded on moq-transport (disposition (1) now has a concrete OPEN PR).
  • The editorial-clarification backlog merged (afrind, all Sep-10 ~18:12–18:48 UTC). The PRs opened during the Sep-6 FETCH/error-handling wave and the Sep-7 pre-interim refactor peak — previously logged as OPEN — landed on main together: #1912 (REQUEST_ERROR shorthand names, +97/−87), #1913 (LOCATION_FILTER forms table + error handling, +23/−5), #1916 (list the allowed parameters per control message, +60/−18), #1918 (clarify Largest Object can still be arriving), #1924 (shorten “Parsing Serialized Names”), #1925 (define “Subscription” in Terms), #1930 (call the PUBLISH_NAMESPACE field a Track Namespace Prefix), #1931 (relay-to-relay is out of scope), and #1932 (remove a leftover MUST forward PUBLISH_NAMESPACE). Issue #1928 closed with #1930. Still OPEN: #1915 “Preserve the SUBGROUP_HEADER PROPERTIES bit when forwarding” — the fix for the relays caught zeroing that bit in interop remains unmerged while the rest landed. Recorded on moq-transport (status updated in place).
  • New Mandatory-Track-Properties issue pair (Martin Duke, Sep-10): #1939 “How would a publisher ever learn the peer doesn’t support a Mandatory Track property?” and #1941 “Do relays propagate unknown Mandatory Track Properties in TRACK_STATUS_OK?” — a fresh design thread on how mandatory-to-understand track properties negotiate across a relay path, adjacent to Duke’s Sep-9 #1936 “Hidden Malformed tracks” and Ian Swett’s #1938. The sibling WG repos (msf/loc/secure-objects/cmsf/catalog-format/privacy-pass) were all quiet in-window.

Slack: Aman Sharma floats a second extension (atomic subscription bundles)

One #moq item in-window: Aman Sharma (Sep-10 04:51 CEST, standalone) posted “Also, an extension for atomic subscription bundles” pointing to his OPEN issue #1860 (opened Sep-7). The “Also” frames it as the companion to his Sep-9 cache-availability/status gauge (#1907) — so Aman is now floating two WG-extension ideas back-to-back (cache observability + atomic subscribe bundles), gauging interest before drafting either. #moq-rs / #moq-js / #moq-interop-runner silent in-window.

Implementations: moq-dev firehose continues; moxygen internal re-sync; libquicr network logger

  • moq — another heavy Sep-10 (Curley + Frando/Franz Heinzmann; no new release — moq-ffi v0.3.17 / moq-token-cli v0.5.47 both Sep-9, moq-relay v0.14.15 stands). Notable merges: #3575 “feat(hang)!: empty frames close the previous frame’s duration” (+1656/−552, breaking — reworks how frame durations are signalled), #3595 “feat(tokio): support pinned connection targets” (+431/−67), #3594 “fix(net): never reuse generated track names”, and a moq-video wave from Frando — convert a surface by reference / to BGRA (#3593), list the modes a V4L2 camera reports (#3569), decode H.264 bitstreams the crate did not produce (#3570), plus backend-naming/abort fixes (#3567/#3568/#3566). OPEN moq-net error-code work (NOT_FOUND/OLD/EVICTED stream codes #3586, abort-an-oversized-group #3585) and quest-planning docs (#3590/#3576/#3571). (The same-day draft-21 support #3574 and the fMP4-fragment-as-group #3573 were logged in the Sep-9→10 entry.)
  • moxygen: PR #230 “Re-sync with internal repository” merged Sep-10 (routine Meta-internal sync); #228 “Keep a publisher in pubTracks_ until its data streams end” (afrind) stays OPEN, and #229 (gperf source) was closed.
  • libquicr: PR #934 “Add network logger” (Tomas Rigaux/GhostofCookie, OPEN Sep-10), alongside the still-OPEN #933 (windows compatibility) and #932.
  • moq-rs: the large CAT bearer-authorization PR #235 (englishm-cloudflare, +7549/−79) stayed OPEN — no new merges in-window.
  • Quiet: moq-js, quiche (moqt last commit Sep-4), moqtail (switch-from #386 + empty-FETCH #385 still OPEN), imquic (last commit Sep-8), aiomoqt (rc5 Sep-4), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-10 00:24:34 UTC — 434 / 199 / 235 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass −8 (207 → 199), fail +8, with the at-target / ahead / behind split byte-identical to Sep-9. It is a bigger swing than the prior single-cell flips but the same kind of event — cells flapping fail within their existing version band, no reclassification or roster change — so it reads as a fourth straight within-band flake. The runner still targets draft-18; no Sep-11 cut at check time. See interop-runner.

Activity (Sep 9 → Sep 10) — the interim-2026-moq-23 minutes post (Sep-9), and they set the Seattle interop target to draft-20 (not draft-22) with a wire-freeze, name the draft-21 “pure move” → draft-22 “editorial cleanup” publishing plan, and confirm the LOCMAF-liaison-then-adoption sequence. On Slack the Seattle-versioning question surfaces (Nokia: host v18 + v20/21?) and Aman Sharma floats a cache-availability/status extension. GitHub: afrind’s refactor merges continue, moq-dev adds draft-21 wire support same-day amid a cross-repo draft-18 Joining-FETCH/LARGEST_OBJECT interop cluster, and moq-rs opens a large CAT bearer-auth PR. Interop dips −1 within-band (207).

The window’s durable headline is the posting of the interim-2026-moq-23 minutes — the formal record of the Sep-8 virtual session the Sep-9 entry had to reconstruct from two chair/editor emails. Magnus Westerlund uploaded minutes-interim-2026-moq-23-202609081630 (rev-01) to the datatracker Sep-9 12:51 UTC and announced it on-list minutes later (“[Moq] Minutes for Interim 2026-09-08”, Sep-9 12:53 UTC, permalink, verified HTTP 200 + DKIM). Martin Duke chaired; 21 participants. The minutes both confirm the two outcomes already logged (draft-21 cut; LOCMAF adoption gated on an MPEG liaison) and add the meeting’s other dispositions — most importantly a Seattle interop-target decision that changes what the wiki has tracked since August. Caveat recorded once, up front: these are AI-generated minutes, and their PR/issue numbers are systematically wrong (verified against GitHub — e.g. the minutes’ “PR #1625 forward parameter” is actually the Security-Considerations PR; “PR #1620 publisher priority” is actually “Clarify Joining FETCH unaffected by fwd→0”; 1683 aren’t PRs; only PR #1901 for URI resolution is correct), and the minutes call Cullen’s draft draft-jennings-moq-resolution-00 (no such doc exists — the real one is [[moq-discovery|draft-jennings-moq-discovery]] rev-02). So the decisions and topics below are trustworthy; the minutes’ PR numbers are not, and are omitted rather than propagated. Slack #moq carried the Seattle-versioning question and a new cache-extension proposal (below). Implementations: moq stayed a firehose (23 merges, incl. same-day draft-21 wire support and a draft-18 Joining-FETCH/LARGEST_OBJECT fix cluster), moq-rs opened a large CAT bearer-authorization PR, and afrind’s moq-transport refactor merges continued. Interop: the Sep-9 00:26:42 cut — 434 / 207 / 227 / 0 (at-target draft-18 298 · 19 · 117) — is pass −1 (208 → 207), version split byte-identical to Sep-8, a third straight within-band flake. Datatracker: no new draft revision (transport-21 stands); no new MoQ Monthly (#2); no open wiki issues; no new draft-19 consensus-call message (that call, concerns due Sep-18, stands — the minutes note it “has begun … with a higher bar for issues filed after September 18”).

interim-2026-moq-23 minutes: Seattle interop target set to draft-20; draft-21 → draft-22 publishing plan

The minutes record these decisions (by topic; the minutes’ own PR numbers are unreliable — see caveat above):

  • Seattle interop target = draft-20 (a change). The chairs and editors debated whether the Oct 12–13 Seattle hybrid interop should target draft-18 or draft-20. Suhas, Duke, and Zafer Gürel noted their codebases are on draft-18; Ian Swett and afrind pushed to test newer features — Fill Fetch (which landed in draft-20) and filters. A session poll (“I will be able to support draft-20 in Seattle”) returned Yes 7 / No 5 / No opinion 4 (of 21), and the group agreed: “The formal interop target will be Draft 20.” Draft-18 implementations may interop best-effort, and no further wire-breaking design changes will be merged into the interop target (a wire-freeze for stability). This supersedes the interim-21 framing that named draft-22 the “next official interop target” — because draft-21/22 are doc-only reorganizations of the draft-20 wire (below), targeting “draft-20” and freezing its wire is coherent. Recorded on interop-runner and moq-transport.
  • draft-21 “pure move” → draft-22 “editorial cleanup” publishing plan. afrind presented the moq-transport structural overhaul (semantics Part 1 fully separated from the wire format Part 2, §8+). Cullen Jennings requested — and the editors + Duke agreed — that the editors publish draft-21 as a “pure move” document (only reordering; cut Sep-8, wire-identical to draft-20) followed immediately by draft-22 with the editorial cleanups/clarifications, so reviewers get clean diffs and a clear git history. So draft-22 is now the editorial-cleanup revision, not the interop target. Recorded on moq-transport.
  • LOCMAF: liaison to MPEG, then adoption call (confirms the Sep-8 chair email). Will Law clarified CMAF has no normative dependency on LOCMAF yet (an open PR would introduce one); Torbjörn Einarsson explained that for low-latency CMAF, putting every audio frame in a MoQ object adds >100 bytes of repetitive overhead, which LOCMAF’s delta-encoding cuts to ~2 bytes (receiver reconstructs the full CMAF container). Victor Vasiliev was skeptical of adopting “a third normative container format”; Westerlund clarified LOCMAF is not a new format but an optimization for CMSF requirements, “behaving similarly to a transfer-encoding.” Path forward: send the liaison to MPEG first, hold the WG adoption call until MPEG responds. (The AI minutes repeatedly write draft-ietf-moq-loc where they mean LOCMAF draft-einarsson-moq-locmaf — a naming slip, consistent with the London-minutes “LockMaf/iBIN” slips Westerlund flagged.) Recorded on moq-locmaf.
  • Forward parameter → split. The proposal to replace the forward parameter with an unsatisfiable location filter (e.g. end < start) to signal pause/resume drew state-tracking concerns from Vasiliev/Cullen (a relay unpausing must know whether to restore the previous filter state); Mo Zanaty urged focusing strictly on location filters; Ian Swett noted clients should set location filters explicitly for clean track-switching. Decision: split it — the editorial/terminology change (rename the states to “paused”/“resumed”) proceeds now; the actual removal of forward + the unsatisfiable-filter mechanics go back for more design.
  • Publisher priority → hop-by-hop message parameter. The change moving the default publisher priority from an immutable object property to a hop-by-hop message parameter was supported by Cullen (per-object priority is “too costly for audio”) and Steven Riedl; Vasiliev/Luke Curley flagged debugging complexity from race conditions/out-of-order delivery; Duke noted changing priority mid-subgroup breaks object-property immutability and requires removing the “malformed track” error. Decision: refine — move priority to a message parameter, strip the “malformed track” constraint, and investigate restricting priority changes to group boundaries. (Duke’s Sep-9 issue #1936 “Hidden Malformed tracks” and Ian Swett’s #1938 “Process REQUEST_UPDATE in order” sit in this area.)
  • FETCH_OK / Fill Fetch alignment → parked. Ian Swett flagged that FETCH_OK’s end location / end of track fields are largely redundant with the largest object logic in Fill Fetch; Mo suggested adding first object/last object as static track properties for VOD. Decision: parked until after the Seattle interop to gather Fill-Fetch deployment experience.
  • Overlapping subscriptions → no consensus. Because streams are bidirectional, a client can’t tell when a server has processed a cancellation, creating unavoidable races on overlapping SUBSCRIBE_NAMESPACE/SUBSCRIBE_TRACKS. afrind suggested a subscription-request-ID correlator on PUBLISH; Mo warned of relay routing/duplication complexity; Ian judged overlapping SUBSCRIBE_NAMESPACE safe-and-simple but SUBSCRIBE_TRACKS complex. No consensus — afrind + Luke Curley to coordinate offline.
  • URI resolution → move the scheme into Cullen’s draft. Cullen presented DNS/TLS requirements (tracked by PR #1901, verified): mandatory client support for SVCB records; TLS validation restricted to SAN fields (DNS names, URIs for narrow-scoped CDN routing, IP addresses) ignoring the legacy CN; and a ban on wildcard certificates (*.example.com). afrind proposed moving the moqt URI-scheme definition out of moq-transport into the resolution draft; Cullen agreed. See moq-discovery.

The minutes also restate the calendar: interim-24 on Sep-21 (final virtual interim), then Seattle Oct 12–13 interop / Oct 14–15 issue discussion. Recorded on interim-meetings.

Slack: Seattle-versioning question + a cache-availability/status extension proposal

Two #moq items in-window, both Sep-9:

  • Seattle interop versioning (Nokia moqt-nr thread 1788373666). Responding to Aman Sharma’s Sep-8 Joining-Fetch-on-Forward-State-0 bug, Yu You said Nokia will not chase that fix — “we are leaving the joining fetch impl. behind and moving on to the new v20/21 as the new fill fetch is coming” — and floated hosting two versions for the Seattle interop: v18 and v20/21. afrind replied the conformance “script will hopefully support d20 / fill fetch by then.” This is the same draft-18→draft-20 pivot the interim minutes formalized, playing out at the implementation level: with joining FETCH gone and Fill Fetch in draft-20, implementers are deprioritizing draft-18 joining-fetch bugs and looking to the draft-20 wire for Seattle.
  • Cache-availability / cache-status extension (Aman Sharma, standalone, 20:04 CEST). Aman is gauging interest in an extension providing two signals — cache availability (a relay has all/some/none/unknown of the requested content cached) and cache status (delivered content came from local cache, was fetched upstream, or couldn’t be obtained) — and points to his OPEN issue #1907 (opened Sep-4). The sketch reuses existing messages rather than new types: a request parameter on TRACK_STATUS (answered on TRACK_STATUS_OK) for local cache availability, and a Cache-Status request on FETCH returned on FETCH_OK. It echoes afrind’s Aug-29 CACHE_DISTANCE fetch-extension musing — cache observability is an emerging design thread. #moq-rs / #moq-js / #moq-interop-runner silent in-window.

Implementations: moq-dev adds draft-21 same-day amid a draft-18 Joining-FETCH/LARGEST_OBJECT cluster; moq-rs opens CAT auth; afrind’s refactor merges continue

  • moq-transport (WG doc): afrind’s refactor wave kept landing — merged Sep-9 #1935 (draft-21 release notes, +17/−0), #1927 (scope auth-token cache-overflow rule to non-SETUP registrations), #1922 (how a non-Normal Object encodes Properties in a Subgroup), #1921 (how extensions declare support in SETUP), #1919 (RESET_STREAM_AT can be supported but unused). Opened: #1938 “Process REQUEST_UPDATE in order” (ianswett). New issues: #1937 (change the Location-Filter Length field to an enum, ianswett) and #1936 (Hidden Malformed tracks, martinduke). msf/loc/secure-objects/cmsf/catalog-format/privacy-pass all quiet.
  • moq — ~23 PRs merged Sep-9/10 (Curley lead; Frando/Franz Heinzmann now a steady second contributor on moq-video/moq-audio; new releases moq-ffi v0.3.17 + moq-token-cli v0.5.47, both Sep-9; moq-relay v0.14.15 stands). Two threads stand out: (1) same-day draft-21 support — #3574 “feat(moq-net): add moq-transport draft-21 (moqt-21)” (kixelated, opened Sep-9, +232/−140), the spec-to-impl turnaround essentially same-day as the cut. (2) a draft-18 Joining-FETCH / LARGEST_OBJECT interop cluster — Paul Gregoire (mondain) filed issues #3559 (moq-net returns REQUEST_OK instead of FETCH_OK on draft-16+) and #3558 (moq-net decodes LARGEST_OBJECT as length-prefixed on draft-18, refusing a bare Location), and kixelated shipped fixes #3562 “serve joining FETCH with saved object prefix” (+886/−340, Sep-10) and #3561 “LARGEST_OBJECT is a bare Location from draft-17 on” (+349/−191). Other notable: #3513 (moq-mux retain publisher burst jitter + reject invalid catalog edits, +1027/−577, breaking), #3573 (fMP4 export fragment is a group on every track, breaking), #3566/#3565 (Frando: abort subscriptions on session shutdown; open a decoder at the live edge).
  • moq-rs broke a long quiet stretch: PR #235 “feat(auth): add scope-configured CAT bearer authorization” (englishm-cloudflare, +7549/−79, OPEN, Sep-9) — a large Common Access Token (CAT) bearer-auth front, in the same in-band-auth theme as moq-dev’s token-refresh grooming and moq-transport’s #1927 SETUP auth-token tightening.
  • moqtail: issue #387 “Relay rejects draft-18 Joining FETCH messages” (Kevin Rocard/krocard, Sep-9) — same draft-18 Joining-FETCH surface as the moq-dev cluster.
  • moxygen: PR #228 “Keep a publisher in pubTracks_ until its data streams end” (afrind, +180/−25, OPEN).
  • libquicr: PR #933 “Add windows compatibility” (Tomas Rigaux/GhostofCookie, +254/−129, OPEN).
  • Quiet: moq-js, quiche (moqt last commit Sep-4), imquic, aiomoqt (rc5 Sep-4), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-09 00:26:42 UTC — 434 / 207 / 227 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass −1 (208 → 207), fail +1, with the at-target / ahead / behind split byte-identical to Sep-8 — a third straight within-band single-cell flip, no reclassification or roster change. The runner still targets draft-18, even though the WG has just set the Seattle interop target to draft-20; watch for the runner’s target to move. See interop-runner.

Activity (Sep 8 → Sep 9) — interim-2026-moq-23 meets and its output is legible the same day: the editors cut draft-ietf-moq-transport-21 (a restructuring “100% wire- and semantically-equivalent to draft-20”), and the chairs announce the WG’s intent to adopt LOCMAF — sending a liaison to MPEG Systems first. Formal interim minutes are still pending. On Slack the relay-conformance sweep resumes with two fresh Aman-Sharma bug reports; moq-dev has a 36-PR test-infra + media day; interop dips −2 within-band (208).

The window’s durable headline is a draft revision plus a WG-adoption intent, both flowing directly out of the interim-2026-moq-23 virtual meeting (Sep-8 16:30–18:00 UTC). [[moq-transport|draft-ietf-moq-transport-21]] was published Sep-8 21:08 UTC (159 pages, afrind’s “[Moq] Draft-21” permalink + the I-D Action auto-notice, both verified), ~3 hours after the meeting ended — the editorial-meeting-output revision the interim-2026-moq-21 minutes forecast (the pipeline draft-20 editorial cut → draft-21 restructuring → draft-22 next official interop target). Crucially, afrind + ianswett describe the cut process precisely: a draft-21-retro branch from the draft-20 tag, replaying only the structural-move PRs and reverting anything non-structural, so “it should be 100% wire and semantically equivalent to draft-20” — the sentence-level diff removed 15 sentences (“obsolete and contradictory to the current consensus”), added 31, and modified 20 (“almost all … navigational pointers or updated section references”). So -21 is the reorganization pass the wiki has tracked since Sep-1 (move-only #1877, the Delivery Mode rename, the Range/Location/Namespace filter splits, the §3.2 Fetch hoist) now cut into a formal revision, not a new-mechanism release; the release-notes PR #1935 (afrind, +17/−0) sits on the cut branch. The second interim outcome is on LOCMAF: Magnus Westerlund posted [Moq] “Liaison statement and on adoption of LOCMAF” (Sep-8 17:49 UTC, permalink, verified d=ericsson.com) — “As discussed in today’s Interim meeting we intend to … adopt the LOCMAF draft” (Tobbe/Eyevinn’s individual draft-einarsson-moq-locmaf-01), but the WG will first send a Liaison Statement to MPEG Systems (ISO/IEC JTC1/SC29/WG3) and wait on a formal adoption call until MPEG responds. The interim’s formal minutes/summary are not posted yet (interim-21 lagged ~4 days, interim-22 ~7), so the wiki records the two chair/editor emails as the meeting’s legible output, plus two post-interim editorial merges — #1926 “Note that Client and Server are transport roles only” (afrind, Fixes #1217) and #1927 “Scope the auth token cache overflow rule to non-SETUP registrations” (afrind) — and Martin Duke’s new issue #1936 “Hidden Malformed tracks” (Sep-9). The Sep-5 URI-resolution thread also grew six Sep-8 replies (Ben Schwartz/Meta, Lucas Pardue, Cullen Jennings ×2, Westerlund ×2). Slack #moq carried the resumed relay-conformance sweep (below). Implementations: moq had a 36-PR test-infrastructure + media day (no release — moq-relay v0.14.15 stands) and moqtail opened a large switch-from PR (#386). Interop: the Sep-8 00:26:55 cut — 434 / 208 / 226 / 0 (at-target draft-18 298 · 19 · 117) — is pass −2 (210 → 208) with the version split byte-identical to Sep-7, a within-band flake that ran before both the interim and the evening sweep. Datatracker: transport bumped to -21, all other docs flat; no new MoQ Monthly (#2); no open wiki issues; no new draft-19 consensus-call message (that call, opened Sep-4 with concerns due Sep-18, stands — nothing landed this window).

draft-ietf-moq-transport-21 published — the editorial-meeting-output restructuring cut

The Aug-14 interim-2026-moq-21 minutes named the pipeline draft-20 (editorial cut just before the editorial meeting) → draft-21 (the editorial meeting’s output) → draft-22 (the next official interop target). draft-21 is now that middle step, cut Sep-8 21:08 UTC — the day of interim-23. What makes it unusually clean is that the editors treated it as a pure reorganization and proved it mechanically. From afrind + ianswett’s “[Moq] Draft-21” post:

  • The editors branched draft-21-retro from the draft-20 tag, replayed only the PRs that were “exclusively or largely structural moves,” and locally reverted any non-structural changes.
  • They wrote a tool that reduces two draft versions to a set of sorted, normalized sentences and diffs them, and committed its markdown output for review.
  • The pushed tag / generated -21 “should be 100% wire and semantically equivalent to draft-20.” The sentence diff: 15 sentences removed (“sections the authors and editors agreed were obsolete and contradictory to the current consensus”), 31 added, 20 modified — “almost all … navigational pointers or updated section references.”

So implementers on draft-20 have no wire work to do for -21; the value is a cleaner document ahead of the editorial-meeting substance that will land as draft-22 (the next interop target). Recorded on moq-transport (new draft-21 section + the frontmatter/version bump). The release notes are PR #1935, and the two same-evening editorial merges #1926/#1927 are post-cut cleanups already on main.

interim-2026-moq-23: held Sep-8; the WG will adopt LOCMAF (via a liaison to MPEG first); minutes pending

The third of the four biweekly Vienna→Seattle sessions ran Sep-8 16:30–18:00 UTC (agenda rev-02 posted 14:36 UTC, ~2h before the start — the document-refactor review + Seattle-interop-plan decision + the long-parked design-question queue from the Sep-7 draft agenda). No formal minutes or summary email has posted yet. Two chair/editor emails make the outcomes legible:

  • draft-21 was cut (above) — the “review the document refactor” agenda slot resolving into a published restructuring revision the same day.
  • The WG intends to adopt LOCMAF as a WG document — but deliberately, and not yet. From Magnus Westerlund (as MOQ Chair): the WG will first send a Liaison Statement to MPEG Systems (ISO/IEC JTC1/SC29/WG3) informing them of the intent to adopt LOCMAF and “define a compression technology for their media format” (CMAF), “to maintain a good relationship between IETF and MPEG” and confirm MPEG has no significant objections. Victor Vasiliev asked in the meeting whether there had been a formal adoption call; Westerlund’s answer traces the decision back to the London CMSF discussion (where “Eyevinn’s delta-encoding scheme for CMAF audio packaging: 20-30% bandwidth savings” was noted — the message even flags the two AI-transcription slips in the London minutes, “LockMaf → LoCMAF” and “iBIN’s → Eyevinn’s”). The chairs and authors concluded to keep LOCMAF separate from CMSF — an independent CMAF-fragment-compression draft with only a normative reference from the CMSF draft — as simplest for future corrections, and to hold the formal adoption call until MPEG Systems replies. Westerlund invited objections “now, rather than later.” This is the durable graduation of Tobbe’s LOCMAF from an individual first-look draft toward a WG work item; recorded on moq-locmaf.
  • The list around the interim: besides the Draft-21 pair and the LOCMAF liaison, the Sep-5 Cullen Jennings URI-resolution / TLS-cert-matching thread (→ moq-discovery) drew six Sep-8 replies — Ben Schwartz (Meta), Lucas Pardue, Cullen Jennings (×2), and Westerlund (×2) — keeping the document-scoping question active into the interim’s “add some time to discuss the URI resolution draft” slot.

All list messages were verified by raw archive fetch (HTTP 200 + DKIM pass) per the standing anti-hallucination rule. No new draft-19 consensus-call message appeared this window — the Sep-4 call (concerns due Sep-18) still stands, and the recurring phantom “Martin Duke consensus call” was searched for and not found.

Slack: the relay-conformance sweep resumes — two fresh bugs against imquic and Nokia

After Nokia’s moqt-nr cleared the moxygen conformance suite Sep-7 (last entry), the Aman Sharma-driven find-fix loop resumed Sep-8 — post-interim, in the two long-running #moq threads — surfacing two new conformance bugs even against relays that had recently “passed”:

  • Miniero’s relay (thread 1788365727): Miniero reported he “should have addressed both issues” from Sep-4 — media-stream closure after PUBLISH_DONE and duplicate NAMESPACE_DONE — but “they’re hard for me to replicate,” and asked afrind for local access to the moq-test validator so he needn’t request a fresh run per change (afrind: it’s in the moxygen repo under moqtest; the openmoq fork ships prebuilt tarballs). Aman then found a new bug: “A FETCH response must deliver the objects of a group in numerical order. Your implementation is instead replaying it in the order that they arrived in” (tested with subgroup 0 carrying objects 0 and 2, subgroup 1 carrying 1 and 3). Miniero: “very likely, I’m not sorting packets when I prepare fetch objects … easy fix, I’ll sort it out tomorrow.”
  • Nokia’s moqt-nr (thread 1788373666): even after the Sep-7 conformance pass, Aman spotted another: “A Joining Fetch against a Forward State 0 subscription is accepted rather than refused,” quoting §10.12.2 — “A Joining Fetch is only permitted when the associated subscription has Forward State 1; otherwise the publisher MUST respond with a REQUEST_ERROR with error code INVALID_RANGE.”

The takeaway: “cleared conformance” is a moving bar as the moqtest suite deepens — the sweep keeps finding lower-frequency data-plane and error-path bugs. Recorded on imquic, yu-you, and interop-runner. #moq-rs / #moq-js / #moq-interop-runner were silent in-window.

Implementations: moq-dev’s 36-PR test-infra + media day; moqtail’s switch-from; interop −2 within-band

  • moq merged 36 PRs Sep-8/9 (Curley near-solo; one external — ivangymenuk’s OBS-source audio #3490, +848/−26; no in-window release — moq-relay v0.14.15 from Sep-2 stands), continuing the Sep-7 test-infrastructure push and adding media work. Test infra: just doctor environment-capability check (#3512, +2803/−178), browser-media-output + publication-lifecycle smoke measurement (#3507, +2049/−214), per-run harness directories/ports/process-groups (#3509, +1080/−283), a relay cancellation / relay-death / republish drill over real QUIC (#3525, +1042/−47), and a revert of “run behavioral gates on the PRs they cover” (#3540, reverting the same-day #3504). Protocol/media: moq-net now sends registered moq-transport request error codes (#3531, +1143/−227), a real playout clock for moq play with a --delay offset (#3528, +758/−273), preserve a signalled MPEG-TS timebase discontinuity (#3529, +717/−92), and the breaking restore Firefox hardware encoding + scale screen sources (#3535). New issues sharpen known gaps: #3534 “moq-net relay does not preserve publisher priority” (riedlse — the serve path hardcodes 0, DEFAULT_PUBLISHER_PRIORITY 0x21 unparsed; the same class of priority-passthrough bug the relay sweep chased in Nokia/imquic), #3533 (moq export ts stall since #3375, t0ms), and #3532 “no blind subscribe” (jmvillagra — a relay that doesn’t announce, e.g. Cloudflare draft-16, is unreachable from every non-JS binding).
  • moqtail opened PR #386 “feat: switch-from” (Zafer Gürel, +4299/−2821, OPEN) — implementing the SWITCH_FROM parameter design (transport #1674) and replacing moqtail’s existing SWITCH-message implementation, i.e. moving the codebase from the old switching message onto the SSTS parameter approach. Interim-relevant: FORWARD-elimination / SWITCH_FROM were on the interim-23 agenda, and this is the first implementation moving to the parameter form. Recorded on moqtail.
  • libquicr merged #931 “Upgrade sframe” (RichLogan, +29/−4); #932/#929 OPEN.
  • Quiet: moq-rs, moq-js, quiche (no Sep 7–9 moqt commits; 1da9de48 was Sep-4), imquic (repo; relay fixes are live-server), moxygen, aiomoqt (rc5 was Sep-4), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-08 00:26:55 UTC — 434 / 208 / 226 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass −2 (210 → 208), fail +2, with the at-target / ahead / behind split byte-identical to Sep-7. A within-band flake, no reclassification; it ran ~00:27 UTC, before both the interim and the evening relay sweep, so neither shows here. Still targets draft-18. See interop-runner.

Activity (Sep 7 → Sep 8) — the eve of the Sep-8 virtual interim (interim-2026-moq-23): afrind circulates the draft agenda on the list and drives his document-refactor PR wave to ~15 more transport PRs; Nokia’s moqt-nr relay clears the moxygen conformance test, resolving the week-long sweep; moq-dev has a heavy watch/audio + test-infra day; interop ticks −1 within-band (210).

A pre-interim window: the interim-2026-moq-23 virtual session runs Tuesday Sep-8 16:30–18:00 UTC (the third of the four Aug 10 / 24 → Sep 8 / 21 biweekly Vienna→Seattle sessions, shifted to a Tuesday off US Labor Day), and the day before it the WG’s activity is all agenda-setting and cleanup. On the IETF list, Cullen Jennings asked “agenda for sept 8 meeting?” (Sep-7, permalink, verified real — From: Cullen Fluffy Jennings <fluffy@iii.ca>) and afrind replied the same day with a draft agenda (permalink, verified d=meta.com): review the document refactor, decide on the Seattle interop plan, an FYI that fill-fetch landed in draft-20 (#1673), then a discussion list — whether to eliminate FORWARD given alternatives, SWITCH_FROM (#1674/#1675), the default publisher priority debate (#1770), whether FETCH_OK needs an End Location / End of Track (#1897), SUB_NS/TRACKS prefix overlap (#1792), empty-namespace handling (#1696), subgroup-or-group-level properties (#1857), and the new SUBSCRIBE-metadata-only option (#1933) — plus, in a follow-up, time for the URI-resolution draft. The meeting had not yet run at check time, so its outcomes land in the next update. Feeding it, afrind drove his document-refactor PR wave on moq-transport to a new peak — three merged Sep-7 (#1911 “Use Largest Object consistently,” #1914 “Clarify the Original Publisher establishes Delivery Mode,” and #1917 “Acknowledge WebTransport over HTTP/2” — the last fixes long-open #864/#973 by scoping the mandatory QUIC-DATAGRAM requirement to QUIC/HTTP-3) and ~15 more opened (#1918–#1932, all OPEN, all editorial/clarification). On Slack #moq, the one in-window message closes the week-long relay-conformance sweep: Yu You reported the Nokia moqt-nr relay updated and now passing the moxygen conformance test (Sep-7 15:09 CEST) — clearing the priority-128 + FORWARD=0 bugs afrind and Aman Sharma had chased since Sep-2. Implementations: moq had a heavy watch/audio + test-infrastructure day (Sep-7, Curley; no release — moq-relay v0.14.15 stands), all other tracked repos quiet. Interop: the Sep-7 00:29:12 cut — 434 / 210 / 224 / 0 (at-target draft-18 298 · ahead 19 · behind 117) — is pass −1 (211 → 210), fail +1, with the version split byte-identical to Sep-6: a single within-band flake, no reclassification. Datatracker WG-side flat (transport-20 stands, no rev-21); no new individual draft; no new MoQ Monthly (#2); no open wiki issues.

interim-2026-moq-23 (Sep-8): the agenda scramble

The Sep-8 virtual interim is the third of the four biweekly sessions bridging IETF-126 (Vienna) and the Oct 12–15 Seattle hybrid interim (schedule). It was IESG-booked back on July 17 (agenda TBD), and by Sep-7 the agenda was still not posted — prompting Cullen Jennings’s terse “Is there an agenda for sept 8 meeting?” on the list. afrind replied within the day (the agenda “was circulated among editors and chairs” first) with the list above. Two framing points worth pinning:

  • The agenda is dominated by the document refactor + a Seattle-interop-plan decision, not new wire mechanisms. The bulk of the discussion items are long-parked design questions being brought to a head before Seattle — FORWARD elimination, SWITCH_FROM, default publisher priority (#1770, the one Cullen reopened on-list after interim-22 closed it pending fresh feedback), FETCH_OK End Location/End of Track (#1897), prefix-overlap (#1792), empty namespaces (#1696), data-plane metadata scope (#1857).
  • The URI-resolution split gets meeting time. afrind’s follow-up (“we should add some time to discuss the URI resolution draft”) puts the Sep-5 Cullen/Suhas document-scoping decision — move URI resolution + TLS cert matching out of transport into [[moq-discovery|draft-jennings-moq-discovery]] (see the Sep 5→6 entry) — on the interim agenda.

Both list messages were verified by raw archive fetch (real message IDs → HTTP 200 with valid DKIM; a fabricated control ID → 404) per the standing anti-hallucination rule. Recorded on interim-meetings and moq-transport.

afrind’s document-refactor PR wave peaks ahead of the interim

The moq-transport draft-refactor push that has run all week (the Sep-2–6 FETCH / error-handling / forwarding clarification wave) crested Sep-7 as afrind readied the draft for the interim’s “review the document refactor” slot:

  • Merged Sep-7: #1911 “Use Largest Object consistently” (+2/−2), #1914 “Clarify the Original Publisher establishes Delivery Mode” (+1/−1) — both carried over from the Sep-6 batch — and #1917 “Acknowledge WebTransport over HTTP/2” (+10/−4, fixes #864/#973): the draft already lets a client run WebTransport over HTTP/2 on TCP+TLS, but Session establishment still said the protocol was undefined over non-QUIC transports and made the QUIC DATAGRAM extension unconditionally mandatory — the PR scopes that requirement to QUIC/HTTP-3, states what changes under HTTP/2, and says MoQT is not defined to run directly over other transports.
  • Opened Sep-7 (all OPEN): #1918–#1932, ~15 editorial/clarification PRs — e.g. “Clarify how extensions declare support in SETUP” (#1921), “Say how a non-Normal Object encodes Properties in a Subgroup” (#1922), “Define Subscription in Terms and Definitions” (#1925), “Note that Client and Server are transport roles only” (#1926), “Call the PUBLISH_NAMESPACE field a Track Namespace Prefix” (#1930), and “Relay-to-relay is out of scope” (#1931). The Sep-6 wave’s #1912/#1913/#1915 remain OPEN.
  • New issues: #1934 “Largest Object and the end of group” (vasilvv, Sep-8), #1933 “Option to SUBSCRIBE / SUBSCRIBE_TRACKS with metadata only” (afrind, Sep-8 — now an interim agenda item), and #1928 “[editorial] PUBLISH_NAMESPACE and NAMESPACE operate on prefixes” (kixelated, Sep-7).

On msf, Will Law opened PR #210 “Refactor track namespace and name definitions” (Sep-7) and Michal Hošna opened issue #209 — the catalog’s mapping of JSON name/namespace strings to byte sequences is unspecified. loc / secure-objects / cmsf / catalog-format / privacy-pass all quiet. See moq-transport.

Slack: Nokia’s relay clears moxygen conformance, closing the sweep

The week-long relay-conformance sweep — afrind + Aman Sharma running moxygen’s moq-test client against each live relay and posting failures to #moq for same-day fixes — reached its end for Nokia. After the Sep-2–5 chain of fixes (duplicate-object cleared, FETCH-inclusive fixed, then a lingering Actual=128 Expected=200 publisher-priority mismatch and a FORWARD=0-still-forwards bug), Yu You reported Sep-7 15:09 CEST: “the relay server got updated. Tested with local Moxygen build and moxygen conformance test passed.” This is the moqt-nr relay clearing the moxygen conformance suite — the durable interop milestone the sweep was working toward. Recorded on yu-you and interop-runner. It was the only in-window #moq message; #moq-rs / #moq-js / #moq-interop-runner were silent.

Implementations: moq-dev’s watch/audio + test-infrastructure day; interop −1 within-band

  • moq had a heavy Sep-7 (Luke Curley near-solo; no in-window release — moq-relay v0.14.15 from Sep-2 stands), split between watch/audio playback fixes and conformance/test infrastructure. Playback: rebuild the audio graph only on decoder-identity change (#3516), stamp resampled output from its starting frames (#3482), detect a JS-container rewind at the playback cursor (#3485), refuse an fMP4 fragment whose decode time doesn’t advance (#3495). moq-net: keep the draft-14/15 namespace map consistent and let it shrink (#3481), re-announce a path handed to a new producer (#3486), and (OPEN) answer TRACK_STATUS on every moq-transport draft (#3519, +801/−220). Test infra: a Go publisher + subscriber added to the smoke interop matrix (#3505), plus a large wave of OPEN harness/verify PRs (per-run directories/ports #3509, browser-media smoke measurement #3507, just doctor environment check #3512, merge-candidate grading #3514).
  • Quiet: moq-rs, moq-js, quiche (no Sep 7–8 moqt commits; 1da9de48 was Sep-4), moqtail, imquic, moxygen, aiomoqt (rc5 was Sep-4), libquicr, moqtransport, moqlivemock, warp-player (only dependabot), birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-07 00:29:12 UTC — 434 / 210 / 224 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass −1 (211 → 210), fail +1, with the at-target / ahead / behind split byte-identical to Sep-6. A single within-band fail flip, no reclassification or roster change. Still targets draft-18. See interop-runner.

Activity (Sep 6 → Sep 7) — afrind turns the hackathon relay-conformance findings into a FETCH + error-handling + forwarding-semantics clarification wave on the transport draft; the overdue weekly GitHub digest and Martin Duke’s Seattle-interim registration notice land on the list; moq-dev has a quieter quest/build day; interop nudges +4 to a new high (211).

A quiet window whose durable substance is a spec-clarification wave on moq-transport from afrind — several items tracing directly back to the Sep 2–4 hackathon relay-conformance sweep. Two merged. #1895 “Add FETCH semantics section” (merged Sep-6 02:31 UTC, +95/−70) hoists the non-wire FETCH concepts (from FETCH / FETCH_OK / FILL_TIMEOUT / Fetch Streams) into a new §3.2 Fetch with interior subsections (Fetch Object Delivery, Gaps in a Fetch Stream, Relay Fetch Handling), adds a first attempt at describing how to compute descending fetch gaps, and removes a stale relay MUST that contradicted FILL_TIMEOUT — afrind: “No other normative language was changed.” #1910 “Clarify FETCH_OK End Location is inclusive” (merged Sep-7 00:17 UTC, +1/−1, fixes #1748) pins that the FETCH_OK message’s End Location is inclusive (the largest object the fetch will deliver) — deliberately distinct from the FETCH request’s End Location, which is exclusive (“the end Location, plus 1”), the field Aman Sharma caught Nokia’s relay treating as inclusive on Sep-4. Five more afrind PRs opened Sep-6 (all OPEN): #1915 “Preserve the SUBGROUP_HEADER PROPERTIES bit when forwarding” (fixes #1073) — the spec answer to the Nokia/imquic relays zeroing the properties bit in the sweep; #1913 “Add LOCATION_FILTER forms table and error handling” (fixes #1347); #1912 “Add REQUEST_ERROR shorthand names and apply them” (fixes #1722); #1914 “Clarify the Original Publisher establishes Delivery Mode”; and #1911 “Use Largest Object consistently.” On the IETF list, the overdue weekly GitHub digest finally posted (mnot.net bot, Sep-6 04:44 PT, permalink, verified) and co-chair Martin Duke posted [Moq] “Register to attend the Seattle interim” (Sep-5 20:27 PT = Sep-6 03:27 UTC, permalink, verified real via raw fetch — From: Martin Duke, not a consensus call), asking attendees of the Oct 12–15 Seattle hybrid interim to register on the WG GitHub wiki by Sep 26. Slack #moq carried no new in-window traffic (newest still Aman Sharma’s Sep-5 00:40 CEST FORWARD=0 note). Implementations: moq had a quieter tooling/quest/build day (~15 PRs opened Sep-6; no release), all other tracked repos quiet. Interop: the Sep-6 00:29:32 cut — 434 / 211 / 223 / 0 (at-target draft-18 298 · ahead 19 · behind 117) — is pass +4 (207 → 211, a new high) with the version split byte-flat, more of the within-band fail→pass tail. Datatracker WG-side flat (transport-20 stands, no rev-21); no new MoQ Monthly (#2); no open wiki issues.

afrind’s FETCH + error-handling clarification wave on moq-transport

The window’s one durable thread is afrind converting bug reports and long-open issues into spec text on moq-transport — a batch that reads as the hackathon’s find-fix loop feeding back into the draft, now that the Sep 2–4 relay sweep has surfaced concrete conformance gaps. The two that merged are FETCH-focused:

  • #1895 “Add FETCH semantics section” (Sep-6, +95/−70) — a structural hoist that pulls the non-wire FETCH concepts out of the individual message/stream descriptions into a single §3.2 Fetch, reordered to flow logically, with new interior sections Fetch Object Delivery, Gaps in a Fetch Stream, and Relay Fetch Handling. It also adds a paragraph explaining how to compute descending fetch gaps (afrind: “previously I’d been too chicken to attempt this”) and drops a stale relay MUST on unknown-state objects that contradicted FILL_TIMEOUT — “No other normative language was changed.” Fits the draft-21 restructuring pass.
  • #1910 “Clarify FETCH_OK End Location is inclusive” (merged Sep-7, +1/−1, fixes #1748) — the important nuance: FETCH_OK’s End Location (reported back as the largest object the fetch delivers) is inclusive, whereas the FETCH request’s End Location is exclusive (“the end Location, plus 1”). These are two different fields, so this is not a reversal of the Sep-4 finding that Nokia’s relay wrongly treated the FETCH-request End Location as inclusive — it clarifies the response side.

Five more opened the same day and are still OPEN, several closing issues that have been open for months:

  • #1915 “Preserve the SUBGROUP_HEADER PROPERTIES bit when forwarding” (fixes #1073) — the PROPERTIES bit applies to every Object on a Subgroup stream, so a relay must pick its value when opening the downstream stream, before it has seen the rest of the subgroup; clearing it and then receiving an Object with Properties leaves no legal encoding (a relay MUST forward Properties). The PR tells relays to carry the upstream value over, and to set the bit if they might add Properties of their own. This is the spec-side answer to the Nokia/imquic relays zeroing the properties / contains-last-in-group bit that afrind’s readiness probe kept catching during the sweep (see interop-runner).
  • #1913 “Add LOCATION_FILTER forms table and error handling” (fixes #1347) — a summary table of the six LOCATION_FILTER forms (which optional fields are present is inferred from how many fit in Length), a note that adding StartObject to a StartGroup-only filter flips the start Location from relative to absolute, and, newly, error handling: a field extending past the parameter end or more than four fields is a session error, and an inverted single-group range (EndGroupDelta = 0, EndObject < StartObject) is rejected with INVALID_RANGE. Also qualifies REQUEST_UPDATE’s “no mechanism to remove a parameter” as “no generic mechanism,” since LOCATION_FILTER and the Range Filters both define a zero-length removal form.
  • #1912 “Add REQUEST_ERROR shorthand names and apply them” (fixes #1722, +90/−82), #1914 “Clarify the Original Publisher establishes Delivery Mode” (+1/−1), and #1911 “Use Largest Object consistently” (+2/−2) round out the wave — terminology + readability cleanups riding the same “Delivery Mode” / “Largest Object” vocabulary the draft-21 restructuring introduced.

The rest of the moq-wg org (msf / loc / secure-objects / cmsf / catalog-format / privacy-pass) was quiet. See moq-transport.

The list: the weekly GitHub digest returns, and Seattle-interim registration opens

Two verified messages landed on the MOQ list, both surfacing under Sep-6 in the archive:

  • The weekly GitHub digest (Repository Activity Summary Bot / mnot.net, Sep-6 04:44 PT, permalink) — the routine recap, absent since Aug-30 and flagged “no digest yet (~Sep-6)” in the last several entries. It recaps the moq-transport week: the three new open questions (Object properties on subgroup streams, cache-availability, 0-RTT), six issues with fresh comments, nine new PRs, plus the msf slashes-vs-dashes naming issue.
  • [Moq] “Register to attend the Seattle interim” (Martin Duke, Sep-5 20:27 PT = Sep-6 03:27 UTC, permalink) — asks attendees of the Oct 12–15 Seattle hybrid interim (F5 Tower; Oct 12–13 interop, Oct 14–15 technical) to add their name and rough schedule to the WG GitHub wiki attendance page by Sep 26. Verified real by raw archive fetch (From: Martin Duke <martin.h.duke@gmail.com>) against a 404 control, per the standing rule — this is a logistics notice, not the recurring phantom “consensus call.” Recorded on interim-meetings.

Implementations: moq-dev’s quest/build day; interop +4 to a new high

  • moq had a quieter day than the Sep-5 burst — ~15 PRs opened Sep-6 (Luke Curley + four dependabot bumps; no in-window release, moq-relay v0.14.15 from Sep-2 stands), weighted toward tooling and build rather than protocol. Notable: #3470 “report whether a quest is ready to start” (+461/−82, merged), the abort-guard work — planning doc #3466 (merged) and “one abort-on-drop guard per crate instead of five” #3472 (OPEN) — taking libclang-dependent features off the default set (#3464, merged), a dev-profile perf tweak for the echo-delay test (#3471, merged), and a docs/agent-guide trim (#3469, OPEN). The day’s larger feature PRs — path patterns (#3458), OBS-dock stats (#3453), stream-reset-code→negotiated-draft mapping (#3450) — were Sep-5-created and merged in the early hours of Sep-6, so they belong to the Sep 5→6 window above.
  • Quiet: moq-rs, moq-js, quiche (no Sep 6–7 moqt commits), moqtail, imquic, moxygen, aiomoqt (rc5 was Sep-4), libquicr, moqtransport, moqlivemock, warp-player, birneee/quiche_moq.
  • Interop: the runner published one new cut — 2026-09-06 00:29:32 UTC — 434 / 211 / 223 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass +4 (207 → 211, a new high), fail −4, with the at-target / ahead / behind split byte-identical to Sep-5. Another within-band fail→pass tail, no reclassification or new endpoint. Still targets draft-18. See interop-runner.

Activity (Sep 5 → Sep 6) — the WG moves URI resolution + TLS cert matching out of the transport draft: Cullen Jennings revises draft-jennings-moq-discovery to -02 and proposes it as the separate home; Slack quiet; moq-dev lands ~41 PRs and moq-rs builds a moq-test scoreboard verifier; interop nudges +10 to a new high.

A quiet post-hackathon window whose one durable WG development is a document-scoping decision: MoQT should not itself specify how a client resolves a moqt:// URI or how a TLS certificate matches that URI — that belongs in a separate draft. On Sep-5 16:22 UTC Cullen Jennings posted [Moq] “URI Resolution for MOQT and TLS cert matching” to the MOQ list (permalink, verified real via raw fetch + 404 control): the transport draft “is missing information on how to implement DNS resolution of URI and how the TLS certificate matches to the URI,” and after discussion on transport issue #1839 “a separate spec is probably the best way to resolve this” — it needs review from “the DNS and Certificate people,” which a standalone doc eases. He and Suhas Nandakumar offer [[moq-discovery|draft-jennings-moq-discovery]], which they revised to rev-02 (datatracker, Sep-5 16:27 UTC; source repo now suhasHere/draft-jennings-moq-discovery), as that home — though the -02 abstract is still scoped to DNS/mDNS discovery (SVCB/HTTPS, SRV, DNS-SD), so the URI-resolution/cert-matching content is the proposed expansion, not yet in the published text. On the transport side the move is tracked by OPEN PR #1909 “Move URI resolution to a separate draft” (Jennings, Sep-5) and its precursor PR #1901 “start design questions for URI resolution and cert matching” (Sep-3). Otherwise the moq-transport editors merged only a trivial editorial fix (#1905 “Deleted incorrect word,” martinduke, +2/−2), with #1904 (“warning about fancy setup options”) still OPEN. Slack #moq carried no new in-window traffic — the newest message is still Aman Sharma’s Sep-5 00:40 CEST FORWARD=0 note on the Nokia moqt-nr thread (logged in the Sep-4→5 entry). Implementations: moq had another busy day (~41 PRs) and moq-rs built a moq-test generator + scoreboard verifier into the relay (detail below). Interop: the Sep-5 00:25:46 cut — 434 / 207 / 227 / 0 (at-target draft-18 298 · ahead 19 · behind 117) — is pass +10 (197 → 207, a new high) with the version split byte-flat, the tail of the Day-3 relay fixes. Datatracker WG-side flat (transport-20 stands, no rev-21); no weekly GitHub digest yet (~Sep-6); no new MoQ Monthly (#2); no open wiki issues.

URI resolution + TLS cert matching → a separate draft

The transport draft defines how a moqt:// session behaves once connected but leaves two adjacent questions open: how a client turns a moqt URI into an endpoint via DNS, and how a server’s TLS certificate is validated against that URI. Cullen Jennings’s Sep-5 list post frames the WG’s converged answer — “a separate spec is probably the best way to resolve this” (from issue #1839) — with the practical rationale that a standalone document is easier for the DNS and certificate reviewers to sign off than text buried in the transport draft. Jennings and Suhas Nandakumar (both Cisco) put forward [[moq-discovery|draft-jennings-moq-discovery]] as that home and bumped it to -02 the same afternoon. The draft was first tracked as a DNS/mDNS discovery draft (rev-00, Aug-14; see discussions-2026-08); this is the moment it graduates from a first-look individual I-D to the WG’s candidate answer for a concrete transport gap. Transport-side, the split is being executed by OPEN PR #1909 (“Move URI resolution to a separate draft”) and the earlier design-questions PR #1901, and it sits alongside the URI-query-scope work already in draft-20 (#1855). See moq-transport and moq-discovery.

Spec: a trivial editorial merge, and a Slack lull

Beyond the URI-resolution PRs, the moq-transport draft-21 restructuring produced only a one-word editorial fix in-window (#1905, martinduke, +2/−2), with #1904 (a warning about “fancy” setup options) still OPEN. The three Sep-4 open questions (#1906 0-RTT, #1907 cache-availability, #1908 Object Status/Properties on Subgroup streams) saw no new activity. msf / loc / secure-objects / cmsf / catalog-format / privacy-pass were all quiet, and Slack #moq produced no new top-level message or thread reply in the window — the relay-conformance sweep that dominated Sep 2–4 has paused (Miniero had deferred his remaining imquic bugs to “Monday”).

Implementations: moq-dev’s io_uring/qlog + hardware-codec day; moq-rs adds a moq-test scoreboard

  • moq merged ~41 PRs Sep 5–6 (Luke Curley + Franz Heinzmann/Frando; no in-window release — moq-relay v0.14.15 from Sep-2 stands). Notable: #3422 “key publisher’s TRACK_INFO cache by broadcast, not path” (+8399/−2369, a large js/net bug fix), #3426 a big site/docs reorg (+2393/−11423), #3354 an Android MediaCodec encoder/decoder (Frando), the breaking #3412 “make every blocking operation cancellable with context” (Go API) and #3400 “fold serving into origin::Producer::dynamic and let broadcasts announce themselves”, transcode-ladder + openh264 leak fixes (#3381, #3357), and an io_uring observability pair — qlog traces from the io_uring workers (#3420) and per-worker io_uring counters at /metrics (#3408) — plus quiche-backend shared-cert semantics (#3418) and a run of quest planning-doc PRs. Eighteen more PRs opened Sep-5 (e.g. ANNOUNCE_PATTERN wildcard drafts #3457, mapping stream reset codes to the negotiated draft #3450), two from external contributor steelhead99x (OBS dock features).
  • moq-rs merged #234 “add moq-test generator and scoreboard verifier” (+2281/−15, englishm-cloudflare, Sep-5) — building the ecosystem’s moxygen-style moq-test conformance generator + a scoreboard verifier directly into the moq-rs moq-test-client, a second conformance-tooling front alongside moxygen’s harness. No new release (moq-relay-ietf v0.7.26 stands).
  • Quiet: moq-js, moqtail, imquic (repo), moxygen (only OPEN #227), quiche (no Sep 5–6 moqt commits; 1da9de48 was Sep-4), aiomoqt (rc5 was Sep-4), libquicr (#918 was Sep-4), moqtransport, moqlivemock, warp-player, birneee/quiche_moq.

Interop: +10 to a new high, split byte-flat

The runner published one new cut — 2026-09-05 00:25:46 UTC — 434 / 207 / 227 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass +10 (197 → 207, a new high), fail −10, with the at-target / ahead / behind split byte-identical to the Sep-4 cut. All ten gains are cells flipping fail→pass within their existing version band — the tail of the Day-3 relay-sweep fixes (Nokia’s duplicate-object clearance + FETCH-inclusive fix, imquic’s priority fix) landing on the nightly rather than any new endpoint or reclassification. Still targets draft-18. See interop-runner.

Activity (Sep 4 → Sep 5) — co-chair Martin Duke opens the draft-18 → draft-19 consensus call; the hackathon relay-conformance sweep runs a Day-3 against Nokia and imquic as its Sep-3 fixes finally land in the nightly (+30 pass); Steven Riedl files an ad-signaling individual draft.

The window’s durable headline is a WG process event: on Sep-4 20:58 UTC co-chair Martin Duke opened the consensus call on the draft-18 → draft-19 diff (permalink, verified real via raw fetch + 404 control), asking the WG to file any concerns as GitHub issues on or before 18 September 2026, with the author-tools iddiff. As with the -17 → -18 call (opened Jul-6, concluded Jul-24), the formal consensus process runs behind the editors’ cutting cadence — draft-20 already shipped Aug-31 and the draft-21 restructuring is underway — so this ratifies the -19 delta (Range Filters #1765, MAX_REQUEST_UPDATES #1613, multiple concurrent subscriptions per Track #1775; see moq-transport) after the fact. Alongside it the editors kept the draft-21 editorial restructuring moving (all ianswett, Sep-4, editorial: #1900 “Mandatory to understand Track Properties,” #1903 “Add Document structure (Section 1.1),” #1902 .gitattributes) and three new open questions landed as issues: #1908 (Duke) “Can an Object in Subgroup streams have Status and Properties?”, #1907 (sharmafb) “Interest in an extension for cache availability and cache status” (echoing afrind’s Aug-29 CACHE_DISTANCE musing), and #1906 (Duke) “0-RTT.” A new individual I-D appeared on the datatracker: Steven Riedl (Pluto TV / Paramount)‘s draft-riedl-moq-ad-creative-signaling-00 (“Ad Creative Signaling over the MSF Event Timeline,” posted Sep-3 18:21 UTC) — his first MoQ draft, built on Will Law’s MSF event-timeline work; and msf gained a related naming issue (#208, Will Law — the catalog namespace uses / for tuple boundaries but addressing uses -). On Slack #moq, the hackathon’s relay-conformance sweep ran a Day-3 against Nokia’s moqt-nr and Miniero’s relay (detail below). Interop: the Sep-4 00:24:41 cut — 434 / 197 / 237 / 0 (at-target draft-18 298 · ahead 19 · behind 117) — is where the Sep-3 sweep’s fixes finally show: pass +30 (167 → 197, a new high) and skip 13 → 0. Datatracker WG-side flat (transport-20 stands, no rev-21), no weekly GitHub digest yet (~Sep-6), no new MoQ Monthly (#2), no open wiki issues.

The draft-19 consensus call

Co-chair Martin Duke opened it on the MOQ list Sep-4 20:58 UTC in three lines: “This begins the consensus call for the diff between draft-18 and draft-19. Please file issues in github on any concerns on or before 18 September 2026,” with the iddiff link. Two things are worth pinning down. First, it is genuinely real — the wiki has twice before had a subagent hallucinate a “consensus call on draft-18 / Martin Duke” thread, so this one was verified by fetching the archive permalink (HTTP 200, valid gmail DKIM, From: Martin Duke) against a fabricated-message-id control (HTTP 404). Second, the consensus process is running behind the drafts: draft-19 was cut Jul-6, draft-20 shipped Aug-31, and the editors are already producing draft-21 — so this call retroactively settles the -18 → -19 baseline (Range Filters, MAX_REQUEST_UPDATES, per-Track concurrent subscriptions) rather than gating a fresh revision, exactly as the -17 → -18 call did (Jul-6 → Jul-24). See moq-transport.

Day-3 of the relay-conformance sweep: Nokia and imquic

The same loop the hackathon established (afrind + Aman Sharma run moxygen’s moq-test client against a live relay, post the failures, the author fixes and redeploys) ran a third day, now narrowed to the two relays with bugs still open from Sep-3:

  • Nokia’s moqt-nr — Yu You diagnosed that the Sep-3 priority-0 and duplicated-object failures shared one root cause (“MOQT allows the uni-stream to arrive before the alias is known” — a pending-buffer object and its live-forwarded copy both delivered as 0/0), and redeployed with fixes, also clearing a FETCH End-Location off-by-one Aman Sharma found (the relay treated End Location as inclusive; the spec says “End Location: The end Location, plus 1”). afrind’s re-run confirmed the duplicate object is gone, but publisher priority is still wrong — now Actual=128 Expected=200 (a partial fix from 0, still not the DEFAULT_PUBLISHER_PRIORITY of 200). Yu You asked for a copy of the test client; afrind pointed him at moxygen’s CONFORMANCE_README.md, noted the openmoq/moxygen fork carries a client bug-fix not yet upstreamed (and publishes pre-built Docker images/tarballs), and linked moxygen PR #227 (“moqtest: per-object and track-level deadline,” afrind, OPEN). Aman then found a new bug: with subscriber A already attached, subscriber B subscribing to the same track with FORWARD=0 still receives objects for the first group. See yu-you and interop-runner.
  • Miniero’s relay — Miniero reported the Sep-3 priority issue fixed. afrind surfaced a new one: subscribing to a one-object track, the client gets the object and PUBLISH_DONE but the object stream never closes (no FIN within 1 s) — Miniero: “I may not be closing those, I’ll have to check.” Aman confirmed the Sep-3 AbsoluteRange bug reproduces only when the start group is 0 (why Miniero couldn’t replicate it): the relay uses end_group == 0 as an “unbounded” sentinel, so a range ending at group 0 is mis-read as open-ended. Miniero’s demo publisher starts objects at group 1, so he’ll retest that path “on Monday.” Aman also flagged the relay sending duplicate NAMESPACE_DONE messages. See imquic.

Spec: draft-21 restructuring continues; three new open questions

The moq-transport editors merged three more Sep-4 editorial PRs toward draft-21 (all ianswett): #1900 “Mandatory to understand Track Properties” (+1/−1), #1903 “Add Document structure (Section 1.1)” (+25/−11), and #1902 .gitattributes — continuing the reordering from the Sep-1/3 batch (#1899 merged late Sep-3). Three new design questions opened as issues:

  • #1908 (Martin Duke) — “Can an Object in Subgroup streams have Status and Properties?” — a wire-semantics clarification on what an Object carried on a subgroup stream may include.
  • #1907 (sharmafb) — “Interest in an extension for cache availability and cache status” — a request-for-interest that lines up with afrind’s Aug-29 Slack CACHE_DISTANCE musing (conveying cache hit/miss depth across relay chains).
  • #1906 (Martin Duke) — “0-RTT” — opening the question of 0-RTT session establishment for MoQT.

Added to the moq-transport open-design-questions list. msf also gained issue #208 (Will Law): the catalog namespace uses / for tuple boundaries while addressing uses -, an inconsistency to reconcile. loc / secure-objects / cmsf / catalog-format / privacy-pass all quiet.

A new individual draft: ad creative signaling over the MSF event timeline

Steven Riedl (Pluto TV / Paramount) filed draft-riedl-moq-ad-creative-signaling-00 (“Ad Creative Signaling over the MSF Event Timeline,” datatracker rev-00, posted 2026-09-03 18:21 UTC) — his first individual MoQ I-D, and the first draft to build directly on Will Law’s MSF event-timeline mechanism. It carries the ad-supported-streaming / SSAI operator perspective Riedl has been bringing to interop (his stitcher-moq relay runs two continuous live SSAI channels) into the standards track: signaling ad-creative boundaries as event-timeline entries so downstream players and stitchers can act on them. Not yet WG-adopted or discussed on-list; recorded here and on steven-riedl as it appears.

Implementations: moq-dev busy, quiche trims request-id messages, aiomoqt rc4/rc5

  • moq had a busy Sep 4–5 (~30 PRs, Luke Curley + Franz Heinzmann/Frando; no in-window release). Notable: #3379 “stop logging credentials in relay URLs and RTMP stream keys” (+152/−74, a security fix), #3396 “split moq-watch latency into delay + buffer, rename --latency-max” (breaking, +540/−428), #3386 “treat a media gap as a hole rather than a splice” in moq-audio (+616/−72), an H.265 suffix-SEI fix (#3384), and Frando’s #3389 “control streams send order above media” and #3388 “decode avc1 with no avcC as Annex-B” — plus a run of quest planning-doc PRs and dependabot bumps.
  • quiche broke its post-Aug-28 quiet in the moqt dir with one Sep-4 commit (1da9de48) “Remove MAX_REQUEST_ID and REQUESTS_BLOCKED” — trimming the request-ID flow-control messages the draft has been shedding.
  • aiomoqt (Marzot) cut two more pre-releases — 0.11.0rc4 (Sep-4 02:16Z) and 0.11.0rc5 (Sep-4 23:12Z) — following Sep-3’s rc3; no published release notes.
  • libquicr merged #918 “Alternative notify” (Rich Logan, +160/−23).
  • Quiet: moq-js, moqtail, imquic (repo — the relay fixes above were live, not commits), moxygen (repo — only OPEN #227), moq-rs (#232/#233 were Sep-3), moqtransport, warp-player, moqlivemock (only Sep-3 issue #140), birneee/quiche_moq.

Interop: the Sep-3 sweep’s gains land — pass +30, skip → 0

The runner published one new cut — 2026-09-04 00:24:41 UTC — 434 / 197 / 237 / 0 (at-target draft-18 298 · ahead 19 · behind 117): pass +30 (167 → 197, a new high), fail −17, and skip 13 → 0 off the Sep-3 00:26:57 cut (434 / 167 / 254 / 13). Unlike the Sep-3 nightly, which ran before the day’s relay fixes, this one ran after the Sep-3 sweep (Nokia patch, imquic prefix-routing restore, aiomoqt rc3 with d16+d18 12/12), so the fixes finally reach the matrix — and the previously-skipped 13 cells all now execute. at-target ticked 302 → 298 (−4) while ahead rose 15 → 19 (+4), so the pass gains spread across both at-target and ahead cells. Still targets draft-18. See interop-runner.

Activity (Sep 3 → Sep 4) — the draft-18 hackathon rolls into a Day-2 relay-conformance sweep: Nokia’s moqt-nr, Miniero’s imquic relay, and aiomoqt’s “ersatz-relay” each run the moxygen find-fix loop, prefix-based routing emerges as the recurring gap, and two moq-net wire bugs get diagnosed for upstream. The Sep-2 hackathon’s method — afrind runs moxygen’s moq-test conformance client against a live relay, posts the failures to Slack #moq, the author fixes and redeploys — carried into Sep-3 and swept three more relays, with Aman Sharma doing most of the bug-finding and Steven Riedl’s stock-moq-dev moq-net client as the clean positive control. Nokia’s moqt-nr patched overnight to pass 6 interop clients (12/12 on both transports from Riedl’s client) and registered for draft-19 in the runner (the first draft-19 relay registration), though afrind’s readiness probe still catches it zeroing publisher-priority and the contains-last-in-group flag on the way through; Miniero’s relay got prefix-based routing restored plus fixes for a pending-publisher-gone hang and an unanswered TRACK_STATUS; and aiomoqt’s “ersatz-relay” (Marzot) cut 0.11.0rc3 and drove its CI conformance job to its first green run — d16 + d18 12/12 — after fixing an undefined PUBLISH_NAMESPACE_DONE, wrong-stream REQUEST_ERROR, equality-vs-prefix namespace matching, and a delivery-semantics bug. The sweep’s cross-cutting lesson is that prefix-based announce routing is the recurring relay-conformance gap (moq-net registers announce-interest with a root prefix, so it needs it), and it surfaced two concrete moq-net / moq-rs wire bugs headed upstream: a spurious “Number of Extensions” varint in every moq-rs SUBSCRIBE_OK, and an ALPN-vs-SETUP version-selection mismatch in moq-net. On spec, the moq-transport editors merged one more draft-21 restructuring PR (#1899, error-handling/grease reorder, editorial) and moq-rs landed inbound SUBSCRIBE_TRACKS (#232). Interop: the Sep-3 00:26:57 cut — 434 / 167 / 254 / 13 (at-target 302) — was +2 pass with the split byte-flat, an early-UTC nightly that ran before the day’s relay fixes. Datatracker flat (transport-20 stands, no rev-21), no new individual draft, no weekly GitHub digest yet (~Sep-6), no new MoQ Monthly (#2), no open wiki issues.

The Day-2 relay-conformance sweep: Nokia, Miniero, aiomoqt

Each of three relays went through the same loop afrind and Aman Sharma ran against moqtail and moq-rs on Sep-2 — run moxygen’s moq-test client, surface the failures, fix live:

  • Nokia’s moqt-nr (moqt.nokiaresearch.com:4443) — Yu You patched overnight and reported 6 clients passing (stitcher-moq, moq-dev-rs, moq-rs-draft-18, moq-dev-js, moqtopus, moq5), and Steven Riedl’s client scored 12/12 on both transports against the updated relay (last night’s announce-subscribe / subscribe-before-announce timeouts now clean). But afrind’s readiness probe still failed: the relay zeroes two subgroup-header fields on the way through — publisher priority (200 → 0) and the contains-last-in-group flag (1 → 0) — so the client sees the wrong priority and a duplicated object. Aman flagged three more: a REQUEST_OK for SUBSCRIBE_NAMESPACE carrying an undefined Type-0 parameter, a FIN-instead-of-reset when an upstream publisher resets a subgroup mid-stream, and the relay never sending NAMESPACE_DONE when a publisher resets its PUBLISH_NAMESPACE stream or closes its session. Nokia now advertises draft-19 and registered moqt-nr for draft-19 in the runner (runner #124 + an add moqt-19 commit; see interop-runner).
  • Miniero’s relay (llminiero.it:9000) — at afrind’s request Miniero restored prefix-based routing to the relay (a capability the imquic relay had lost), and fixed two bugs Aman found: (1) a SUBSCRIBE for a published-then-released namespace got no response at all — the relay forwarded the SUBSCRIBE upstream to a departed publisher and had no timeout handler, so the request hung forever (Miniero reproduced it by killing the publisher so no CONNECTION_CLOSE is sent; the relay now answers a REQUEST_ERROR once it detects the publisher is gone), and (2) TRACK_STATUS was never answered. Still open at EOD: the relay drops publisher priority (200 → 0) across the hop, and doesn’t honour AbsoluteRange subscription ranges (returned an object in group 1 for a range ending at group 0). See imquic.
  • aiomoqt’s “ersatz-relay” (Marzot) — Aman’s testing found the relay sending PUBLISH_NAMESPACE_DONE (a message draft-18 removed — cancellation is RESET_STREAM/STOP_SENDING), REQUEST_OK/REQUEST_ERROR on the control stream instead of the request’s own bidi stream, a namespace equality check instead of prefix matching, a delivery-semantics bug (a second pub/sub run against a freshly-started relay delivered nothing), and no TRACK_STATUS. Marzot cut aiomoqt 0.11.0rc3 to PyPI (Sep-3 14:23Z), fixed the batch, and the aiomoqt CI conformance job reached its first green run — d16 + d18 12/12 — with the relay gaining real fan-out (SUBSCRIBE_TRACKS → PUBLISH, §9.5) plus GOAWAY send/receive and SETUP validation. The self-described “pseudo-relay” earned a new name: “ersatz-relay now copyrighted.” See aiomoqt.

Prefix-based routing is the recurring relay-conformance gap

A single design theme ties the three relays together: prefix-based announce routing. Steven Riedl gave the concrete reason from the client side — moq-net registers announce-interest with a root/empty prefix, so it needs a relay that routes announcements by prefix (a native client that subscribes to an exact namespace still works against exact-match relays, the same axis as the aiomoqt equality-vs-prefix bug). imquic had lost prefix routing, aiomoqt’s relay did an equality check, and the Sep-2 moqtail and moq-rs relays had the same FETCH-side gap — so restoring prefix routing is what unblocks announce-subscribe across the roster. moq-net’s clean 6/6 (Sep-2, vs relay18) and 12/12 (Sep-3, vs Nokia) is the positive control that isolates the gap as relay-side, not client-side.

Two moq-net / moq-rs wire bugs diagnosed for upstream

The sweep surfaced two concrete bugs in the moq-net / moq-rs Rust stack that Steven Riedl and Giovanni Marzot said they would take upstream to moq-dev:

  • Spurious SUBSCRIBE_OK extensions count. Marzot’s analysis: moq-rs’s KeyValuePairs::encode (moq-transport/src/coding/kvp.rs) unconditionally writes a len() count before the KVP run, and SubscribeOk reuses that container for the trailing Track Extensions — so every SUBSCRIBE_OK moq-rs emits carries a spurious “Number of Extensions” varint (a captured 00). Draft-16 Figure 12 defines Track Extensions as a bare KVP sequence running to the message Length, with no count. moq-rs’s decoder is symmetric so it interops with itself; moxygen writes to-end per spec, so the two disagree on the wire. (For parameters the container’s count happens to coincide with the message’s explicit “Number of Parameters” field, so only the extensions position is wrong.)
  • ALPN-vs-SETUP version selection. Riedl traced an aiomoqt → stitcher-moq failure (SETUP completes and reports a compatible version, then every subsequent case times out) to moq-net’s NEGOTIATED = [Lite02, Lite01, Draft14]: for drafts 15–19 moq-net picks the wire version from the ALPN (moqt-15…moqt-19), while the SETUP version list only governs draft-14 and moq-lite. If a peer’s SETUP-probe self-selects a draft that doesn’t match the connection’s ALPN, both ends look compatible at SETUP but then frame differently and the first post-SETUP control message goes nowhere. Riedl also noted moq-net’s ietf/publisher.rs passes a literal 404 to reject_subscribe with no named SUBSCRIBE_ERROR code to map from — another item for moq-dev.

Spec: draft-21 restructuring continues; moq-rs adds inbound SUBSCRIBE_TRACKS

The moq-transport editors merged one more draft-21 restructuring PR — #1899 “Move Error Handling and Grease ahead of considerations” (ianswett, +480/−479, a pure section relocation) — continuing the editorial reordering from the Sep-1/2 batch. No new WG issues; msf / loc / secure-objects / cmsf / catalog-format / privacy-pass all quiet, and the datatracker held flat (transport-20 stands, no rev-21). On the implementation side, moq-rs landed inbound SUBSCRIBE_TRACKS support (#232, +2004/−39) plus a SUBSCRIBE_OK-params / PUBLISH_DONE-details / clean-subgroup-close fix (#233), both on draft-18-dev (no release; v0.7.26 stands). libquicr did a major session refactor (#892, +7346/−6612) plus callback/exception cleanups (#925–#928). Quiet: moq-js, moqtail, moxygen, quiche (moqt dir last Aug-28), warp-player, moqtransport, birneee/quiche_moq; moq-dev merged only a VAAPI-by-default build change (#3353, no in-window release), and moqlivemock saw a new issue #140 “Add LOCMAF subtitles” (avelad).

Interop: nightly holds flat, pre-fix

The runner published one new cut — 2026-09-03 00:26:57 UTC — 434 / 167 / 254 / 13 (at-target draft-18 302 · ahead 15 · behind 117): pass +2, fail −2, with the at-target / ahead / behind split byte-flat vs the Sep-2 21:38:48 hackathon cut (434 / 165 / 256 / 13). That nightly ran at ~00:27 UTC, before the Sep-3 daytime relay fixes (Nokia patch, imquic prefix routing, aiomoqt rc3), so the sweep’s gains won’t reach the matrix until the next cut. Still targets draft-18. See interop-runner.

Activity (Sep 2 → Sep 3) — the draft-18 virtual interop hackathon turns the conformance harness + live relays into a rapid bug-find/fix loop: moqtail leaps 4/17 → 53/59 in one evening, moq-rs clears conformance Sections 1–7, moxygen owns up to failing its own suite over a real network, and a Python newcomer (aiomoqt) cuts 0.11.0rc2. The window is dominated by Mike English’s all-day Sep-2 Virtual Interop Hackathon on draft-18 (announced Aug-21; the last interop hardening before draft-20 becomes the target at the Oct 12–15 Seattle interim). The day’s method was a tight loop: afrind runs moxygen’s draft-18 conformance script — now extended with Section 9 (FETCH) and Section 10 (Joining FETCH), “new as of Monday” — against each live relay registered in the interop-runner, posts the per-section pass matrix to Slack #moq, the relay author fixes the bug and redeploys, repeat. It worked: moqtail (Zafer Gürel / OzU) brought a fresh draft-18 relay online at relay18.moqtail.dev, registered it in the runner (runner #121), and drove it from 4/17 → 38/59 → 53/59 over the evening as afrind and Aman Sharma (a moq-transport editor) surfaced a string of real relay bugs and Zafer landed live fixes (#380–#383); moq-rs (English) reached Sections 1–7 passing (43/59 on both QUIC and WebTransport) after four Sep-2 fixes (#228–#231), up from Sections 1&2 on Sep-1; and moxygen itself, after afrind’s “Truth in Lending: I failed my own test suite when run over a real cross-country network instead of locally. How embarrassing” (58/76 quic, 69/76 WT), climbed back to 74/76 quic, 75/76 WT as the harness’s own network-timing bugs got fixed. A new implementation joined the fray: aiomoqt (Python asyncio, Giovanni Marzot / Vivoh) cut 0.11.0rc2 to PyPI (“all 8 jobs green”), added a relay role (“pseudo-relay … next stop ersatz-relay”), and ran moq-test conformance from a pinned moxygen build. Steven Riedl (Pluto TV)‘s moq-net client — stock moq-dev — scored 6/6 on both transports against relay18, serving as a clean positive control that isolates the recurring relay-side prefix-routing gap (shared by imquic, moq-rs and aiomoqt). The runner absorbed the new endpoints: mlmrel (runner #120), moq-playa (OpenMOQ’s @moqt TypeScript client, runner #119), the moq.dev client bumped to 0.19 (runner #122), and a RENDEZVOUS_TIMEOUT test spec’d (runner #123) — all merged Sep-2, all previously open. On the spec side the moq-transport editors kept the draft-21 restructuring moving (#1896 “Promote Setup Options to their own sections” merged Sep-2) and Aman Sharma opened issue #1897 “FETCH doesn’t need an End Location or End of Track.” Interop: the hackathon-day cut (2026-09-02 21:38:48) grew to 434 cells / 165 pass / 256 fail / 13 skip (at-target draft-18 302) — matrix +58, pass +22 off the morning’s 376/143 cut as the new endpoints wired in. Datatracker flat (transport-20 stands), no new individual draft, no weekly digest yet (~Sep-6), no new MoQ Monthly (#2), no open wiki issues.

The hackathon loop: moxygen conformance vs live relays

afrind’s harness runs 10 conformance sections — 1 Basic Forwarding Preferences, 2 Object/Group Counts, 3 Object Sizes, 4 Group/Object Increments, 5 End-of-Group Markers, 6 Extensions, 7 Complex Scenarios, 8 PUBLISH, 9 FETCH Ranges, 10 Joining FETCH — with Sections 9 and 10 added Sep-1. End-of-day per-relay scores (Slack #moq, Sep-2 evening CEST):

RelayResultNotes
moxygen (Meta)74/76 quic · 75/76 WTThe harness itself; recovered from a self-inflicted 58/76 over a real cross-country network
moq-rs (Cloudflare)43/59, Sections 1–7 ✅Fails Section 8 (PUBLISH) and Section 10 (Joining FETCH); “CF passes section 1-7”
moqtail (OzU)53/59 (from 4/17)Live at relay18.moqtail.dev; FETCH still needs an existing subscription
moq-net (Pluto TV, stock moq-dev)6/6 both transportsPositive control — client spec-correct; relay-side prefix routing is the gap

Bugs afrind and Aman Sharma found in moqtail (all fixed live by Zafer Gürel):

  • PUBLISH_DONE forwarded too early with a low stream count — the relay forwarded PUBLISH_DONE while subgroup streams were still outstanding, so the client’s “delivery semantics not preserved.” moxygen hides a received PUBLISH_DONE until every announced stream has opened; fixed by #382 “hold PUBLISH_DONE until its data streams have arrived.”
  • Track-record race on concurrent PUBLISH — two PUBLISHes for the same track hit a check-then-insert (has_track then add_track), so one internal record overwrote the other and a second publisher’s objects stopped flowing. Fixed by #381 (track-locking in subscribe_handler) and #383 “take or create a published track in one step.”
  • DUPLICATE_SUBSCRIPTION after a cancelled subscription — a SUBSCRIBE re-issued after the prior one was cancelled by stream reset was wrongly rejected.
  • REQUEST_ERROR on the control stream instead of the request’s own bidi stream (draft-18); no REQUEST_UPDATE handling for PUBLISH (a FORWARD change was ignored); FIN instead of reset when an upstream publisher reset a subgroup mid-stream; no prefix routing for FETCH (returned Track Not Found).

moq-rs’s Sep-2 fixes: #228 “preserve subgroup fanout,” #229 “preserve subgroup object status,” #230 (rendezvous-timeout interop scenario), and #231 “reject duplicate namespace requests locally” — carrying it from Sections 1&2 (Sep-1) to Sections 1–7. No release; v0.7.26 stands. See interop-runner Conformance sweep.

A Python newcomer hardens up: aiomoqt 0.11.0rc2 + a relay

Giovanni Marzot (Vivoh) cut aiomoqt 0.11.0rc2 to PyPI during the hackathon (pip install --pre aiomoqt==0.11.0rc2, “all 8 jobs green”) — the release that finally ships the long-in-flight SUBSCRIBE_OK vi64 decode fix (aiomoqt had been decoding the Track-Properties block with RFC 9000 varints). He also stood up a relay role — self-described “pseudo-relay … there just as a vehicle for testing pub/sub flows as both client and server” — and, prodded by testers, mused “now i may be on the slippery-slope of having to make it less pseudo … next stop ersatz-relay.” Its Sep-2 commit run (tracked on the ad-hoc interop wiki) shows genuine relay conformance work: “relay dials upstream origins,” “forward the publisher’s priority through the relay,” “relay serves the bare-PUBLISH flow,” “relay forwards objects upstream to downstream,” “relay matches announced namespaces by prefix,” “never send a control message the draft doesn’t define,” and “d18 LARGEST_OBJECT carries its Length field,” with CI running “moq-test conformance from a pinned moxygen build.” See aiomoqt.

Spec: draft-21 restructuring continues; a FETCH-range simplification is proposed

The moq-transport editors merged one more draft-21 restructuring PR on Sep-2 — #1896 “Promote Setup Options to their own sections” (+9/−11, editorial). And Aman Sharma opened issue #1897 “FETCH doesn’t need an End Location or End of Track” — arguing the FETCH range’s End Location / End-of-Track signalling is redundant, a live simplification question surfaced by the hackathon’s FETCH testing. Added to the moq-transport open-design-questions list. All other WG repos quiet.

Activity (Sep 1 → Sep 2) — the ink is barely dry on draft-20 and the editors open the draft-21 restructuring; “Forwarding Preference” is renamed to “Delivery Mode,” the long-pending interim-22 minutes finally post, and moq-rs clears conformance Sections 1 & 2 on the eve of the Sep-2 hackathon. The window’s durable spec story is that post-draft-20 editorial restructuring began the day after draft-20 shipped — exactly the interim-21-forecast pipeline (draft-20 = editorial cut → draft-21 = editorial-meeting output → draft-22 = next interop target). On Sep-1 the moq-transport editors merged a large “Draft Restructuring Phase I” (#1877, vasilvv, +3138/−3110, move-only edits), renamed “Forwarding Preference” → “Delivery Mode” (#1886, ianswett), and pushed a cluster of wire-format section-restructuring PRs (Range/Location-Filter and Track-Namespace wire-format moves, Authorization-Token-Compression section, “subscription”/Canonical-Object-Properties definitions, error-code moves) — all editorial, no new mechanisms, feeding draft-21. Two new open questions landed alongside: Swett’s issue #1875 flags that “forcing SUBSCRIBE to always use Track Alias is becoming complex” (a direct follow-on tension to the Track-Alias-re-use guidance #1856 that draft-20 just shipped, with OPEN #1876 proposing Track Alias be returned as a SUBSCRIBE_OK parameter), and vasilvv’s issue #1889 on how the multiple subscription-pausing mechanisms interact. On the datatracker/list, the interim-2026-moq-22 (Aug-24) minutes finally posted (datatracker doc rev-00, Aug-31 12:51 UTC; Magnus Westerlund announced them on the list Sep-1) — resolving a multi-update “minutes unposted” watch — confirming the Aug-24 decisions (keep Set-ID “or” filters; add Parameters to SUBSCRIBE_NAMESPACE, unilateral-only; relays ignore conflicting immutable cache values; nonexistent→existent object = malformed-track, not a connection error; PR #1770 default-priority closed pending list feedback; Top Tracks to lean on PUBLISH_NOTIFY). No new draft revision (transport-20 stands), no new individual draft, no new weekly digest (next due ~Sep-6), no new MoQ Monthly (#2). On Slack #moq, the conformance thread turned another notch: after English landed a datagram fix on draft-18-dev, afrind re-ran the moxygen suite (Sep-1 05:08 CEST) and reported moq-rs-18 now passes Sections 1 and 2 (up from Section 1 tests 1–3 with datagrams failing) — “Section 3 had some troubles, I’m checking.” On implementations, two tagged releases and a new relay: moq cut moq-relay 0.14.14 (Sep-2) and began honoring draft-20 Location Filters (#3297); moqtransport v0.12.0 “receive-side fixes for relays”; and moqlivemock gained a new mlmrel relay component (fanout + group cache + FETCH relaying, #136, tobbee, +2913/−233). moq-rs landed a large rendezvous-teardown fix on draft-18-dev (#227, +4308/−738), no release. The interop-runner enrolled a stitcher-moq client (runner #116) and gave moq-go a draft-20 (moqt-20) ALPN (#117); the conformance-test integration (runner #103) remains OPEN. Interop: the Sep-1 cut — 347 / 126 / 210 / 11 — trimmed the matrix by 4 cells but saw at-target draft-18 jump +21 to 231 (behind −25 to 113) as implementations converge on draft-18 ahead of the Sep-2 virtual interop hackathon (today). No open wiki issues.

WG: post-draft-20 editorial restructuring begins — “Forwarding Preference” becomes “Delivery Mode”

One day after moq-transport draft-20 shipped, the editors opened the draft-21 restructuring pass — the “editorial meeting’s output” the interim-2026-moq-21 minutes named (draft-20 editorial cut → draft-21 editorial-meeting output → draft-22 next interop target). All Sep-1, all editorial, no new wire mechanisms:

  • “Draft Restructuring Phase I: move-only edits” (#1877, vasilvv, +3138/−3110) — a large section-reordering pass that deliberately moves text without changing it, so the substantive diffs that follow are readable.
  • Rename “Forwarding Preference” → “Delivery Mode” (#1886, ianswett), with a companion pass removing the old “Forwarding Preference” mentions (#1891, vasilvv). A terminology change touching one of MoQT’s core concepts (how a track’s objects map onto streams/datagrams) — durable enough that implementers and the wiki should start using “Delivery Mode.”
  • Structural section moves: restructure/reorder “Publishing and Receiving Tracks” (#1885/#1893, afrind); pull the Range Filter (#1892), Location Filter (#1888), and Track Namespace (#1887) wire formats into their own subsections; add an Authorization Token Compression section (#1882); define the term “subscription” (#1884, vasilvv) and a Canonical Object Properties section (#1883, ianswett); plus error-code/section moves (#1878–#1881) and the datagram/object-header editorial refactor (#1874, suhasHere) that was left OPEN at the draft-20 cut.
  • Still OPEN after the day’s work: a Filter Sets subsection (#1894, suhasHere), a Namespace Discovery refactor (#1890, suhasHere), the Track-Alias-as-SUBSCRIBE_OK-parameter change (#1876, ianswett), and the two structural diagrams carried over from draft-20 (#1865/#1866, vasilvv).

Two new open questions surfaced the same day, both added to the moq-transport open-design-questions list:

  • Swett’s issue #1875 — “Forcing SUBSCRIBE to always use Track Alias is becoming complex.” This is a direct follow-on tension to the Track-Alias-re-use guidance (#1856) that draft-20 just shipped: the always-Track-Alias model is accreting edge cases, and OPEN #1876 proposes returning Track Alias as a SUBSCRIBE_OK parameter instead. Worth watching as the restructuring settles.
  • vasilvv’s issue #1889 — “Document how multiple mechanisms for pausing subscriptions can interact” (Range/Location filters, FORWARD/pausing, subscription state) now that several pausing knobs coexist.

All other WG repos (msf / loc / secure-objects / cmsf / catalog-format / privacy-pass) were quiet. Details on moq-transport.

Datatracker & list: the interim-22 (Aug-24) minutes finally post

After sitting unposted for a week — a “minutes pending” line the log carried across ~six updates — the interim-2026-moq-22 minutes (Aug-24 virtual interim) landed on the datatracker (minutes-interim-2026-moq-22-202608241630, rev-00, posted 2026-08-31T12:51 UTC) and Magnus Westerlund announced them on the mailing list (Sep-1 08:10 UTC, permalink). The minutes confirm the Aug-24 session’s decisions:

  • Keep the Set-ID-based “or” filters — the group rejected removing them (useful for property filtering and relay deduplication).
  • Add Parameters to SUBSCRIBE_NAMESPACE (aligning with PUBLISH_NAMESPACE extensibility), restricted to unilateral signaling — no REQUEST_UPDATE (the direction Swett’s PR #1858 took, Fixes #1800).
  • Cache conflict resolution: when a relay receives conflicting immutable field values, it ignores the later updates (issue #1703).
  • State transitions: a nonexistent→existent object-state transition is a “malformed track” error, not a connection-terminating protocol error.
  • PR #1770 (default/updatable priority) was closed pending fresh mailing-list feedback; Top Tracks (#1830) will lean on the newly-merged PUBLISH_NOTIFY mechanism.
  • Action items: Mo Zanaty + Ian Swett to write editorial guidance on joining-fetch configuration; Mo to update the Top Tracks PR; editors to take remaining issues to the in-person editorial meeting (Seattle, Oct).

Otherwise the document layer held flat: draft-ietf-moq-transport-20 stands (no newer revision), no new individual draft was submitted, the weekly GitHub digest is not yet due (last Aug-30; next ~Sep-6), and MoQ Monthly remains at #2. See interim-meetings.

Slack: moq-rs conformance reaches Sections 1 & 2

The Aug-30 #moq conformance thread advanced again. After English’s datagram fix landed on the draft-18-dev branch (Aug-31 23:35 CEST), afrind re-ran the moxygen conformance suite and reported (Sep-1 05:08 CEST): “Sections 1 and 2 passed for your moq-rs-18 Mike. Section 3 had some troubles, I’m checking.” That is a clean step up from the Aug-31 state (Section 1 tests 1–3 passing, Test 4 DATAGRAM failing) — the datagram fix worked, moq-rs now clears the full first two conformance sections on QUIC and WebTransport, and Section 3 is the current front. #moq-rs, #moq-js were silent; the #moq-interop-runner channel’s moq-test-into-the-runner thread was all Aug-31 (already logged with runner #103). See moq-rs and interop-runner.

Implementations: two releases, a new Eyevinn relay, and draft-20 Location Filters

  • moq (Curley) — cut a release (moq-relay 0.14.14, Sep-2 00:02 UTC, via #3309; libmoq 0.5.12, moq-token-cli 0.5.46, hang 0.20.9) and began honoring draft-20 Location Filters (#3297 “honor draft-20 Location Filters and serve fills”, +1619/−101) — moq-dev tracking the just-published draft-20 filter semantics on its IETF adapter path — plus draft-20 merge-regression repairs (#3301) and a timescale-stamping fix (#3310), atop the usual high-volume chore(quest) planning churn.
  • moqtransport — tagged v0.12.0 “receive-side fixes for relays” (Sep-1 10:39 UTC): #23 “receive side: complete delivery, surface subgroup ends” (+488/−59) and #24 running the session suite under testing/synctest. Bumps the Go library one minor past the v0.11.1 that the v0.14.0 Eyevinn-stack tags shipped on.
  • moqlivemock — gained a new relay component mlmrel: #136 (tobbee, +2913/−233, Sep-1) adds “a MoQ relay with fanout, group cache and FETCH relaying.” The Eyevinn stack — previously publisher (mlmpub) + subscriber (mlmsub) + interop client (mlmtest) — now has its own relay, with OPEN follow-ups for moqt:// subscriber URLs (#134) and further relay work (#135). No new tag — v0.14.0 stands.
  • moq-rs — #227 “preserve ordered rendezvous teardown” (nnazo, +4308/−738, Sep-1 18:31) and #226 “await publish terminal delivery” (Sep-1 00:33), both on draft-18-dev. The umbrella #176 “Support draft-18” stays OPEN; no new release — v0.7.26 stands.
  • moq-interop-runner — merged #116 “Add stitcher-moq test client” (Steven Riedl, +4303/−3) — so Pluto TV / Paramount’s stitcher-moq is now a client as well as the relay it was enrolled as Aug-27 — plus #117 advertising draft-20 (moqt-20) ALPN for moq-go, #118 image-rebuild workflow alignment, and #114 moqlivemock draft-18. PR #103 (the direct-PUBLISH-lifecycle conformance tests) and companion #115 (data-plane tests) remain OPEN; new OPEN #119 adds moq-playa (a @moqt TypeScript draft-18 client).
  • libquicr — #924 “Thread safe connection delegate” (RichLogan, +21/−9). Quiet: moq-js, moqtail, imquic, moxygen, moqx (one new OPEN issue #663 “Crash during pub teardown”), quiche (moqt dir last 3c4812c Aug-28), warp-player (v0.14.0), birneee/quiche_moq.

Interop: matrix trims −4 but draft-18 convergence pushes at-target +21

The runner published one new cut — 2026-09-01 00:31:10 UTC — 347 / 126 / 210 / 11 (at-target draft-18 231 · ahead 3 · behind 113). The matrix shrank 4 cells (351 → 347, skip +1 to 11), but the composition shifted markedly toward the target: at-target draft-18 rose +21 (210 → 231) while behind fell −25 (138 → 113) — roughly two dozen cells reclassifying from an older draft onto draft-18 as implementations converge ahead of the Sep-2 virtual interop hackathon (today). Pass ticked +1 to 126; the relay roster now lists moq-rs, moq-rs-draft-14 and moq-rs-draft-18 as distinct endpoints, reflecting the conformance split. This is the draft-18 broadening the hackathon is meant to harden — see interop-runner.