Skip to content

quest: import the draft-18 TRACK_STATUS issues - #7441

Merged
moq-bot[bot] merged 2 commits into
mainfrom
quest-plan/import-2026-10-31
Nov 1, 2026
Merged

moq-bot[bot] merged 2 commits into
mainfrom
quest-plan/import-2026-10-31

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Imports the two open issues that had no quest label. Both concern draft-18 TRACK_STATUS interop with moxygen-based relays.

Changes

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)

Plan the draft-18 TRACK_STATUS FIN fix (land #7439, TRACK_STATUS-only
scope) with the stale standard.md sentence from #7423; #7423 is won't fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

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

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

  • New quest quest/m1/interop-coverage/draft18-status-fin.md — lands #7439 with TRACK_STATUS-only FIN scope, plus a doc/concept/standard.md:31 reword. Its claims were verified against the code and the cited issues/PRs.
  • quest/m1/interop-coverage/README.md — one ## Required bullet linking the new quest. ## Closes is an established quest heading (7 existing files use it), so it does not auto-close #7438 at 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.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

@coderabbitai

coderabbitai Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b30f477e-e5b2-4fca-bca4-a56f1d8815e6
Commits

Reviewing files that changed from the base of the PR and between 38566f5 and 353bbd9.

Files selected for processing: 2
  • quest/m1/interop-coverage/README.md
  • quest/m1/interop-coverage/draft18-status-fin.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

Walkthrough

The interop coverage README now lists a required draft-18 TRACK_STATUS FIN case. A new status document describes the proposed TRACK_STATUS-only handling, withdrawal behavior, planned Rust and JS changes, and related documentation correction. It also records the decision not to add fallback subscribing when a publisher refuses TRACK_STATUS.

Merge Risk: Minimal · up to 353bb

The documentation changes are consistent with the stated TRACK_STATUS-only scope and pending implementation status.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly identifies the main change: importing the draft-18 TRACK_STATUS issues into the quest system.
Description check Passed The description directly explains the imported quests, TRACK_STATUS scope, related issues, decisions, and milestone.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

Finishing Touches
Simplify code
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@moq-bot
moq-bot Bot disabled auto-merge November 1, 2026 00:16
@moq-bot moq-bot Bot removed the quest:merge label Nov 1, 2026
@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

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

.

@kixelated
kixelated enabled auto-merge (squash) November 1, 2026 00:23
@moq-bot

moq-bot Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

codex / Codex land fixer: PR was picked again while fixing; keeping the newer pick. Recommendation: run /quest-iterate before picking it again.

-
-## 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)

@moq-bot
moq-bot Bot merged commit c7396ec into main Nov 1, 2026
1 check passed
@moq-bot
moq-bot Bot deleted the quest-plan/import-2026-10-31 branch November 1, 2026 03:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant