Skip to content

quest: plan Miri GenMC and OSS-Fuzz - #8473

Merged
moq-bot[bot] merged 3 commits into
mainfrom
quest-plan/net-confidence-followups
Nov 11, 2026
Merged

moq-bot[bot] merged 3 commits into
mainfrom
quest-plan/net-confidence-followups

Conversation

@kixelated

@kixelated kixelated commented Nov 11, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

moq-dev/moq#8472 suggested two follow-ups worth a quest: an exhaustive, shim-free replacement for loom once Miri supports it, and continuous fuzzing beyond Nightly's five minutes per target.

Approach

Stacked on #8472, which is queued: this branch starts from its head, so the diff shows only these two quests once it lands.

Decisions

  • GenMC: ✅ plan it in m5, waiting on upstream (rejected: dropping it).
  • OSS-Fuzz: ✅ plan it in m4 behind the session fuzz (rejected: longer runs on our own runners; dropping it).

Impact

Public API: none. Wire: none. Quest files only.

Alternatives

One PR per follow-up: both are small quest files from the same plan, so they share this one.

Follow-ups

None.

Models

Size: XS
Implementer: Claude Code, claude-fable-5-2, high effort

🤖 Generated with Claude Code

Review

mechanical fix by codex, gpt-6.1-sol, medium effort: Merged base and re·solved the add/add quest conflict preserving both versions' intent; passed git diff --cached --check and nix develop --command just ci base. (head 388f850)

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, low effort
  • Session: 01a1c7ec-0589-7692-bd20-4c7ed2a6d58a, round 1
  • Head: 4fa6aaf
  • Base: origin/main at d7699f8
  • Score: 9/10, The quest plans are coherent and their dependencies are explicit, with no actionable defects identified; builds and tests were not run as instructed.
  • Findings: none

(Written by Claude Fable 5 with high effort)

kixelated and others added 2 commits November 10, 2026 15:55
Adds ten quests from a /quest-plan on what could be proved about moq-net: an inductive routing invariant, a Tamarin model of the route key proof, whole-session fuzzing, Kani codec proofs, a JS replay of the fuzz corpus, mutation testing, Miri seeds with ThreadSanitizer, and trace validation for the resume, reconnect, and subscribe models. Moves route trace validation to m1 and adds a Coverage-table symbol check to the nightly models quest.

Co-Authored-By: Claude <noreply@anthropic.com>
Follow-ups from the moq-net confidence plan: an m5 quest waiting on Miri's GenMC mode, and an m4 quest for continuous fuzzing on OSS-Fuzz behind the whole-session targets.

Co-Authored-By: Claude <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 11, 2026 00:05
@coderabbitai

coderabbitai Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

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

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews 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: ed8e344c-3e4b-4b4c-b972-39009e74a124
Commits

Reviewing files that changed from the base of the PR and between 73b81ab and 388f850.

Files selected for processing: 5

  • quest/m4/README.md
  • quest/m4/miri-seeds-tsan.md
  • quest/m4/oss-fuzz.md
  • quest/m5/README.md
  • quest/m5/miri-genmc.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 added this pull request to the merge queue Nov 11, 2026

@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)

Reviewed commit 4fa6aaf, separating the five-file follow-up delta from its #8472 parent. No new actionable findings in that delta.

Overall direction: the GenMC work explicitly waits on upstream support, bounds its test workloads, and records limitations; OSS-Fuzz waits on both whole-session targets and maintainer approval/contact selection. The build-profile and regression-replay requirements match the existing fuzz workflow. The inherited Kani proof-contract finding remains tracked in #8472: #8472 (review).

Verification limits: GitHub-only static review of the plans, stack comparison, current upstream Miri GenMC documentation, and existing fuzz documentation. No builds, tests, GenMC runs, OSS-Fuzz integration, or external application performed.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Minor suggestions only — one caveat on the TSan plan; the three findings filed against the stacked #8472 still stand.

Reviewed changes

Reviewed the complete 18-file diff at 4fa6aaf end to end, including the 15 quest files inherited from the stacked #8472, and checked each plan's load-bearing claims against the tree (Nightly's fuzz matrix, sh/rs/miri.sh, .cargo/mutants.toml and mutants.yml, the verify-* Coverage tables, route/proof.rs plus js/net/src/lite/route_key.ts and the draft's Route Key Parameter, and every /quest/ link).

  • m1 proofs and checks — route-inductive (Apalache inductive invariant over the route rules), route-key-model (Tamarin proof of the Route Key Parameter), session-fuzz (whole-session fuzz on both protocols with a bystander oracle), plus the route trace validation promoted from m4.
  • m4 real-code checks — codec-kani, fuzz-corpus-js, mutants, miri-seeds-tsan, and the resume/reconnect/subscribe trace validations reusing route's recorder.
  • Follow-ups — oss-fuzz (waits on the maintainer's application and contact address, required behind session-fuzz) and miri-genmc (waits on upstream cargo miri test support); the m1/m4/m5 indexes are updated.
  • Not repeated here — the three findings open on #8472 (per-form varint ranges, the mutation quest against quest/m0/ci/trim.md, and the m1 cut gate) still apply to this branch; they are tracked with the parent PR that owns those files.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Comment on lines +25 to +28
- ThreadSanitizer: a `just rs tsan` recipe builds std with the sanitizer
(`-Zsanitizer=thread -Zbuild-std`) and runs the kio and moq-net library
tests at near-native speed, reaching the tests Miri ignores for foreign
calls or cost. A suppression needs a comment naming the false positive.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rust's sanitizer docs state ThreadSanitizer does not support std::sync::atomic::fence, yet the goal and this bullet credit the TSan run with catching ordering bugs in kio's log, whose cross-thread ordering is exactly the fence(Acquire)/fence(Release) pair in log.rs. Scope TSan to the races it can model and leave fence ordering to the Miri passes (and m5's GenMC), otherwise this lane either suppresses the fence sites or claims coverage it cannot have.

Technical details
# TSan cannot model the fence ordering kio's log relies on

## Affected sites
- `quest/m4/miri-seeds-tsan.md:5-8` — goal: "an ordering bug in the locks, atomics, wakers, and kio's lock-free log fails Nightly"
- `quest/m4/miri-seeds-tsan.md:25-28` — the TSan bullet
- `quest/m4/miri-seeds-tsan.md:39` — Related row: "the ordering in kio's log these runs watch", which is the fence-ordered part
- `rs/kio/src/log.rs:199` — `fence(Ordering::Acquire)`
- `rs/kio/src/log.rs:582` — `fence(Ordering::Release)`
- `quest/m4/crossbeam-pin-fence.md` — calls that ordering "what only a weak-memory check can confirm"

## Required outcome
- The plan names which tool owns fence-ordered accesses, e.g. TSan for the atomics/locks/wakers and the Miri many-seeds or GenMC passes for the epoch fence, and the Related row stops implying TSan covers it.

## Suggested approach (optional)
- One sentence in the TSan bullet, e.g. "TSan does not model `atomic::fence`, so kio's epoch fence ordering stays with the Miri passes."
- Source: the Rust unstable book's `sanitizer` page, "ThreadSanitizer does not support atomic fences `std::sync::atomic::fence`, nor synchronization performed using inline assembly code."

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Nov 11, 2026
@moq-bot

moq-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

quest land watch: the merge queue removed this pull request at 4fa6aaf because it conflicts with main (merge_conflict).

The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs.

(written by quest land watch)

@moq-bot
moq-bot Bot enabled auto-merge November 11, 2026 02:52
@moq-bot

moq-bot Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

quest land watch: armed auto-merge on this pull request at 388f850, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix (codex, gpt-6.1-sol, medium effort): Merged base and re·solved the add/add quest conflict preserving both versions' intent; passed git diff --cached --check and nix develop --command just ci base..

(written by quest land watch)

@moq-bot
moq-bot Bot added this pull request to the merge queue Nov 11, 2026
Merged via the queue into main with commit 3866b8b Nov 11, 2026
8 of 9 checks passed
@moq-bot
moq-bot Bot deleted the quest-plan/net-confidence-followups branch November 11, 2026 04:18
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