Skip to content

quest: plan the 2026-10-24 pre-cut audit findings - #6707

Merged
kixelated merged 16 commits into
mainfrom
audit/cut-2026-10-24
Oct 25, 2026
Merged

kixelated merged 16 commits into
mainfrom
audit/cut-2026-10-24

Conversation

@kixelated

@kixelated kixelated commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The maintainer asked for an extensive audit of main before promoting it to release, with quests for every issue and attention to high-churn areas that may need a redesign. This PR only adds and amends quests; no code changes.

Eight parallel audits at 151a529 covered the moq-net track/resume model, origin and sessions with kio, moq-transport, moq-lite with its codecs and fuzzing, js/net with js/qmux, moq-mux with hang (Rust and JS), the browser media packages, and the runtimes and binaries. Each skipped what the 2026-10-22 to 24 audits already filed, and every finding was checked against the quest tree and the open PRs. I re-read the code for the top findings in each area before filing.

m1: Pre-cut audit findings, 34 children

Most severe:

  • RTMP AMF0 amplification: one 16 MiB message allocates about 940 MB before auth.
  • fMP4 zero-size samples: reproduced at 6.3 GB RSS and about 720k groups from a 16 KB moof. The same code path is hit by subscriber-side CMAF decode.
  • avc1 codec string: a non-ASCII profile panics every Rust catalog reader, including across the C ABI.
  • Lite-07 announce compression: can build multi-MiB paths from 12-byte messages.
  • <moq-publish> removal: leaves camera and mic capturing; a cleanup registry pins every element.
  • Oversized routes: one route too large to re-encode resets a downstream peer's whole announce stream (reproduced, new on main).
  • Hostile audio catalogs: make viewers allocate gigabytes.
  • Resume reservations: a reserved group panics on a route flip A to B to A (reproduced, new on main).
  • JS clean ends: tracks end cleanly on local close, protocol violations, and unanswered requests.

The rest cover correctness, Rust/JS parity, bounded costs, and cleanups. Five children carry a maintainer decision with a recommendation: datagram size, description-less AAC, catalog strictness, the MKV unsupported-codec rule, and the partial-group rule.

m2: redesigns behind the churn

Main landed about 2,400 commits in 30 days, 823 of them fixes, concentrated in rs/moq-net and js/net. Each redesign below is internal (no API or wire change), so the audit placed them after the cut:

Also new in m2: media parser fuzzing, announce interest memory, resumed-read budget, and transcode rungs.

Amended quests

Audit evidence was added to subscribe ranges, drop set, per-origin routes, drafts 14-17 removal, and buffered playback.

Decisions

  • Invalid element attributes (maintainer, 2026-10-25): the element-attributes quest's refuse rule wins. js/AGENTS.md now says an invalid attribute value is refused (the setter throws and the element surfaces the error) instead of warning and falling back, and the quest's Plan records the decision.

Decisions for the maintainer

  • Should resume as producer replacement move into m1? Release still ships the splice design, so nearly all of resume.rs is new at this cut. The audit recommends after the cut, to keep the hard-won test corpus intact right before release.

Review follow-ups

  • drafts 14-17 removal: either request-ID choice must keep GOAWAY's smallest-unprocessed cutoff and its regression test.
  • Subscribe ranges: lite-07 keeps a bounded grace for a hole only a lost datagram could have left.

Impact

Public API: none (quests and one js/AGENTS.md rule). Wire: none.

Checks

quest check passes; just check passed.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 3 commits October 24, 2026 22:33
Adds the m1 pre-cut audit epic (34 fixes from an eight-area audit of main
at 151a529), ten m2 quests for the redesigns behind the highest-churn
mechanisms and inherited costs, and audit evidence in the quests that
already own subscribe ranges, the drop set, per-origin routes, the
drafts 14-17 removal, and buffered playback.

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

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 18 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

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: 132c2b6d-b40a-4145-a15b-024abcd5bc9c
Commits

Reviewing files that changed from the base of the PR and between 4e50d3b and 718fe11.

Files selected for processing: 54
  • js/AGENTS.md
  • quest/m0/ci/nix-cache-verify.md
  • quest/m1/README.md
  • quest/m1/buffered-ascending.md
  • quest/m1/cluster-routing/routes.md
  • quest/m1/cut-audit/README.md
  • quest/m1/cut-audit/aac-description-less.md
  • quest/m1/cut-audit/announce-decode-complete.md
  • quest/m1/cut-audit/announce-path-bytes.md
  • quest/m1/cut-audit/announce-reencode.md
  • quest/m1/cut-audit/audio-catalog-alloc.md
  • quest/m1/cut-audit/avc1-codec-panic.md
  • quest/m1/cut-audit/catalog-parity.md
  • quest/m1/cut-audit/datagram-size.md
  • quest/m1/cut-audit/element-attributes.md
  • quest/m1/cut-audit/element-teardown.md
  • quest/m1/cut-audit/flate-budget.md
  • quest/m1/cut-audit/fmp4-sample-resolver.md
  • quest/m1/cut-audit/ietf-withdraw-resolve.md
  • quest/m1/cut-audit/jitter-admission.md
  • quest/m1/cut-audit/js-close-cause.md
  • quest/m1/cut-audit/js-ietf-violations.md
  • quest/m1/cut-audit/js-json-strict.md
  • quest/m1/cut-audit/js-ledger.md
  • quest/m1/cut-audit/js-media-cleanups.md
  • quest/m1/cut-audit/js-net-cleanups.md
  • quest/m1/cut-audit/lite-wire-nits.md
  • quest/m1/cut-audit/mkv-import-errors.md
  • quest/m1/cut-audit/peer-loop-budget.md
  • quest/m1/cut-audit/publish-announce-latch.md
  • quest/m1/cut-audit/reserved-route-return.md
  • quest/m1/cut-audit/route-phase.md
  • quest/m1/cut-audit/rtmp-amf0-budget.md
  • quest/m1/cut-audit/rtmp-session-strict.md
  • quest/m1/cut-audit/uds-allowlist-first.md
  • quest/m1/cut-audit/uring-listen-config.md
  • quest/m1/cut-audit/watch-audio-hole.md
  • quest/m1/cut-audit/watch-source-robust.md
  • quest/m1/cut-audit/watch-volume-mute.md
  • quest/m1/cut-audit/weak-cache-remove.md
  • quest/m1/drop-set.md
  • quest/m1/ietf-drop/d14-17.md
  • quest/m1/subscribe-ranges/README.md
  • quest/m2/README.md
  • quest/m2/announce-interest-memory.md
  • quest/m2/ietf-fill-refill.md
  • quest/m2/ietf-request-lease.md
  • quest/m2/media-fuzz.md
  • quest/m2/moqsrc-pad-actor.md
  • quest/m2/publish-publication.md
  • quest/m2/recover-budget.md
  • quest/m2/relay-serve-path.md
  • quest/m2/resume-redesign.md
  • quest/m2/transcode-rungs.md
  • 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

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

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T22:27:44.912095Z 718fe11 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0420e38410

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m1/cut-audit/element-attributes.md Outdated

@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: 0420e38

P2 — quest/m1/cut-audit/jitter-admission.md:25–26: bound admission by the newest queued/next candidate frame, not queue front. The oldest frame remains near its real-time departure while a 3x producer appends distant frames behind it; the proposed front > now+delay+lead check stays false and preserves the unbounded backlog. Specify tail/candidate-based admission and assert bounded queued state in the 1x/3x regression.

P2 — quest/m1/ietf-drop/d14-17.md:60–62: a scalar per-parity high-water mark cannot replace Spent without preserving out-of-order membership. Independent streams can deliver ID 4 before ID 2; later first use of 2 must remain valid without permitting reuse of spent lower IDs. Missing intervals also determine GOAWAY's smallest-unprocessed cutoff. Preserve these semantics or specify a protocol-compatible retirement bound, with reordered-arrival and GOAWAY tests.

Also confirmed the existing invalid-element-input refusal finding; reference rather than duplicate: #6707 (comment)

Separating concrete pre-cut fixes from larger ownership redesigns is sensible. These are planning defects, not runtime regressions introduced by this documentation-only PR.

Verification: static quest/diff and selected surrounding-code inspection only; no tests or reproduction runs.

kixelated and others added 2 commits October 24, 2026 22:41
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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: 057233a

The invalid-element-attribute refusal finding is addressed: the plan requires observable failure without defaulted execution. The Nix-cache verification clarification correctly waits for release to carry the tag workflow.

No new actionable findings in this update. The jitter-admission and reordered-request-ID planning findings in the previous review remain unchanged and open: #6707 (review)

Separating concrete pre-cut fixes from larger ownership redesigns remains sensible. Verification: static delta and relevant workflow inspection only; no tests or reproduction runs.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 057233af2d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m1/cut-audit/jitter-admission.md Outdated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e7656f33bc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m1/ietf-drop/d14-17.md Outdated

@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: e7656f3

The jitter-admission planning finding is fixed: admission checks the newest queued or incoming frame instead of queue front. No new actionable findings in this update.

The reordered-request-ID finding remains open and unchanged, now independently corroborated: #6707 (comment)

The correction fits bounded admission without extra machinery. Verification: static delta and surrounding-code reasoning only; no tests or reproductions run.

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: 8c8eace

The reordered-admission part of the previous finding is addressed: lower, first-use IDs must remain valid, and dropping reuse detection is now an explicit design choice.

The prior finding remains partially open at quest/m1/ietf-drop/d14-17.md:60–68: missing-ID history also supplies GOAWAY's smallest-unprocessed cutoff, not just duplicate detection and Publisher::joins. Control::goaway uses modern.missing; its existing test accepts IDs 0 and 4 and requires cutoff 2. Specify how either replacement preserves that cutoff for legitimate reordered streams, and retain the GOAWAY regression. Related independent finding: #6707 (comment).

No additional actionable findings. Making the trade-off explicit improves the plan, but the GOAWAY contract must be included before removing history. Static delta and relevant control-code inspection only; no tests run.

kixelated and others added 2 commits October 25, 2026 09:04
The maintainer decided refusal wins over js/AGENTS.md's warn-and-fall-back
rule; update the rule and record it in the element-attributes plan. The
d14-17 request-ID choice must keep GOAWAY's smallest-unprocessed cutoff.

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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2dae5b1dfc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread quest/m1/subscribe-ranges/README.md Outdated
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: 885a01e

The remaining request-ID planning finding is addressed: the plan preserves GOAWAY’s smallest-unprocessed cutoff and reordered-arrival regression. Invalid-element-input refusal is consistent with updated JS guidance.

The independent lost-datagram finding is addressed: lite-07 retains bounded settlement for unseen datagram holes unless reliable sequence accounting replaces it: #6707 (comment)

No new actionable bugs found. Focused corrections preserve existing contracts without runtime machinery; larger redesigns remain separate.

Verification: static delta and relevant control-code/test inspection against last published review, accounting for main changes. No tests or reproductions run.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Maintainer decisions (2026-10-25), recorded in moq-dev/moq#6798; please apply them to this PR's quests:

  • Resume as producer replacement: stays m2 and conditional. Resume must be flawless at the cut, so a new m1 quest, resume-model-test, checks every resumed reader against a reference model first. The rewrite comes back to m1 only if that test turns up design-level bugs. Please say so in quest/m2/resume-redesign.md and link /quest/m1/resume-model-test.md once quest: audit the tree and record the 2026-10-25 decisions #6798 merges.
  • datagram-size: enforce 1200 end to end.
  • aac-description-less: ADTS.
  • catalog-parity: strict, per rendition.
  • mkv-import-errors: reject everywhere. MKV and FLV container imports refuse an unsupported codec with a typed error, per rs/moq-mux/AGENTS.md. Drop the keep-dropping recommendation.
  • lite-wire-nits partial groups: the rs/moq-net/AGENTS.md partial-groups line is deleted in quest: audit the tree and record the 2026-10-25 decisions #6798, so that decision is settled. The transport may start a group at a frame offset as an optimization, but the app API stays whole-group (/quest/m1/transport-frame-offsets.md).

(Written by Claude Opus 5.5)

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
@kixelated
kixelated added this pull request to the merge queue Oct 25, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 25, 2026
@kixelated
kixelated added this pull request to the merge queue Oct 25, 2026
@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 718fe11a55

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Merged via the queue into main with commit 18d4f0e Oct 25, 2026
9 checks passed
@kixelated
kixelated deleted the audit/cut-2026-10-24 branch October 25, 2026 22:43
kixelated added a commit that referenced this pull request Oct 25, 2026
…anning-700add

Record the 2026-10-25 answers in the quests #6707 and #6790 landed:
datagram size, description-less AAC, catalog parity, MKV/FLV codecs,
partial groups, drop finality, and resume. decode-start stays under the
hand-written m1/c line, and api-audit/requests renames moq-c too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 25, 2026
Take #6744's export removals (Version::from_alpn, is_ietf,
Error::TooManyParameters, SetupOptions remove*). The SETUP codec gates on
is_lite() instead. Restore quest/m1/ietf-drop/d14-17.md, since #6707 added
an open decision on the request-ID history to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated added a commit that referenced this pull request Oct 26, 2026
Aligns with the quests #6707, #6790, and #6817 added: net-async-free links the poll-first async feature.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant