Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/quest-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: quest-review
description: Review a PR's branch locally with a model that wrote none of it, then mark it ready for review.
description: Review a PR's branch locally with a model other than its latest writer, then mark it ready for review.
---

Run `quest skill review` and follow its output.
Expand Down
13 changes: 6 additions & 7 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
# The quest CLI, which also serves the quest guide and skills the stubs in
# .claude/skills call. Bump the rev to upgrade them.
quest = {
url = "github:moq-dev/quest/6a18b8a815c2d15d37d7433a619f961ec5a07165";
url = "github:moq-dev/quest";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
Expand Down
8 changes: 0 additions & 8 deletions quest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,3 @@ Decided with the maintainer on 2026-10-23, when rust2 was planned from moq
- The first quest that adds a crate also adds the Cargo workspace (moq's
workspace lints, including a reason on every suppression) and the cargo
steps of `just check`.

## Required

- [m0: immediate priorities](/quest/m0/README.md) - urgent fixes, the checks' cost, and a green nightly
- [m1: consumers waiting](/quest/m1/README.md) - the exporter moq can pin and switch its bindings to
- [m2: research](/quest/m2/README.md) - rust2-wasm as the browser route, and the TypeScript translator that has to beat it
- [m3: deferred](/quest/m3/README.md) - upstream's build-speed levers, the translator features that wait on the gate, and binding targets planned ahead of a consumer
- [m4: long-term research](/quest/m4/README.md) - ideas no consumer needs yet, such as a rustc and cargo fork
5 changes: 0 additions & 5 deletions quest/m0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,3 @@

Urgent fixes to anything a consumer already depends on, and what every agent pays for on
each run: the checks, a red nightly, and code no consumer uses.

## Required

- [Checks at moq's cost](/quest/m0/checks/README.md) - `just ci` selects by the diff, builds warm, and runs the differential optimized, with a nightly full `just gate`
- [The nightly passes](/quest/m0/nightly-green.md) - red since 2026-10-29: the wasm-bindgen fixture's NaN, Kotlin on Android API 35, and `just ffi moq`
4 changes: 0 additions & 4 deletions quest/m0/checks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,3 @@ stays the rule, and costs less now that it selects by the diff
keep their rules. All of it is m0, since every agent pays the cost now.

Each child reports its CPU saved, cold and warm, against `origin/main`.

## Required

- [A warm gate](/quest/m0/checks/cache.md) - the land gate builds through mbx, as moq's does
4 changes: 0 additions & 4 deletions quest/m1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,3 @@ Decided 2026-11-02 (maintainer, moq's /quest-unblock): the fork is not published
Decided with the maintainer on 2026-11-09, in the quest audit: ✅ the fork is deleted now,
since moq never builds on it and its only consumers here were the binding benchmark's
baseline and nightly jobs. Rejected: keeping it until moq switches; keeping it as is.

## Required

- [Exporter](/quest/m1/ffi-export/README.md) - moq can pin an exporter that exports its crates' `pub` API in every language it ships
13 changes: 0 additions & 13 deletions quest/m1/ffi-export/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,3 @@ arenas keep under Go's lent `Bytes` is the consumer's to fix with its global all

Decided with the maintainer on 2026-11-04: the exporter is configless, with opinionated
names and defaults, and fails the export on a public item it cannot export.

## Required

- [Every public item exports](/quest/m1/ffi-export/refusals/README.md) - the census lists no refusals and `ffi.toml` is deleted, so the exporter reads no config
- [Share a binding across targets](/quest/m1/ffi-export/target.md) - one Kotlin, Dart, Go, or Swift binding serves every target moq ships it to, though their `cfg`-gated items differ
- [Lossless binding types](/quest/m1/ffi-export/lossless.md) - durations, addresses, paths, text, and integers cross exactly, with checked conversions to the idiomatic types
- [Failed checks raise](/quest/m1/ffi-export/checks-raise.md) - a failed borrow, move, or close check is the language's own error from one accounting, and only a panic aborts
- [Types that are not Send export](/quest/m1/ffi-export/not-send.md) - a `!Send` object or future is checked by thread, with an owner thread where a language has none
- [No name clash fails an export](/quest/m1/ffi-export/names.md) - every generator names every item by rule, so no error tells a crate to rename or exclude one
- [The glue builds what the export checked](/quest/m1/ffi-export/reproducible.md) - the generated crate carries its lockfile, and a discriminant or nightly-only item it cannot build is refused at export
- [Swift handles are non-copyable](/quest/m1/ffi-export/swift-noncopyable.md) - a call on a moved handle or a lent handle kept past its call is a Swift compile error, not a trap
- [C++ checks ownership at compile time](/quest/m1/ffi-export/cpp-attributes.md) - typestate and lifetime attributes and `api::borrow<T>` make Clang refuse what the run-time checks catch
- [The exporter on the binding benchmark](/quest/m1/ffi-export/bench.md) - committed call, throughput, and size numbers per language against the Rust floor, whose report plans the speed work
9 changes: 0 additions & 9 deletions quest/m1/ffi-export/refusals/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,3 @@ only because a type they name is refused, and clear with it. After the stand-in
items, 41 of them in moq-tokio, and 6 types.

Public API: the exporter's command line and the C API of every item that exports.

## Required

- [The stand-in exports only moq-tokio's session side](/quest/m1/ffi-export/refusals/narrow-standin.md) - `just ffi standin` names the session items moq-ffi ships in place of `pub use ::moq_tokio::*;`
- [Futures and kept closures as parameters export](/quest/m1/ffi-export/refusals/generics.md) - `clock::timeout`'s future, `clock::drive`'s kept closure, and `mp4::repair`'s seekable reader cross from C
- [Standard and common types export by role](/quest/m1/ffi-export/refusals/std-types.md) - `Filter`, serde_json's map iterators, `Instant`, and tracing's levels, once their maintainer decisions land
- [Returned wakers and contexts export](/quest/m1/ffi-export/refusals/poll.md) - kio's `Waiter::waker` and `Waiter::context`, once a function returning `Poll` exports as a future
- [Small shapes export](/quest/m1/ffi-export/refusals/small-shapes.md) - `u128`, arrays, const generics, unit and `Result` off a return, `!`, empty enums, and what is not `Send`
- [Bump the moq pin past its re-export and reachability fixes](/quest/m1/ffi-export/refusals/moq-pin.md) - the census has no whole-crate re-export refusal and no unreachable type of moq's own
6 changes: 0 additions & 6 deletions quest/m2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,3 @@ from the browsers goes to the browsers.

The fork's feature quests folded into the [exporter](/quest/m1/ffi-export/README.md);
[m1](/quest/m1/README.md#plan) records why.

## Required

- [rust2-wasm](/quest/m2/wasm/README.md) - a crate's `pub` API in the browser through the exporter's wasm32 target, and the gate the translator has to pass
- [Translate moq-net's model to TypeScript](/quest/m2/ts-model/README.md) - the model translates with kio and moq-pattern, for the gate to compare
- [Waiting: Swift 6.4 in nixpkgs-unstable](/quest/m2/swift-arm.md) - rust2-ffi stops skipping its Swift on aarch64-linux
5 changes: 0 additions & 5 deletions quest/m2/wasm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,3 @@ Why this shape, from the audit's survey of 2026's tools:
moq's [`rs2ts-js`](https://github.com/moq-dev/moq/blob/main/quest/m5/rs2ts-js.md) and
[`rs2ts-wasm2js`](https://github.com/moq-dev/moq/blob/main/quest/m5/rs2ts-wasm2js.md) still
record the superseded decision; they are moq's tree's to update.

## Required

- [The exporter's web target](/quest/m2/wasm/backend.md) - the glue crate builds for wasm32 with a generated TypeScript binding over web APIs, proven on the api fixture
- [Every route on the browser benchmark](/quest/m2/wasm/routes.md) - `just ts bench` runs rust2-wasm's export and a `wasm2js` control beside the translation
14 changes: 0 additions & 14 deletions quest/m3/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,3 @@ Rejected: an unsafe std gap with no consumer becoming its own quest, as
([#647](https://github.com/moq-dev/rust2/pull/647)), or as `Vec::from_raw_parts`'s adopted
storage did ([#635](https://github.com/moq-dev/rust2/pull/635)); and a second, byte-backed
memory model for values whose address is reinterpreted, without a consumer.

## Required

- [Sessions on sans-IO QUIC](/quest/m3/session-quic.md) - bindings move UDP datagrams and drive the session's poll themselves, over moq's runtime-free QUIC driver once it lands
- [C# and Unity bindings](/quest/m3/csharp.md) - a C# generator over the C ABI that runs under .NET and Unity's IL2CPP
- [A Node-API addon](/quest/m3/node.md) - a native Node binding, kept only if it beats rust2-wasm and `node:ffi`
- [React Native bindings](/quest/m3/react-native.md) - a JSI module over the generated C++ header
- [A WASI target](/quest/m3/wasi.md) - the exporter's API as a WASI module or component for hosts with no JavaScript
- [Retrial Cranelift on moq's tests](/quest/m3/cranelift-unwind.md) - waits on upstream: moq's tests pass under Cranelift, so its CI can weigh it again
- [Relink without rebuilding](/quest/m3/relink.md) - measure upstream's skip of dependency-only rebuilds on moq's edits once it reaches nightly
- [Waiting: drop the lang fixture's mul_add allowance](/quest/m3/ts-fma-allowance.md) - the differential fails on any `mul_add` difference again once wasm32's `fma` rounds exactly
- [Waiting: type-check in process with tsrs](/quest/m3/ts-tsrs.md) - rust2-ts checks bindings through tsrs instead of `tsc` once it is a stable library
- [rust2-ts with no ts.toml](/quest/m3/ts-configless.md) - a crate's whole `pub` API translates with no config and no bound items
- [Browser APIs through wasm-bindgen](/quest/m3/ts-wasm-bindgen/README.md) - web-sys and js-sys imports become direct JS calls, so idiomatic crates such as web-rs's web-codecs translate as stock crates
6 changes: 0 additions & 6 deletions quest/m4/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,3 @@ at moq's types, closures included, so it would have to compile std too. Levers
that need no new frontend reach its best case: ra-jit already applies the
moq-net body edits it serves in under half a second, and Cranelift cuts a clean
build's retired instructions by 16%.

## Required

- [Bench TPDE on moq](/quest/m4/tpde.md) - what TPDE cuts from moq's clean build and non-incremental edit; waits on `-Zllvm-tpde` reaching a nightly
- [Waiting: a rustc and cargo fork](/quest/m4/fork.md) - the evidence ledger for carrying a fork; condition: enough measured reasons to pay for one
- [moq in pure Go](/quest/m4/go/README.md) - rust2-go translating moq-net, with no cgo, fast enough to replace the cgo bindings for Go users; parked until a consumer needs moq in pure Go
8 changes: 0 additions & 8 deletions quest/m4/go/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,3 @@ moq's codec held to rust2-ts's bar: 35,273 codec cases and 124,193 integer cases
native Rust, panics included. It runs 2 to 113 times slower than cgo on batched loops,
and beats it only on a single short call, where cgo's crossing dominates. Stripped, it
adds 324 KB to a Go binary where cgo adds 1.15 MB and a libc dependency.

## Required

- [moq-net beyond the codec](/quest/m4/go/coverage.md) - `Drop`, floats, 128-bit integers, trait objects, and collections, so moq-net translates whole
- [Exported names off the runtime's](/quest/m4/go/runtime-names.md) - a crate's own `Result` or `Formatter` exports beside the runtime's
- [A Go API for exported enums](/quest/m4/go/enums.md) - Go callers in another package build, match, and pass a `pub enum`, pinned by an external test package
- [Trait-impl methods](/quest/m4/go/trait-impls.md) - a `pub` type's `Display`, `Debug`, `From`, and other impls callable from Go by a naming rule
- [Methods through a specialized alias](/quest/m4/go/alias-methods.md) - a private generic type's methods exported through `pub type Byte = Value<u8>` instead of refused