From 785f9686b55a33f2d1ccece72d287fef5cfc7d33 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 9 Nov 2026 08:07:31 -0800 Subject: [PATCH 1/5] chore(quest): claim quest/m1/ffi-export/refusals/moq-pin.md Quest-Claim: 34726cb0d0885089 From 7ad38738f016205a9afbecc41deb7da4e195e877 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 9 Nov 2026 17:24:52 -0800 Subject: [PATCH 2/5] fix(ffi): exclude hang's and moq-tokio's whole-crate re-exports of moq-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: [moq-dev/rust2#668](https://github.com/moq-dev/rust2/pull/668) - refused whole-crate re-exports the stand-in's config did not exclude. Co-Authored-By: Claude Haiku 5.5 --- ffi/moq/ffi.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ffi/moq/ffi.toml b/ffi/moq/ffi.toml index 423084aae..79f8a9be1 100644 --- a/ffi/moq/ffi.toml +++ b/ffi/moq/ffi.toml @@ -84,6 +84,7 @@ exclude = [ "hang::health::ViewerThresholds::stalled", "hang::health::publisher", "hang::health::viewer", + "hang::moq_net", "hang::stats::Snapshot", "kio", "log::Evicted", @@ -191,6 +192,7 @@ exclude = [ "tokio::crypto::install_default", "tokio::crypto::provider", "tokio::failover::Attempt", + "tokio::moq_net", "tokio::notify", "tokio::panic::isolate", "tokio::panic::message", From 7a40d91799fd915c90a254575ce5ce6ea78b6896 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 9 Nov 2026 17:25:33 -0800 Subject: [PATCH 3/5] chore(quest): narrow the moq pin quest to moq's remaining reachability items Co-Authored-By: Claude Haiku 5.5 --- quest/m1/ffi-export/refusals/moq-pin.md | 28 +++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/quest/m1/ffi-export/refusals/moq-pin.md b/quest/m1/ffi-export/refusals/moq-pin.md index 93271d7eb..596b3926c 100644 --- a/quest/m1/ffi-export/refusals/moq-pin.md +++ b/quest/m1/ffi-export/refusals/moq-pin.md @@ -2,10 +2,11 @@ ## Goal -The moq pin moves to a revision whose crates re-export no whole crate, moq's own included, -and where every type a facade export names is reachable from the facade's root. `just ffi -census` there lists no whole-crate re-export refusal and no "type not reachable from the -crate root" refusal of moq's own (18 at moq `ffcb7cd9`). +The moq pin moves to moq's current `main`, whose crates re-export no whole crate, moq's own +included. `just ffi census` there lists no whole-crate re-export refusal. Its "type not +reachable from the crate root" refusals are `kio::Pending` and `lite::version::Version`, +which Waiting covers, and moq-quic's stats and varint types under moq-tokio's `quic::driver`, +which narrow-standin drops. ## Plan @@ -35,12 +36,17 @@ each is an XS bump of the same pin line. Rejected: one bump per moq quest. Then bump the pin in `ts/fixtures/model/Cargo.toml`, which `ts/justfile`'s `moq_rev` reads, and report the census before and after. +Decided with the maintainer on 2026-11-09: bump to moq's current main now, and narrow the +Goal to the two moq-owned types. Rejected: wait for moq to fix the rest first. Not landed: +moq's `main` fails `just ts moq` and `just ffi moq-cpp`, so the bump waits on Waiting. + ## Waiting -- moq-dev/moq: [quest/m2/api-shape/reexports.md](https://github.com/moq-dev/moq/blob/main/quest/m2/api-shape/reexports.md), - planned in [moq-dev/moq#8233](https://github.com/moq-dev/moq/pull/8233), drops every - whole-crate re-export, moq's own included, and re-exports `Guard` from `container`. Done - once that quest is gone from moq's `main` and the census at its head lists no whole-crate - re-export. -- moq-dev/moq: [quest/m2/moq-quic-unused-surface.md](https://github.com/moq-dev/moq/blob/main/quest/m2/moq-quic-unused-surface.md) - removes `stream::Id::{new, initiator}`. Done once that quest is gone from moq's `main`. +- moq-dev/moq: `rind` builds for wasm32. moq-net depends on `rind`, whose md5 inline asm has + no wasm32 arm, so `just ts moq ` fails at moq's `main`. Done when it passes there. +- moq-dev/moq: moq-tokio builds without tripping `recursion_depth_exceeding_limit` (an + overflow proving `Send` on `Instrumented<...>`), which `just ffi moq-cpp ` denies. + Done when it passes at moq's `main`. +- moq-dev/moq: `kio::Pending`, named by `dial_tcp` and `dial_track`, and `lite::version::Version` + are reachable from moq-net's root, by name or by wrapping. Done when `just ffi census + ` at moq's `main` lists no "type not reachable from the crate root" for either. From f2c48ea72ccd613127a9b310be2273a349d3b30c Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Tue, 10 Nov 2026 02:56:04 -0800 Subject: [PATCH 4/5] chore(quest): hold the moq-dev/moq conditions and ask about unreachable types Co-Authored-By: Claude Haiku 5.5 --- quest/m1/ffi-export/refusals/moq-pin.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/quest/m1/ffi-export/refusals/moq-pin.md b/quest/m1/ffi-export/refusals/moq-pin.md index 45354eb87..104df106e 100644 --- a/quest/m1/ffi-export/refusals/moq-pin.md +++ b/quest/m1/ffi-export/refusals/moq-pin.md @@ -66,3 +66,9 @@ moq's `main` fails `just ts moq` and `just ffi moq-cpp`, so the bump waits on Wa are reachable from moq-net's root, by name or by wrapping. Done when `just ffi census ` at moq's `main` lists no "type not reachable from the crate root" for either. No moq quest owns this yet. +- Maintainer: decide whether rust2 exports a type the crate root does not reach by its defining + path, rather than waiting for moq to re-export it. Options: (a) export `kio::Pending` and + `lite::version::Version` by their defining paths, recommended, since it asks moq for no source + change, as the maintainer's 2026-11-09 decision does; (b) wait for the moq item above. A type + whose defining path is itself private stays refused under (a). Done when the decision is + recorded here. From 134124d86073838264579b0232c0f63d000bac05 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Tue, 10 Nov 2026 07:22:01 -0800 Subject: [PATCH 5/5] quest: make moq-pin's reachability wait one decision, landing before the bump Co-Authored-By: Claude Opus 5.5 --- quest/m1/ffi-export/refusals/moq-pin.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/quest/m1/ffi-export/refusals/moq-pin.md b/quest/m1/ffi-export/refusals/moq-pin.md index 104df106e..b3c544e80 100644 --- a/quest/m1/ffi-export/refusals/moq-pin.md +++ b/quest/m1/ffi-export/refusals/moq-pin.md @@ -62,13 +62,12 @@ moq's `main` fails `just ts moq` and `just ffi moq-cpp`, so the bump waits on Wa - moq-dev/moq: moq-tokio builds without tripping `recursion_depth_exceeding_limit` (an overflow proving `Send` on `Instrumented<...>`), which `just ffi moq-cpp ` denies. Done when it passes at moq's `main`. -- moq-dev/moq: `kio::Pending`, named by `dial_tcp` and `dial_track`, and `lite::version::Version` - are reachable from moq-net's root, by name or by wrapping. Done when `just ffi census - ` at moq's `main` lists no "type not reachable from the crate root" for either. - No moq quest owns this yet. -- Maintainer: decide whether rust2 exports a type the crate root does not reach by its defining - path, rather than waiting for moq to re-export it. Options: (a) export `kio::Pending` and - `lite::version::Version` by their defining paths, recommended, since it asks moq for no source - change, as the maintainer's 2026-11-09 decision does; (b) wait for the moq item above. A type - whose defining path is itself private stays refused under (a). Done when the decision is - recorded here. +- Maintainer: decide how `kio::Pending`, named by `dial_tcp` and `dial_track`, and + `lite::version::Version` stop refusing as "type not reachable from the crate root", which + `just ffi census ` lists at moq's `main`. Options: (a) rust2 exports a type the + crate root does not reach by its defining path, recommended, since it asks moq for no source + change, as the maintainer's 2026-11-09 decision does; a type whose defining path is itself + private stays refused. (b) moq-dev/moq makes both reachable from moq-net's root, by name or + by wrapping; no moq quest owns this yet. Whichever is chosen, its change lands before the + bump: the exporter change under (a), or moq's fix under (b). Done when the census at moq's + `main` lists neither type.