Repository navigation
chore(quest): plan MoQ's move to rind 0.4 and its corrected adapters - #8400
Conversation
rind's m0 adapter fixes change calls MoQ's main makes and ship as patch releases inside MoQ's caret requirements, so the first lockfile update after them stops building. Planned from rind's quest audit of 2026-11-09. Co-Authored-By: Claude <noreply@anthropic.com>
|
Warning Review limit reachedYou'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 5 minutes. View limit details
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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 663905efd809976fc7886347f7c3c84b031d11e5.
No actionable defects found in the two changed quest documents. The proposed provider and key-generation/serialization replacements match the inspected source in rind #521, #519, and #515 and the listed MoQ production call sites. Raising the minimum adapter versions together with the call-site changes is the right direction; keeping rind 0.4 separate avoids expanding this migration.
Limits: GitHub-only static review. No builds, tests, or quest checks were run, and the repository-wide call-count claims were not independently reproduced. The upstream PRs remain unmerged, so this reviews the coordination plan, not the eventual integration or release readiness.
There was a problem hiding this comment.
ℹ️ Minor suggestions only — the plan's call-site inventory checks out; three small corrections inline.
Reviewed changes
quest/m0/rind-adapters.md— new quest planning MoQ's adaptation to three rind adapter PRs (rind#521, #519, #515) that make each adapter's API its upstream's, published as hand-set patch releases inside MoQ's caret requirements.quest/m0/README.md— one## Requiredbullet linking the new quest.
Verified
- Every shipped call site and grep count in the plan is exact at this head:
rind_rustls::default_provider()105 lines/40 files,KeyPair::generate(&78/38,to_pkcs8().secret_pkcs8_der()60/33, plus exactly 5 baredefault_provider()calls in the twouse-importing test files. The remaining hits are tests/benches (moq-rtmp/src/server.rs:3030is inside#[cfg(test)]). - No MoQ call to anything else the three PRs remove; the 3 non-rcgen
to_pkcs8()calls are rind core key types, as claimed. - The migration shapes match the open PRs (
DEFAULT_PROVIDERas astatic CryptoProvider,generate_for,serialize_der/serialized_der), andcrate::cpu::check()staying inmoq-crypto/src/provider.rspreserves the refusal that rind-rustls drops. - "Not a shipped release" holds: crates.io
moq-auth 0.2.4/moq-token 0.7.4requireaws-lc-rs, andorigin/release:Cargo.tomlnames no rind crate. - The body's "Noticed, not changed" is accurate: rind#510 merged and deleted
rind-instant-acme, whilequest/m5/rind-instant-acme.mdand its consumerquest/m5/relay-acme.mdstill wait on it.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
rind deleted rind-instant-acme as having no consumer yet, so the wait-only quest pointed at a quest that no longer exists. Co-Authored-By: Claude <noreply@anthropic.com>
rind set 0.4.0 by hand and holds its release for the CPU-check removal, so the adapter fixes publish with it and each requires rind 0.4. Co-Authored-By: Claude <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 56cebc5
Incremental review since: 663905e
Base unchanged: d9800c1
[P3] Reconcile the provider API promise with deleting its error type — quest/m0/rind-adapters.md:135
The new plan recommends deleting UnsupportedCpu but still promises unchanged moq_crypto::provider signatures. At this head, provider() returns Result<Provider, UnsupportedCpu> and install_default() returns Result<(), UnsupportedCpu> (rs/moq-crypto/src/provider.rs:17,34). Both promises cannot hold together. Update the public-API scope to include these return-type changes; making the functions infallible matches the proposed removal of the only failure source and avoids preserving a meaningless error.
The combined rind 0.4/adapter migration now matches the release decision in rind #548, superseding my earlier comment about keeping 0.4 separate. Moving ACME adapter planning to its future consumer is also consistent with rind #510.
Limits: GitHub-only static review of this planning delta and relevant source/upstream decisions. No builds, tests, quest checks, or release integration were run. COMMENT only, not approval.
There was a problem hiding this comment.
Important
The new rind 0.4 section's CPU-check inventory is incomplete: it names 7 of the 14 moq_crypto::cpu::check() callers and none of the vendored providers' five direct rind::cpu uses, so an implementer following it would miss a dozen compile errors.
Reviewed changes
quest/m0/rind-adapters.md— folds rind 0.4 into the quest: the goal, plan, non-goals, the CPU-check/agreement/CBC changes, and the## Waitingrelease condition now cover 0.4 alongside the four adapter fixes.quest/m0/README.md— the required bullet now names rind 0.4 as well.quest/m5/relay-acme.md— records that relay ACME plans its rind adapter when it starts, and waits on instant-acme 0.9 instead of the deleted adapter quest.quest/m5/rind-instant-acme.md— deleted, with itsquest/m5/README.mdbullet.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: c5fdffb
Incremental review since: 56cebc5
Accounted for the main merge to ac3cb8c; the ACME changes are now in the base.
[P3, still open] The provider API promise still conflicts with deleting UnsupportedCpu — quest/m0/rind-adapters.md:152.
The expanded inventory fixes the missing CPU-check sites, but this line still promises unchanged moq_crypto::provider signatures. At this head, provider() and install_default() return Result<Provider, UnsupportedCpu> and Result<(), UnsupportedCpu> (rs/moq-crypto/src/provider.rs:17,34). Deleting that type requires changing those signatures. Include their infallible return types in the planned API impact, as noted in the previous review.
No new actionable findings in this update. The broader inventory and dependency-endpoint release check improve the combined rind 0.4/adapter migration plan. The updated upstream PR statuses also match GitHub.
Limits: GitHub-only static review of the planning delta and relevant source. No builds, tests, quest checks, release integration, or exhaustive repository-wide call-count reproduction. COMMENT only, not approval.
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Completed the rind 0.4 CPU-check inventory: all 14
moq_crypto::cpu::check()callers, theUnsupportedCpuvariants and re-export across nine crates, both vendored providers, anddimpl/error.rs:363, withcpu.rs:17corrected. - Aligned
provider.rs:22with the same PR removing the CPU check, instead of saying it stays until 0.4. - Updated the upstream status: rind#521 and #515 merged, rind#519 open and ready for review.
- Made the adapter release wait checkable by reading each adapter's
rindrequirement from crates.io's dependencies endpoint rather thancargo search. - Merged
main, which drops the PR's m5 edits (main already carried #8399), leaving two m0 files.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Plans one quest and settles a stale one.
New: MoQ builds against rind 0.4 and its corrected adapters. rind's m0 epic makes each adapter's API exactly its upstream's, and those fixes now publish in the same release as rind 0.4, each adapter requiring it. So one MoQ PR moves to both, ready before they publish:
default_provider()in three adapters and rind-rcgen'sKeyPair.rind::cpu::checkandMissingFeature, whichmoq_crypto::cpuwraps and seven call sites use, and changesagreement::PrivateKey::public_key(), which the vendored dimpl provider calls.The quest lists every shipped call site and what it becomes. No crate MoQ has published names a rind adapter yet, so
mainand the next cut are exposed, not a shipped release.Settled: relay ACME plans its rind adapter when it starts.
quest/m5/rind-instant-acme.mdwaited on a rind quest that no longer exists, since rind deleted the adapter in moq-dev/rind#510 as having no consumer. The wait-only quest is deleted, andquest/m5/relay-acme.mdsays it begins by planning the adapter in rind, and waits on instant-acme 0.9 (0.8.5 is the latest today).Decisions
Decided with the maintainer on 2026-11-09, in rind's quest audit (moq-dev/rind#546):
rind-instant-acmewhen it starts (rejected: re-plan the adapter in rind now, ahead of its consumer; leave the stale wait).mainon 2026-11-10: moq-dev/moq#8399 (/quest-unblock, same day) had already deletedquest/m5/rind-instant-acme.mdand rewrittenquest/m5/relay-acme.md(restore the adapter from Fix subscription termination bug #510's parent, wait on instant-acme 0.9). The conflict took main's text, so this PR no longer touches m5.provider.rs:22goes with the CPU check; Less verbose errors, using % instead of ? #521 and Add speaking field to preview #515 have merged; the adapter wait readsrindrequirements from crates.io's dependencies endpoint instead ofcargo search.Public API and wire
None. Quests only. The planned PR may remove
moq_crypto::cpu::checkandUnsupportedCpu, which the quest flags.Models
Size: S
Implementer: Claude Code, claude-fable-5-2, high effort
Implementer: Claude Code, claude-opus-5-5, unknown effort (iterate, S)
Review
Rewritten by
quest reviewafter each round.01a1c387-67ba-71f1-b86c-c34c75a54aed, round 1The scoped diff only adds a migration quest and its index entry, changes no executable code or dependencies, and has no actionable defects.