Skip to content

quest: resolve the 2026-10-06 audit - #4946

Merged
kixelated merged 3 commits into
mainfrom
claude/quest-audit-2026-10-06
Oct 6, 2026
Merged

kixelated merged 3 commits into
mainfrom
claude/quest-audit-2026-10-06

Conversation

@kixelated

@kixelated kixelated commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The 2026-10-06 /quest-audit found 54 inconsistencies in the quest tree: finished children still listed on main, quests blocked on work that already landed, two quests claiming the same change, and plans that contradict each other or the code. The maintainer settled the open ones; this PR records those decisions and applies the mechanical fixes so quest ready on main stops offering finished or mis-ordered work.

Approach

Every finding was re-checked against origin/main (edd671fff) before editing.

Line syncs with their branches (the same files the line branches delete, so those deletions merge cleanly)

Deletions

Decisions recorded (each with its reason, dated 2026-10-06)

  • Catalog rendition keys are IDs (F23). An ID is unique across video and audio, a cross-kind duplicate is refused, and track is optional and defaults to the ID. The stats quests now key by ID.
  • The ladder controller owns rung targets (F17). Encoder feedback requires it and feeds viewer stalls in as a controller input. The "adapts today" wording is fixed.
  • QoS (F34): stats-split lands first, and quest(qos): Broadcast health and congestion #4133 rebases its histograms onto stats-split's totals and prefix tracks. lag-dashboard and publisher-timeliness are re-planned to match and Require stats-split, so quest ready keeps the order.
  • flv/mkv export delay (F42): these require subscriber-max-delay, and --delay replaces --max-delay, as it did on TS.
  • Shared clock (F43): a same-epoch importer's anchor comes from its input or the shared epoch through Input, never from clock.now(). hop-aligned-import requires shared-clock.
  • Unordered qmux (F13): native pairs only. It requires quic-qmux.md, and the P2P README's "for free" sentence is fixed.
  • tls:// mTLS (F53 + carried decision): the peer certificate comes from a new accessor upstream in qmux, followed by a dependency bump. The quest requires relay-auth-client-ca and lifts its NoBackend refusal for tls://.
  • fix(net): validate IETF group order and allow unknown setup repeats #4927 (F47): ietf-malformed-close.md records that fix(net): validate IETF group order and allow unknown setup repeats #4927 owns GROUP_ORDER and repeated unknown/GREASE SETUP options.
  • Routine: binding-surface requires ffi-shape/codec.md instead of the m0 jitter line (F25). cli-packaging drops Capture by default (F28). tstd-controls and ts-eac3 require tstd/delay.md (F50). A new quest/m2/stats-producer-bench.md [S] splits out of bench-coverage, ranks above stats-delta, and stats-delta requires it (F51). token-in-band and auth/bindings require FFI shape (F6).

Stale facts and ordering

  • F2: selection.md is cut to what remains after quest(wildcard): Wildcard advertisements #4403 and is now [M]. selection and dvr list Wildcard under Related instead of Required.
  • F7: replay-catalog follows the 09-29 decision that moq-archive republishes the catalog.
  • F9: the root README no longer lists the audio quality harness as m0 work.
  • F10: the second-render-node check moved into vaapi-vulkan-import.
  • F12: signal.md's roster id is the route-layer node id.
  • F14: track-priority-scope owns the Priority::cmp tiebreak, and the ladder only consumes it.
  • F15: closure-counters is narrowed to the open *_ended question.
  • F18: SUBSCRIBE_DROP now ranks above Lite-07 ranges.
  • F19: the draft-20 FETCH and moq-transport ranges quests share one group-span rule.
  • F21: transport-upgrade says the Rust upgrade landed in feat(tokio)!: upgrade a WebSocket fallback session to QUIC #4180.
  • F22: js-qmux-finish now gates js.md.
  • F24: the translator's nested-Option example moved to resume.rs.
  • F27: flv-catalog-stream notes that MKV and fMP4 already take a catalog stream.
  • F29: audio-quality-native relies on the m0 native replay.
  • F37: c/package requires FFI shape.
  • F39: the 3122 quest points at Clock::now.
  • F40: the mp4-atom bump now ranks above fMP4 init.
  • F41: route-wakes lists Wildcard under Related.
  • F44: libmoq-final-release records 0.6.12 and the stub-version rule.
  • F45 and F46: m1 README wording.
  • F49: quic-ecn-measure drops the Hard fork Required.
  • F52: nvenc-pool runs encode-presets on main.
  • Smaller fixes: archive/flush.md no longer cites the removed moq-net Timer, and cache-max-age.md already recorded the successor-clock decision (re-read like reach), so it is unchanged.
  • quest/m0/wildcard/README.md: only lines 131-133 changed, to drop the deleted processor link. feat(net)!: carry publisher epochs on routes #4942's hunks there are elsewhere.

Decisions (maintainer, 2026-10-06 /quest-audit then /quest-plan)

Carried over from the quest-merge run:

  • mTLS on tls:// gets the peer certificate: ✅ upstream qmux accessor / own the TLS accept / leave open
  • cache-max-age successor clock: ✅ re-read like reach / latch first arrival

Round 1:

Skipped findings

Impact

Quests only. Public API: none. Wire: none.

Merge notes:

Follow-ups

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

Apply the maintainer's /quest-audit decisions to the quest tree on main:
sync the auth line with its branch, delete children already finished on the
ffi-shape, cpp, and qos line branches, delete route trust and the m3
processor line, record the settled decisions (catalog rendition IDs, ladder
controller ownership, stats-split first, flv/mkv --delay, shared-clock
anchors, unordered qmux scope, tls:// mTLS through qmux), split a stats
producer benchmark quest, and fix stale facts and Required ordering.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 6, 2026
Per the 2026-10-06 audit: Lite NOT_SUPPORTED drops the 65,535-byte message
ceiling, which request caps (#4820) owns, and token-in-band and bindings
require the FFI shape line so the wrappers break once. Matches main (#4946).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 6, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

✨ Finishing Touches
✨ Simplify code
  • Commit to this branch
  • Create a new PR
  • Autopilot · 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

Comment @coderabbitai help to get the list of available commands.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Automated review: quest: resolve the 2026-10-06 audit

Reviewed head: 2d7e5c97 (base main at edd671ff). This PR only touches the quest tree.

I checked every Markdown link in all 450 files under quest/ at this head, and none are broken. Nothing still links to the 25 deleted files. The ## Required graph has no cycles. The code facts I spot-checked against main all hold: rs/libmoq is at 0.6.11 and crates.io's newest is 0.6.12. Clock::now in rs/moq-net/src/time.rs is right, and so is the single driver.poll(Instant::now(), …) in moq-uring. mkv::Export::new(source, catalog) and the fMP4 equivalent exist, while FLV takes no catalog. #4180's websocket_upgrades_to_quic and a_refused_upgrade_keeps_websocket exist. The two Option<Option<…>> cases in model/resume.rs are real. #4874's grace tests and Traffic::retire raising *_ended match the description. sync_route/poke_below is on main and Pin is gone. The "FETCH spanning several groups" refusal sits in run_fetch_stream. moq-cli's capture feature enables moq-video/capture and moq-audio/capture explicitly. just test ts-tstd is in test/justfile, the encode-presets example is on main, and moq-noq-proto is pinned at 2.0.1. The auth quest directory matches #4039's branch file for file, and #4079's merge note is accurate: a modify/delete conflict on cpp/README.md and one hunk in m2/cpp-vcpkg.md.

Non-blocking

  1. The QoS ordering decision isn't enforced in Required. The F34 decision says stats-split lands first and quest(qos): Broadcast health and congestion #4133 rebases onto it. But quest/m1/qos/README.md, qos/lag-dashboard.md, and qos/publisher-timeliness.md all list stats totals and prefix tracks only under ## Related. Once Starvation is deleted, lag-dashboard.md and publisher-timeliness.md have no Required entry at all, so quest ready will offer them before stats-split. That goes against the decision and against this PR's own goal of not offering mis-ordered work. Fix: put stats-split under ## Required on the QoS README, or on those two children.

  2. The merge notes undercount the conflicts. The body says the refactor(ffi)!: the bindings mirror Rust's layers #4519 and quest(qos): Broadcast health and congestion #4133 merges "stay clean". The shared child deletions do merge cleanly, but a three-way merge against each branch's current merge base still conflicts:

    Also, ffi-shape/codec.md does not "take the branch's text". It merges cleanly, but refactor(ffi)!: the bindings mirror Rust's layers #4519's copy has the F33 video.Producer/video.Encoder decision and this one doesn't. Until refactor(ffi)!: the bindings mirror Rust's layers #4519 lands, main's codec.md still describes one shape, so the Follow-ups line that points the OBS quests at codec.md "which now owns video.Encoder" is only true on the branch for now.

No other issues found. The deletions, moves, and recorded decisions read consistently with each other and with main.

Verdict: MERGE. Nothing blocks. Fixing item 1 before landing would keep quest ready honest.

This is an automated review, not the maintainer's decision
(Written by Grok)

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

Copy link
Copy Markdown
Collaborator Author

Merging. This lands the maintainer's 2026-10-06 audit decisions (paper trail in the body). For Grok's review:

  1. Fixed: lag-dashboard and publisher-timeliness now Require stats-split, so quest ready keeps the decided order.
  2. Fixed: the body's merge notes now list the remaining hand-merge hunks for refactor(ffi)!: the bindings mirror Rust's layers #4519 and quest(qos): Broadcast health and congestion #4133, and say codec.md's F33 naming lives on refactor(ffi)!: the bindings mirror Rust's layers #4519's branch until it lands.

The epoch-related edits (deleting transcode-group-start and the wildcard README, the m0 README, hop-removal, selection's identity rule, the stats-split Related link) land in #4942. CI passed on the previous head, and this push only moves two links.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge (squash) October 6, 2026 21:43
@kixelated

Copy link
Copy Markdown
Collaborator Author

Automated follow-up review: quest: resolve the 2026-10-06 audit

Reviewed head: f133f1d2 (previous Grok review on 2d7e5c97). This is a re-review after a push. The push is one commit touching two quest files, plus an updated PR body.

What changed: qos/lag-dashboard.md turns its ## Related into ## Required, and qos/publisher-timeliness.md gains a ## Required section, so both now require stats totals and prefix tracks. I checked that stats-split only requires broadcast-epoch/stats-epoch.md, so this adds no cycle. The QoS README still lists stats-split as Related, which is fine now that the two children it was meant to gate require it directly. lag-splice.md doesn't require it, and that's correct: it fixes the sampler that already exists on the line branch.

Earlier findings:

  1. QoS ordering not enforced in Required: fixed. quest ready will no longer offer lag-dashboard or publisher-timeliness before stats-split, which matches the F34 decision and the body's own claim.
  2. Merge notes undercount the conflicts: fixed in the PR body. It now lists the refactor(ffi)!: the bindings mirror Rust's layers #4519 hunk in ffi-shape/README.md and the quest(qos): Broadcast health and congestion #4133 hunks in lag-dashboard.md and publisher-timeliness.md. It also says codec.md keeps main's text, with the F33 naming waiting on refactor(ffi)!: the bindings mirror Rust's layers #4519. One thing to know: this push edits the same two quest(qos): Broadcast health and congestion #4133 files again, so the hand merge there will be a little larger than the body describes. It's still the same files and the same stats-split rebase.

No new issues. CI (Check, Test) is still pending at the time of this review.

Verdict: MERGE.

This is an automated review, not the maintainer's decision
(Written by Grok)

@kixelated
kixelated disabled auto-merge October 6, 2026 21:48
@kixelated
kixelated merged commit d90f447 into main Oct 6, 2026
3 checks passed
@kixelated
kixelated deleted the claude/quest-audit-2026-10-06 branch October 6, 2026 21:49
kixelated added a commit that referenced this pull request Oct 6, 2026
Resolves cluster-routing/README.md against #4946 (main's audit edits win,
the epoch wording stays). Also applies the audit decisions this PR owns:

- Delete quest/m0/wildcard/README.md and transcode-group-start.md: claim
  workers mint their own epoch, so they are never spliced, and #4403
  landed the rest of the line. Remove every link to either.
- m0 README: Wildcard landed in #4403.
- hop-removal: drop the NO_CAPACITY bullet (#4403 removed it), and `moq`
  mints the epoch when --epoch is omitted.
- cluster-routing/selection: identity is path plus epoch.
- stats-split: relate the QoS line (#4133 rebases onto its tracks).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant