Skip to content

fix(ffi): exclude moq's whole-crate re-exports, and narrow the moq pin quest - #676

Draft
kixelated wants to merge 5 commits into
mainfrom
quest/m1/ffi-export/refusals/moq-pin
Draft

kixelated wants to merge 5 commits into
mainfrom
quest/m1/ffi-export/refusals/moq-pin

Conversation

@kixelated

@kixelated kixelated commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Claims quest/m1/ffi-export/refusals/moq-pin.md.

This head merges main, leaves out the two whole-crate re-exports the stand-in still exported, and narrows the quest. The pin bump is not on this head: moq's main fails just ts moq and just ffi moq-cpp, see Waiting.

Decisions

  • 2026-11-07, quest audit (unchanged): one pin bump for both moq quests, each a whole-crate re-export or a stand-in refusal of moq's own. ✅ moq re-exports no whole crate; moq re-exports by name or wraps. Rejected: only the ten; only third-party crates.
  • 2026-11-09, maintainer: ✅ bump the pin to moq's current main now, and narrow the Goal to the two moq-owned types moq has yet to re-export. Rejected: wait for moq to fix the rest first. Status: not landed, see Waiting. The Goal is narrowed in this head.
  • 2026-11-09, this session: "current main" was bad28cef when the maintainer decided, and it has moved to 10772522a. I bumped to 10772522a and measured it. Both bad28cef and 10772522a fail the merge gate, so the bump is held (a local checkpoint, not pushed) and this head keeps the pin at ffcb7cd9.
  • 2026-11-09, this session: just ffi moq already fails on main at the pin. feat(ffi)!: refuse a whole-crate re-export with one span #668 refuses whole-crate re-exports, and the stand-in config does not exclude hang::moq_net or tokio::moq_net. This head adds those two excludes. No C item changes: both were refused, so nothing new exports.
  • 2026-11-09, this session: the quest's Goal is narrowed, and its Waiting lists the three moq conditions. The two moq quests it waited on (m2/api-shape/reexports.md, m2/moq-quic-unused-surface.md) are gone from moq's main, so their items are removed.
  • 2026-11-09, this session: main moved to 22485b345 with the quest audit, which also edited moq-pin.md. I merged it. The conflict kept the audit's [S] title, its facts on moq's merged fixes, and its just ts census note for a bump. It replaced the audit's Waiting maintainer item with the hold above, and kept the narrowed Goal.

Census

just ffi census (the stand-in, from moq/ffi.toml), with main's exporter at both revisions. The "items" column is the census's own construct table.

Construct ffcb7cd9 (pin) 10772522a (held bump)
re-export of a whole crate 11 0
type not reachable from the crate root 18 9
refused methods and fields 185 172
refused traits 20 21
refused functions 19 18
other items refused 11 0

At ffcb7cd9, the 18 are Guard (16) and moq_quic::Side (2). At 10772522a, the 9 are kio::Pending (2, from dial_tcp and dial_track), lite::version::Version (1), and moq-quic's stats and varint types under moq-tokio's quic::driver (6), which narrow-standin drops.

Impact

  • This head: no C API change. Two excludes were added for items that were already refused.
  • The held bump would change the C API: its regenerated stand-in config excludes 217 paths, against 347 on main, so the items in between would export.

Caused by

  • moq-dev/rust2#668 - refused whole-crate re-exports that the stand-in config did not exclude for hang's and moq-tokio's pub use moq_net;, so just ffi moq failed on main.

Waiting

  • Maintainer: decide whether the bump waits for moq. Recommendation: hold it, keep the pin at ffcb7cd9, and land this head once the maintainer agrees. Un-hold by bumping once just ts moq <checkout> and just ffi moq-cpp <checkout> pass at moq's main. Options: (a) hold, recommended; (b) bump to 10772522a anyway, which can't land because the merge gate fails at just ts moq; (c) another moq revision, none of which I have found passing both checks.
  • moq-dev/moq: rind builds for wasm32. moq-net depends on rind, whose md5 inline asm has no wasm32 arm, so just ts moq <checkout> fails at moq's main. Done when it passes there. A rind 0.3.2 probe got past that error and then hit getrandom's wasm_js feature, so it is not a drop-in fix.
  • moq-dev/moq: moq-tokio builds without tripping recursion_depth_exceeding_limit, which just ffi moq-cpp <checkout> denies. It passes at ffcb7cd9 and fails at bad28cef and main. Done when it passes at moq's main.
  • moq-dev/moq: kio::Pending and lite::version::Version are reachable from moq-net's root. Done when just ffi census <checkout> lists no "type not reachable from the crate root" for them.
  • Maintainer: a stale local branch quest/m1/ffi-export/refusals is checked out in another worktree and blocks quest start in this checkout, so this session pushed by refspec from iterate/moq-hold. Check with git branch --list 'quest/m1/ffi-export/refusals', which should print nothing once it is renamed or deleted.

Models

Size: XS
Implementer: Claude Code, claude-haiku-5-5, high effort (iterate, XS)

(Written by Haiku 5.5 with high)

@pullfrog

pullfrog Bot commented Nov 9, 2026

Copy link
Copy Markdown

Pullfrog  | Review this ➔

kixelated and others added 2 commits November 9, 2026 17:24
…q-net

Since #668 the exporter refuses a whole-crate `pub use`, and the stand-in's
config did not exclude `hang::moq_net` or `tokio::moq_net`, so `just ffi moq`
failed at the pinned moq revision. Both are excluded; nothing new exports.

Caused by: [#668](#668) - refused whole-crate re-exports the stand-in's config did not exclude.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…y items

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title Bump the moq pin past its re-export and reachability fixes fix(ffi): exclude moq's whole-crate re-exports, and narrow the moq pin quest Nov 10, 2026
# Conflicts:
#	quest/m1/ffi-export/refusals/moq-pin.md
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