Repository navigation
quest: import the draft-18 TRACK_STATUS issues - #7441
Conversation
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 353bbd9
No actionable bugs found in this planning-only change. The direction is appropriately narrow: preserve other draft-18 cancellation behavior, reuse #7439 for the TRACK_STATUS exception, and correct the query/fetch-only documentation rather than reintroducing blind subscriptions. Keeping the moxygen GROUP_ORDER fix separate avoids expanding this quest unnecessarily.
Verification: inspected both changed Markdown files and cross-checked the plan against #7438, #7439, the current FIN handling, and the existing refused-TRACK_STATUS test. No tests were run; this review does not validate the eventual implementation or end-to-end interop.
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- New quest
quest/m1/interop-coverage/draft18-status-fin.md— lands#7439with TRACK_STATUS-only FIN scope, plus adoc/concept/standard.md:31reword. Its claims were verified against the code and the cited issues/PRs. quest/m1/interop-coverage/README.md— one## Requiredbullet linking the new quest.## Closesis an established quest heading (7 existing files use it), so it does not auto-close#7438at plan merge.
All cited references check out: #7439 is an open draft with maintainerCanModify: true and TRACK_STATUS-only scope; #5991 merged 2026-10-20 removing the fallback; #7187 closed 2026-10-29; #7423 closed NOT_PLANNED; fin_cancels at rs/moq-net/src/ietf/request_stream.rs:11 matches only Draft18; standard.md:31 ends with the quoted sentence; and release (moq-net 0.3.18) refuses TRACK_STATUS, so no backport is needed. No duplicate quest covers this, and moxygen-pin-bump is correctly cross-linked.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
|
No actionable comments were generated in the recent review.
|
|
quest land removed this pull request from the queue: the batch check failed (exit 1). * [new tag] docker-v1 -> docker-v1
* [new tag] github-show -> github-show
* [new tag] push -> push
* [new tag] v0.10.0 -> v0.10.0
* [new tag] v0.11.0 -> v0.11.0
* [new tag] v0.12.0 -> v0.12.0
* [new tag] v0.13.0 -> v0.13.0
* [new tag] v0.13.1 -> v0.13.1
* [new tag] v0.14.0 -> v0.14.0
* [new tag] v0.14.1 -> v0.14.1
* [new tag] v0.15.1 -> v0.15.1
* [new tag] v0.16.0 -> v0.16.0
* [new tag] v0.17.0 -> v0.17.0
* [new tag] v0.18.0 -> v0.18.0
* [new tag] v0.19.0 -> v0.19.0
* [new tag] v0.19.1 -> v0.19.1
* [new tag] v0.19.2 -> v0.19.2
* [new tag] v0.19.3 -> v0.19.3
* [new tag] v0.19.4 -> v0.19.4
* [new tag] v0.19.5 -> v0.19.5
* [new tag] v0.19.6 -> v0.19.6
* [new tag] v0.20.0 -> v0.20.0
* [new tag] v0.21.0 -> v0.21.0
* [new tag] v0.21.1 -> v0.21.1
* [new tag] v0.22.0 -> v0.22.0
* [new tag] v0.23.0 -> v0.23.0
* [new tag] v0.24.0 -> v0.24.0
* [new tag] v0.24.1 -> v0.24.1
* [new tag] v0.24.2 -> v0.24.2
* [new tag] v0.24.3 -> v0.24.3
* [new tag] v0.25.0 -> v0.25.0
* [new tag] v0.25.1 -> v0.25.1
* [new tag] v0.25.2 -> v0.25.2
* [new tag] v0.25.3 -> v0.25.3
* [new tag] v0.26.0 -> v0.26.0
* [new tag] v0.26.1 -> v0.26.1
* [new tag] v0.27.0 -> v0.27.0
* [new tag] v0.27.1 -> v0.27.1
* [new tag] v0.27.2 -> v0.27.2
* [new tag] v0.27.3 -> v0.27.3
* [new tag] v0.28.0 -> v0.28.0
* [new tag] v0.28.1 -> v0.28.1
* [new tag] v0.28.2 -> v0.28.2
* [new tag] v0.28.3 -> v0.28.3
* [new tag] v0.29.0 -> v0.29.0
* [new tag] v0.29.1 -> v0.29.1
* [new tag] v0.29.2 -> v0.29.2
* [new tag] v0.29.3 -> v0.29.3
* [new tag] v0.29.4 -> v0.29.4
* [new tag] v0.29.5 -> v0.29.5
* [new tag] v0.30.0 -> v0.30.0
* [new tag] v0.31.0 -> v0.31.0
* [new tag] v0.31.1 -> v0.31.1
* [new tag] v0.31.2 -> v0.31.2
* [new tag] v0.32.0 -> v0.32.0
* [new tag] v0.32.1 -> v0.32.1
* [new tag] v0.32.2 -> v0.32.2
* [new tag] v0.4.0 -> v0.4.0
* [new tag] v0.5.0 -> v0.5.0
* [new tag] v0.6.0 -> v0.6.0
* [new tag] v0.6.1 -> v0.6.1
* [new tag] v0.7.0 -> v0.7.0
* [new tag] v0.7.1 -> v0.7.1
* [new tag] v0.7.2 -> v0.7.2
* [new tag] v0.8.0 -> v0.8.0
* [new tag] v0.9.0 -> v0.9.0
derivation evaluated to /nix/store/nvij27kw5rh5323b8idz8whhaqn49kc4-moq-relay-0.17.2.drv
checking derivation packages.x86_64-linux.default...
derivation evaluated to /nix/store/8njiymqk67rqxixlszn9734gjq417l0f-moq-all.drv
checking derivation packages.x86_64-linux.uniffi-bindgen-dart...
derivation evaluated to /nix/store/1v1hdl7dhiwdis0y2lmh6vjx149is362-uniffi-bindgen-dart-0.3.1-kixelated.6+v0.32.0.drv
checking derivation packages.x86_64-linux.uniffi-bindgen-cpp...
derivation evaluated to /nix/store/im9pz4z9gbnxq8cgg736sqc7d5y07nc3-uniffi-bindgen-cpp-0.11.0-kixelated.7+v0.32.2.drv
checking derivation packages.x86_64-linux.moq...
derivation evaluated to /nix/store/smqzfr9i5yz34lx7plmp7cf7jkha5myb-moq-cli-0.14.2.drv
checking derivation packages.x86_64-linux.moq-cli...
derivation evaluated to /nix/store/hv61q4ncyjdmv18plpyi91gajc3k7n0z-moq.drv
checking derivation packages.x86_64-linux.moq-bench...
derivation evaluated to /nix/store/wgx1wsmlph9lv0if39k3xla0xi826gcx-moq-bench-0.0.1.drv
checking derivation packages.x86_64-linux.moq-boy...
error: interrupted by the user
ci: test gh failed
ci: seconds per module
295 check py
57 test py
526 check rs
195 test rs
230 check rs_shapes (cancelled)
418 check c
364 check cpp
63 check obs_compile
406 check js
67 test js
28 check markdown
4 check gh
27 test gh (failed)
154 check kt
18 check flake (cancelled)
952 wall time
error: recipe `ci` failed on line 107 with exit code 1
. |
|
codex / Codex land fixer: -
-## Goal
-
-moq-mux parses and builds avcC and hvcC records with `mp4_atom::Avcc` and
-`mp4_atom::Hvcc`, already its dependency, instead of about 330 hand-written
-lines, or a comment at the hand-written code names the input mp4-atom
-mishandles.
-
-## Plan
-
-Found by the 2026-10-19 dependency audit. `rs/moq-mux/src/codec/h264/mod.rs`
-has `Avcc::parse`, `build_avcc`, `catalog_avcc`, `avcc_params`, and
-`read_param_sets`; `codec/h265/mod.rs` has `build_hvcc` and `hvcc_params`.
-The tests already check them against mp4-atom. The fMP4 importer decodes an
-`mp4_atom::Avcc`, re-encodes it, and re-parses it with the hand-written parser
-(`container/fmp4/import.rs`, `init_h264`), while its H.265 path reads the
-`mp4_atom::Hvcc` fields directly.
-
-Check first for a leniency reason, such as how mp4-atom handles the
-high-profile extension or a short record from a real encoder; keep the
-hand-written path only for a reproduced case and test it. `moq_mux` exports
-`codec::h264::Avcc`, so replacing or removing it is a breaking change;
-prefer keeping the type and changing only how it is
-filled when that is simpler. No wire change.
-
-## Related
-
-- [H.264 parsing with maintained crates](/quest/m2/h264-reader.md) - the SPS side of the same codec config
diff --git a/quest/m2/README.md b/quest/m2/README.md
index f93399e86..4e19cf61d 100644
--- a/quest/m2/README.md
+++ b/quest/m2/README.md
@@ -218,7 +218,6 @@ lite-07; bitrate enforcement is not part of this release.
- [Task supervision](/quest/m2/task-supervision.md) - the auth decider loop, stats publisher, and moq-tokio's token and WebSocket internals are supervised like #5447's tasks
- [Auth serve bound address](/quest/m2/auth-serve-bound-addr.md) - `moq auth serve` logs the port it actually bound
-- [RTMP client reports a publish or play error](/quest/m2/rtmp-client-error.md) - a refused publish or play surfaces its reason
- [H.264 parsing with maintained crates](/quest/m2/h264-reader.md) - moq-mux parses SPS VUI with h264-reader and shares one bit reader across codec config parsers
- [avcC and hvcC through mp4-atom](/quest/m2/mp4-atom-config.md) - moq-mux stops hand-writing the decoder config records its mp4-atom dependency already parses
- [Relay metrics through prometheus-client](/quest/m2/relay-prometheus-client.md) - `/metrics` renders through the maintained client with the same series
diff --git a/quest/m2/rtmp-client-error.md b/quest/m2/rtmp-client-error.md
deleted file mode 100644
index e50058d8e..000000000
--- a/quest/m2/rtmp-client-error.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# [XS] RTMP client reports a publish or play error
-
-## Goal
-
-`moq_rtmp::Client` returns a server's `_error` on publish or play with its
-code and description, as it already does on connect. Today the `_error` has
-no outstanding transaction, so the session raises
-`UnknownTransactionResultReceived`, `dial.rs` ignores it, and the client ends
-with "rtmp server closed before publish was accepted" once the server closes.
-
-## Plan
-
-Match the publish and play `_error` in `rs/moq-rtmp`'s client and surface it
-through `dial.rs`. Test against a server that answers a publish with `_error`
-and one that answers a play with `_error`, asserting the code and description
-in both.
codex
I reproduced the dispatcher failures on base: the two targeted tests pass with `CHECK_FAIL_FAST` cleared and fail with it set. The test harness inherits that gate setting. No PR-specific fix is indicated, so I’ll requeue all eight unchanged and record the cause.
exec
/bin/bash -lc "python3 - <<'PY'
import json, pathlib, subprocess
numbers=[7397,7401,7418,7441,7287,7256,7336,7352]
reason='healthy; batch failure is base test isolation: sh/dispatch-query.test.py inherits CHECK_FAIL_FAST from the landing gate; targeted base tests pass with it cleared'
result=[dict(number=n,action='requeue',reason=reason) for n in numbers]
p=pathlib.Path('quest-land-result.json')
p.write_text(json.dumps(result,indent=2)+'\\n')
assert len(json.loads(p.read_text()))==8
expected={7397:'1bac738fa',7401:'5f4f6db97',7418:'08201ee65',7441:'353bbd9d0',7287:'976bf7422',7256:'ec9560ca5',7336:'28b51f575',7352:'6fc4f8c90'}
for n,prefix in expected.items():
head=subprocess.check_output(['git','rev-parse',f'pr-{n}'],text=True).strip()
assert head.startswith(prefix),(n,head)
print('Validated 8 requeue entries and unchanged pinned branch tips.')
PY
git status --short" in /work
succeeded in 25ms:
Validated 8 requeue entries and unchanged pinned branch tips.
?? quest-land-result.json
codex
Wrote [quest-land-result.json](/work/quest-land-result.json): all eight PRs requeued unchanged.
The failure comes from base’s dispatcher tests inheriting `CHECK_FAIL_FAST`. Targeted tests pass with it cleared and reproduce the failure when set.
All PR branches remain intact; the result file is uncommitted.
tokens used
64,429
Wrote [quest-land-result.json](/work/quest-land-result.json): all eight PRs requeued unchanged.
The failure comes from base’s dispatcher tests inheriting `CHECK_FAIL_FAST`. Targeted tests pass with it cleared and reproduce the failure when set.
All PR branches remain intact; the result file is uncommitted.
fixer result written
(written by codex / Codex) |

Imports the two open issues that had no
questlabel. Both concern draft-18 TRACK_STATUS interop with moxygen-based relays.Changes
quest/m1/interop-coverage/draft18-status-fin.md[S]:doc/concept/standard.mdsentence saying a reader whose publisher refuses TRACK_STATUS "still subscribes", which isn't true for query-only or fetch-only readers.Decisions
Decided 2026-10-31 by the maintainer (
/quest-import):Review
Codex (gpt-6.1-sol, medium) reviewed head 353bbd9 against origin/main 38566f5: 0 findings.
🤖 Generated with Claude Code
(Written by Claude Opus 5.5)