Skip to content

feat!: fold moq-binary into moq-flate - #4425

Merged
kixelated merged 4 commits into
devfrom
quest/m1/flate-binary
Sep 29, 2026
Merged

kixelated merged 4 commits into
devfrom
quest/m1/flate-binary

Conversation

@kixelated

@kixelated kixelated commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Folds moq-binary into moq-flate and @moq/binary into @moq/flate, per the 2026-09-28 quest audit (quest/m1/flate-binary.md). One package now owns compressed and opaque tracks, so the m2 flate line no longer needs a second "compressed track" wrapper.

Summary

  • Rust: rs/moq-binary/src/{snapshot,stream} and Compression move into moq-flate as moq_flate::{snapshot, stream, Compression}, beside the root Encoder/Decoder codec. moq_flate::Error gains Net(moq_net::Error) and Rolled; the old moq_binary::Error::Flate wrapping is gone. moq-flate gains moq-net, kio, and tracing. rs/moq-binary and its workspace entries are deleted.
  • moq-mux: depends on moq-flate; Error::Binary is now Error::Flate. moq_mux::binary and the catalog's binary section keep their names (they describe the content, and the catalog is wire).
  • JS: js/binary/src/{snapshot,stream,compression.ts} move into @moq/flate as Snapshot, Stream, and Compression, with the codec split into codec.ts. @moq/flate gains @moq/net and @moq/signals. js/binary is deleted.
  • moq-ffi: binary.rs is flate.rs; publish_binary_{snapshot,stream}, MoqBinaryConfig, and the producer types are publish_flate_*, MoqFlateConfig, MoqFlate{Snapshot,Stream}Producer. The Dart generated bindings are regenerated. No hand-written wrapper (py, swift, kt, go, dart) exposed these calls, so nothing else moved. The C moq_publish_binary_* calls are unchanged.
  • Compression::None survives: an uncompressed opaque track still needs a home. The crate docs state the name is not a promise every track is deflated.
  • Docs: doc/lib/{rs/moq-binary,js/binary}.md fold into new moq-flate / @moq/flate pages; sidebar, library indexes, doc/concept/hang.md, the android path filter, and an Unreleased upgrade note are updated. Quest references in m1/data-jitter.md and m1/track-demand.md are repointed.

Public API / wire impact

  • Breaking: moq-binary (crates.io) and @moq/binary (npm) are deleted. moq_flate::Error is no longer PartialEq/Eq (it carries moq_net::Error). moq_mux::Error::Binary is Error::Flate. moq-ffi's binary names change in every generated binding. Hence dev.
  • Additive: moq-flate and @moq/flate gain the snapshot/stream modes and Compression.
  • Wire: none. Same framing, same DEFLATE, same catalog binary section.

Checks

just check and just test interop --all passed before the dev merge, apart from the close_code failures #4398 has since fixed on dev. After merging dev (which carried main's capture-time producers into moq-flate), moq-flate/moq-mux tests, @moq/flate tests, and quest check pass.

Quest file

quest/m1/flate-binary.md reached dev with #4428, so it is deleted here, with its quest/m1/README.md bullet and references in quest/m1/ffi-shape/, quest/m2/flate/, and quest/m2/teleop/ (m2/flate/bindings.md is now unblocked). main still lists it; delete it there with the same references.

Suggested follow-ups

  • The publish_flate_* calls are still only reachable from the generated bindings; Compressed tracks bindings should add the hand-written wrappers.
  • Consider whether moq_mux::binary should be renamed to match once the FFI shape settles; kept here because the plan fixed it to the catalog section's name.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 2 commits September 28, 2026 13:27
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The opaque snapshot and stream tracks move beside the group-scoped codec:
moq_binary::{snapshot, stream, Compression} are moq_flate::{...}, and
@moq/binary's Snapshot and Stream are @moq/flate's. moq-binary and
@moq/binary are deleted. moq-mux's Error::Binary is Error::Flate, and
moq-ffi's binary tracks are publish_flate_* with MoqFlate* types.

Wire and the catalog's binary section are unchanged.

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

Copy link
Copy Markdown
Collaborator Author

Outcome: the fold is complete and left as a draft. just check and just test interop --all pass apart from three unrelated moq-tokio::close_code failures (#4398).

Open decisions:

  • Quest file cleanup: quest/m1/flate-binary.md exists only on main. Recommend a small main PR removing it and its references once this merges, rather than waiting for the next main into dev sync.
  • moq_mux::binary keeps its name per the plan. Recommend leaving it until the FFI shape quest settles naming.

(Written by Claude Opus 5.5)

@kixelated
kixelated marked this pull request as ready for review September 29, 2026 00:36
@kixelated
kixelated enabled auto-merge (squash) September 29, 2026 00:37
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 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-09-29T04:49:45.316977Z f1f3507 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.

@kixelated
kixelated disabled auto-merge September 29, 2026 02:03
Carries dev's capture-time producers (from the main sync) into moq-flate,
ports their doc lines to the flate pages, and deletes the finished
quest/m1/flate-binary.md now that dev has it.

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: 5d7b103826

ℹ️ 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 +29 to +30
`flate` is the same shape over opaque bytes: moq-ffi's `flate.rs`
(`publish_flate_snapshot`, `publish_flate_stream`) moves under it, mirroring

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 Finish renaming the methods throughout the quest docs

When the follow-up binding quests are executed, this updated plan conflicts with its own Goal, which still tells agents to remove publish_binary_* at line 8; quest/m1/data-capture-bindings.md:19,37-39 likewise still points to binary.rs and the removed method names. Update those references to flate.rs and publish_flate_*, or future work may target APIs that no longer exist instead of the renamed surface.

AGENTS.md reference: AGENTS.md:L28-L28

Useful? React with 👍 / 👎.

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.

Agreed. Fixed in the next commit: ffi-shape/json.md's Goal names publish_flate_*, and data-capture-bindings.md points at flate.rs and the flate wrappers.

(Written by Claude Opus 5.5)

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

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Merged dev after Merge main into dev #4428. It carried main's capture-time producers (Timed, encoded-size returns) into the moved moq-flate modules and moq_mux::binary. The deleted moq-binary docs' capture-time lines moved to the flate pages, and main's deleted data-jitter quest stays deleted.
  • quest/m1/flate-binary.md reached dev with the sync, so it's deleted here with its references. m2/flate/bindings.md is now unblocked. main still lists the quest.
  • Codex's rename finding is fixed (publish_flate_*, flate.rs in the binding quests).
  • Interop failed twice before any test ran: a stale refs/pull/4425/merge Rust cache, saved by the pre-merge workflow, lacked aws-lc-sys's build script. I deleted that PR-scoped entry; the merged workflow no longer saves PR caches, and Interop passes cold.

Public API and wire impact are unchanged from the description. Merging with a merge commit.

(Written by Claude Opus 5.5)

@kixelated
kixelated merged commit 474183c into dev Sep 29, 2026
25 of 28 checks passed
@kixelated
kixelated deleted the quest/m1/flate-binary branch September 29, 2026 06:15
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