Skip to content

quest: plan the API changes worth making before the breaking cut - #6346

Merged
kixelated merged 6 commits into
mainfrom
quest/plan-astra-audit
Oct 22, 2026
Merged

kixelated merged 6 commits into
mainfrom
quest/plan-astra-audit

Conversation

@kixelated

@kixelated kixelated commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Plans the findings from an external pre-release API audit that hold up against the code. Every audit claim was verified first: the integer framerate in moq-ffi, the ignored track on codec-only encoders, Wall refusing expiries past 2554 in #6298, the answer.md vs routes.md conflict, the warmup draft vs decode::Consumer, and the three MIGRATE.md errors.

Changes

  • Moved m2 → m1: from-str-trait, drop-dead-items, error-cleanups, cpp-free-function-prefix. The cut breaks anyway, so these ship with it.
  • New m1 quests:
    • binding-encoder-config [M]: a rational framerate, and track moves to producer-only publication options.
    • warmup-draft [XS]: the hang draft's warmup rule is amended to match the shipping dual decoder. It was split from m2's plan-boundary.
    • api-diff [L]: the tooling, split out of migrate-audit.
  • Narrowed m2/release/migrate-audit to the cut audit, and added the rule that each Unreleased section states the net published → final change.
  • public-model/answer.md split: the route-model items (Hop::from_wire, Cost::charged, the via(hop) identity, excluding, the escape hatches, JS hop/advertise/receive) move to a new public-model/routes.md. It requires cluster-routing/routes.md, which replaces Hops and saturating Cost.
  • Folded into the API audit epic (moq-dev/moq#6340): its api-audit/migrate.md already owns the contradictory finish entries and the missing async shutdown, so the planned migrate-guides quest became one added bullet there (the wrong "timed by default"). The epic's API-diff link now points at m1/api-diff.md, and error-cleanups links api-audit/clean-close.md.
  • time/wall.md: certificate and auth expiries saturate instead of refusing. Presentation walls still refuse.

Declined from the audit

  • Position #[non_exhaustive]: moq-net breaks every release anyway, and the byte-holes quest may choose another shape.
  • Pulling the watch-worker comparison forward: the A/V clock's per-track handles don't depend on thread placement, and it was deferred on 2026-10-20.
  • OpenH264 back in the defaults, E2EE traits, and the other large m2 items: the audit itself recommends leaving them.

Decisions

  1. Move the four small m2 cleanups into m1?
    • ✅ All four to m1
    • Only the C++ prefix
    • Keep all in m2
  2. Binding framerate and track on EncoderOutput?
    • ✅ One m1 quest for both
    • Two m1 quests
    • Framerate only
  3. refactor(time)!: use Wall for public Rust wall times #6298 refuses expiries past 2554?
    • ✅ Saturate expiries
    • Widen Wall
    • SystemTime at the boundary
    • Keep the PR as is
  4. Which follow-ups to plan? (multi-select)
    • ✅ Order route answers after cluster routing
    • ✅ Warmup draft fix in m1
    • ✅ Fix FFI MIGRATE guides
    • ✅ API-diff tooling now

Public API / wire: none (quest files only). quest check passes.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

From an external API audit: pull small breaks into m1 so they ship with
the cut, add the FFI encoder config, warmup draft, migration guide and
API-diff quests, saturate wall-time expiries, and order public routes
after cluster routing.

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

chatgpt-codex-connector Bot commented Oct 22, 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-22T19:26:34.025609Z 0a23dd6 New commits
ℹ️ 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.

@coderabbitai

coderabbitai Bot commented Oct 22, 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 3 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: 4ad2d79a-6ce9-425d-9b08-2f5da729a914
📥 Commits

Reviewing files that changed from the base of the PR and between d9a4c20 and 0a23dd6.

📒 Files selected for processing: 23
  • quest/m1/README.md
  • quest/m1/api-audit/README.md
  • quest/m1/api-audit/migrate.md
  • quest/m1/api-diff.md
  • quest/m1/binding-encoder-config.md
  • quest/m1/cpp-free-function-prefix.md
  • quest/m1/drop-dead-items.md
  • quest/m1/error-cleanups.md
  • quest/m1/from-str-trait.md
  • quest/m1/public-model/README.md
  • quest/m1/public-model/answer.md
  • quest/m1/public-model/claim-request-type.md
  • quest/m1/public-model/deferred.md
  • quest/m1/public-model/routes.md
  • quest/m1/time/wall.md
  • quest/m1/warmup-draft.md
  • quest/m2/README.md
  • quest/m2/intra-refresh/README.md
  • quest/m2/intra-refresh/plan-boundary.md
  • quest/m2/release/README.md
  • quest/m2/release/api-review.md
  • quest/m2/release/cut.md
  • quest/m2/release/migrate-audit.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.

@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

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

ℹ️ 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/public-model/routes.md
kixelated and others added 3 commits October 22, 2026 11:32
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The API audit's MIGRATE quest already owns the binding guide fixes, so
migrate-guides folds into it (adding the untimed-default entry). The audit
epic's API-diff link points at the split-out m1 quest, and error-cleanups
links the clean-close quest it touches.

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

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Merged main twice. The only textual conflict was quest/m2/README.md: kept main's new ashpd and askama entries and dropped the three cleanups this PR moves to m1.
  • Codex finding: public-model/routes.md now requires Public answering, since the escape hatches go private only once the answer source exists.
  • Aligned with the API audit epic (moq-dev/moq#6340), which landed overlapping planning in parallel: migrate-guides duplicated api-audit/migrate.md, so it is folded in as one bullet (the untimed default). The epic's API-diff link now points at m1/api-diff.md, and error-cleanups links api-audit/clean-close.md.
  • quest check --base origin/main passes; Codex gave the final head a clean review.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 22, 2026
@kixelated
kixelated removed this pull request from the merge queue due to a manual request Oct 22, 2026
# Conflicts:
#	quest/m2/README.md
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merged main: quest/m2/README.md conflicted with #6352's new ietf-join-after-finish entry. Kept that entry and this PR's removal of the three quests it moves to m1. Quest check passes; quest content is unchanged since the clean review.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge October 22, 2026 19:22
@kixelated
kixelated added this pull request to the merge queue Oct 22, 2026

@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: 0a23dd658c

ℹ️ 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 on lines +36 to +37
Public API: breaking in moq-ffi and every binding wrapper, each with a
`MIGRATE.md` entry. Wire: none.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Exclude the unpublished C++ wrapper from migration entries

Because this quest explicitly includes cpp/moq among the wrappers, requiring a MIGRATE.md entry for every wrapper directs the implementer to add a C++ migration that never occurred for users. The same commit's quest/m1/api-audit/migrate.md says to empty that file because the package has never been released, and cpp-free-function-prefix.md likewise says it needs no upgrade note. Exempt unpublished wrappers here so the quests do not impose contradictory completion criteria.

Useful? React with 👍 / 👎.

Comment on lines +24 to +26
`video_encoder_config` and `audio_settings` never read it. Nest it in a
publication options record taken by the producers, beside the existing
`catalog` and `bandwidth` arguments, rather than adding a fourth argument.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Account for the constructors' existing fourth argument

When this quest is implemented, both MoqVideoProducer::new and MoqAudioProducer::new already take four arguments: catalog, input, output, and bandwidth. Placing a new publication-options record beside the existing catalog and bandwidth arguments would therefore create a fifth argument, despite the plan claiming this avoids adding a fourth. Clarify which existing arguments the record absorbs so the planned API can satisfy the repository's argument-count rule.

AGENTS.md reference: AGENTS.md:L68-L69

Useful? React with 👍 / 👎.

Merged via the queue into main with commit 52ed4cb Oct 22, 2026
10 checks passed
@kixelated
kixelated deleted the quest/plan-astra-audit branch October 22, 2026 20:39
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