Skip to content

quest: audit the tree against the code and moq - #667

Merged
kixelated merged 5 commits into
mainfrom
quest/audit-2026-11-07
Nov 8, 2026
Merged

kixelated merged 5 commits into
mainfrom
quest/audit-2026-11-07

Conversation

@kixelated

@kixelated kixelated commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This audits every outstanding quest against the code, the docs, and moq's tree, which plans the work rust2 depends on. Three read-only passes covered m0 and m1, m2 and the m3 rust2-ts quests, and the rest of m3 plus m4. Every change below comes with its evidence.

Factual fixes

  • Dead moq links. moq re-cut its milestones in moq-dev/moq#7988, which broke several links:
    • session-quic now points at quest/m3/quic-sansio-driver.md;
    • m1 and ffi-export point at quest/m3/ffi-exporter.md;
    • ts-model points at quest/m5/rs2ts-js.md and links moq's rs2ts-model-subset;
    • ubrn-release drops the link to a moq quest that moq-dev/moq#7475 deleted.
  • Waits moved into ## Waiting, with their checks. These quests kept their upstream conditions in the Goal, so quest waiting and /quest-unblock never showed them: session-quic, uniffi-swift-arm, ubrn-release, cranelift-unwind, relink, ts-fma-allowance, and ts-tsrs. fork gets a Maintainer: item. ts-model gets a wait on moq's m5 rs2ts-model-subset: it looked unblocked, but its remaining work is moq's. session-quic's extra wait on moq-quic owning its waits had already cleared, so it is gone.
  • Stale facts.
    • The milestone summaries in quest/README.md named "the fork's perf work" in m1 and "the pure-Rust profile" in m3. Neither exists any more.
    • The ffi/README.md intro still said "starting from C", though all seven generators have landed.
    • The refusals epic said config.rs is deleted, but its Package and environment constants stay; it now lists the fixtures' ffi.toml files.
    • relink's status was as of 2026-10-24.
    • tsrs moved to oxc-project/tsrs and ships on npm only.
    • ts-wasm-bindgen said tokio's channels refuse, but they are mapped since #654.
    • go/enums would have created a new external test package, but go/tests/exports exists since #645.
    • uniffi-swift-arm's cleanup list now includes fix(nix): leave out Swift where its compiler is broken #653's flake comment.
    • The bench/build README notes Bump the build benchmark's moq pin past poll-first #646's 58 of 6379 Cranelift failures.
    • bench/ffi no longer says moq-wasm ships.
  • Duplicates and cross-links.
    • m3's README stated the unsafe policy twice; the duplicate is merged away.
    • ts-model's "Only true platform boundaries stay bound" contradicted ts-configless, and now defers to it.
    • ts-runtime-throws and ts-array-ref-conversions now link each other, since both build on rs.ArraySlice.
    • ts/README.md's Not yet list gains the two safe-Rust constructs that emit TypeScript tsc rejects.

Decisions

Each was decided with the maintainer on 2026-11-07 and is recorded in the affected quest's Plan.

  • ✅ smallvec maps into the runtime as rs.Vec, under rule 2 of m3's unsafe policy. This adds the new ts-model child quest/m2/ts-model/smallvec.md. Rejected: moq dropping smallvec from the model's path.
  • ✅ Narrowing the ffi stand-in to moq-tokio's session side is the refusals epic's first child (narrow-standin.md), so the other children count only what stays. Rejected: narrowing last.
  • ✅ The two moq pin bumps merge into one. moq-reexports and moq-unreachable become moq-pin.md, waiting on both moq quests.
  • ✅ session-quic ranks below the refusals epic. It waits on moq's m3 driver.
  • ✅ if-let-drop and pin-own-deref move to the top of m3's rust2-ts quests. Both are safe Rust that emits TypeScript tsc rejects.
  • ✅ A glob of a crate root exports that crate's items, as named re-exports do: "we probably need to support re-exports", while moq re-exports only the items it needs, not all of rustls. Rejected: refusing globs like whole-crate re-exports.
  • ✅ Bytes::slice_ref of bytes from other storage is refused at translation, since it is safe code and AGENTS.md allows run-time checks only for unsafe pointers. It moves into ts-runtime-throws' "What remains". Rejected: keeping feat(ts)!: abort where Rust leaves behavior undefined, locate zip's and tokio's panics, and refuse erasing a pointer not shown an Arc's #661's run-time check and widening AGENTS.md.

Not changed

  • ubrn-release stays. The audit suggested deleting it once moq removed WASM, but its consumer is rust2's own binding benchmark.
  • ts-model stays in m2. moq deferring its side to m5 fits m2's "named consumer not waiting on it yet".

Follow-ups (moq's tree)

  • moq's quest/m5/rs2ts-model-subset.md still lists smallvec, and links rust2's deleted ts-unsafe epic. The companion moq PR updates both.
  • moq's quest/m5/rs2ts-wasm2js.md links rust2's deleted quest/m2/ts.md. The companion moq PR fixes the link. Whether it should still call rust2-ts a "parallel research track" is moq's call.

Models

Size: M
Implementer: Claude Code, claude-opus-5-5, high effort

(Written by Claude Opus 5.5 with high effort)

🤖 Generated with Claude Code

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, high effort
  • Session: 01a1b915-4436-7420-bc27-3ef929513748, round 3
  • Head: 8fb6563
  • Base: origin/main at b1a6eac
  • Score: 10/10, Both findings are fixed with semantics matching pinned SmallVec source; no concrete defects remain, and quest validation and whitespace checks pass.
  • Findings: none
  • The last round's findings, at d0dfc67:
    • Fixed: medium, quest/m2/ts-model/smallvec.md:24: [P2] Correct the spill-to-inline transition rules; quest/m2/ts-model/smallvec.md:24-27 correctly describes grow/try_grow returning storage inline and spilled into_inner returning Err, with differential coverage required at lines 31-33.
    • Fixed: medium, quest/m2/ts-model/smallvec.md:25: [P2] Preserve inline_size for zero-sized elements; quest/m2/ts-model/smallvec.md:26 specifies usize::MAX for zero-sized inline_size, matching pinned smallvec 1.16.3, and line 33 requires differential coverage.

kixelated and others added 3 commits November 7, 2026 18:53
Fix dead moq links, move upstream waits into Waiting sections, narrow the
ffi stand-in first, merge the two moq pin bumps, and say a glob of a crate
root exports its items.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plan smallvec's runtime mapping under the unsafe policy's rule 2, refuse
Bytes::slice_ref of other storage at translation, move the two tsc-failing
safe-Rust bugs to the top of m3's ts quests, and give ts-model its wait on
moq's subset quest.

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

pullfrog Bot commented Nov 8, 2026

Copy link
Copy Markdown

Pullfrog  | Review this ➔

kixelated and others added 2 commits November 7, 2026 18:57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 8, 2026 02:59
@coderabbitai

coderabbitai Bot commented Nov 8, 2026

Copy link
Copy Markdown

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 25 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review 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: ec81aa85-56d2-416a-918c-0c66af593140
Commits

Reviewing files that changed from the base of the PR and between b1a6eac and 8fb6563.

Files selected for processing: 29

  • bench/build/README.md
  • bench/ffi/README.md
  • ffi/README.md
  • quest/README.md
  • quest/m1/README.md
  • quest/m1/ffi-export/README.md
  • quest/m1/ffi-export/refusals/README.md
  • quest/m1/ffi-export/refusals/moq-pin.md
  • quest/m1/ffi-export/refusals/moq-reexports.md
  • quest/m1/ffi-export/refusals/moq-unreachable.md
  • quest/m1/ffi-export/refusals/narrow-standin.md
  • quest/m1/ffi-export/refusals/reexports.md
  • quest/m1/ffi-export/session-quic.md
  • quest/m2/ts-model/README.md
  • quest/m2/ts-model/smallvec.md
  • quest/m2/ubrn-release.md
  • quest/m2/uniffi-swift-arm.md
  • quest/m3/README.md
  • quest/m3/cranelift-unwind.md
  • quest/m3/relink.md
  • quest/m3/ts-array-ref-conversions.md
  • quest/m3/ts-fma-allowance.md
  • quest/m3/ts-runtime-throws.md
  • quest/m3/ts-tsrs.md
  • quest/m3/ts-wasm-bindgen/README.md
  • quest/m4/README.md
  • quest/m4/fork.md
  • quest/m4/go/enums.md
  • ts/README.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

@kixelated kixelated left a comment

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.

Automated review by review (OpenAI)

Head: 8fb6563
Base: b1a6eac

Findings: No actionable defects found in the 29-file documentation and quest-plan diff.

Direction: The audit makes the implementation order and upstream gates clearer. The stand-in narrowing is now an explicit first step, the two moq pin tasks are consolidated, and the smallvec plan explicitly requires observable capacity/spill state and drop-order differential coverage rather than treating SmallVec as an interchangeable Vec. The Bytes::slice_ref follow-up is consistent with AGENTS.md's safe-code/runtime-error policy.

Verification: Read the complete changed-file patches and checked relevant source and test context, including the FFI configuration and stand-in recipe, stock mappings and bytesSliceRef runtime, model dependency pin, Swift guard, existing external Go fixture and its Rust harness, and the linked moq driver/model plans. New repository-local links in added lines resolve in the head tree. This was GitHub-only static review: no shell commands, builds, tests, quest validation, or benchmark reruns. The pinned SmallVec version was confirmed from Cargo.lock; upstream SmallVec source could not be retrieved through the connector, so its precise transition semantics were not independently verified. This is not a test-pass or merge-readiness claim.

(Written by review (OpenAI))

@kixelated
kixelated added this pull request to the merge queue Nov 8, 2026
Merged via the queue into main with commit f7a0c27 Nov 8, 2026
4 checks passed
@kixelated
kixelated deleted the quest/audit-2026-11-07 branch November 8, 2026 03:11
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