Skip to content

chore(quest): plan MoQ's move to rind 0.4 and its corrected adapters - #8400

Merged
kixelated merged 5 commits into
mainfrom
quest-plan/rind-adapters
Nov 10, 2026
Merged

kixelated merged 5 commits into
mainfrom
quest-plan/rind-adapters

Conversation

@kixelated

@kixelated kixelated commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

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:

  • moq-dev/rind#521, moq-dev/rind#519, and moq-dev/rind#515 change default_provider() in three adapters and rind-rcgen's KeyPair.
  • rind 0.4 removes rind::cpu::check and MissingFeature, which moq_crypto::cpu wraps and seven call sites use, and changes agreement::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 main and the next cut are exposed, not a shipped release.

Settled: relay ACME plans its rind adapter when it starts. quest/m5/rind-instant-acme.md waited 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, and quest/m5/relay-acme.md says 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):

  • ✅ A MoQ-side PR is ready before rind's adapter fixes publish (rejected: let MoQ's build break and fix it after; leave it to release-plz).
  • ✅ rind sets 0.4.0 by hand and holds its release for the CPU-check removal, so the adapter fixes publish with rind 0.4 (rejected: ship 0.4.0 now; revert the merged breaking changes and release 0.3.3). See moq-dev/rind#548.
  • ✅ Relay ACME re-plans rind-instant-acme when it starts (rejected: re-plan the adapter in rind now, ahead of its consumer; leave the stale wait).
  • Merged main on 2026-11-10: moq-dev/moq#8399 (/quest-unblock, same day) had already deleted quest/m5/rind-instant-acme.md and rewritten quest/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.
  • Pullfrog's review (2026-11-10), all taken: the size is S to match the title; the CPU-check list now names every site, including the vendored providers and error variants; provider.rs:22 goes with the CPU check; Less verbose errors, using % instead of ? #521 and Add speaking field to preview #515 have merged; the adapter wait reads rind requirements from crates.io's dependencies endpoint instead of cargo search.
  • Milestone: m0, which its README defines as any fix that cannot wait for its milestone. rind holds its release on this.

Public API and wire

None. Quests only. The planned PR may remove moq_crypto::cpu::check and UnsupportedCpu, 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 review after each round.

  • Reviewer: Codex, gpt-6.1-sol, medium effort
  • Session: 01a1c387-67ba-71f1-b86c-c34c75a54aed, round 1
  • Head: c5fdffb
  • Base: origin/main at ac3cb8c
  • Score: 10/10, The scoped diff only adds a migration quest and its index entry, changes no executable code or dependencies, and has no actionable defects.
  • Findings: none

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>
@kixelated
kixelated marked this pull request as ready for review November 10, 2026 00:42
@coderabbitai

coderabbitai Bot commented Nov 10, 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 5 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: 263d650a-28db-41d7-a8c8-0660867cc2ea
Commits

Reviewing files that changed from the base of the PR and between d9800c1 and 56cebc5.

Files selected for processing: 5

  • quest/m0/README.md
  • quest/m0/rind-adapters.md
  • quest/m5/README.md
  • quest/m5/relay-acme.md
  • quest/m5/rind-instant-acme.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)

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.

@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 — 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 ## Required bullet 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 bare default_provider() calls in the two use-importing test files. The remaining hits are tests/benches (moq-rtmp/src/server.rs:3030 is 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_PROVIDER as a static CryptoProvider, generate_for, serialize_der/serialized_der), and crate::cpu::check() staying in moq-crypto/src/provider.rs preserves the refusal that rind-rustls drops.
  • "Not a shipped release" holds: crates.io moq-auth 0.2.4 / moq-token 0.7.4 require aws-lc-rs, and origin/release:Cargo.toml names no rind crate.
  • The body's "Noticed, not changed" is accurate: rind#510 merged and deleted rind-instant-acme, while quest/m5/rind-instant-acme.md and its consumer quest/m5/relay-acme.md still wait on it.

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

Comment thread quest/m0/rind-adapters.md Resolved
Comment thread quest/m0/rind-adapters.md Resolved
Comment thread quest/m0/rind-adapters.md Resolved
kixelated and others added 2 commits November 9, 2026 16:55
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 kixelated changed the title chore(quest): plan MoQ's move to rind's corrected adapters chore(quest): plan MoQ's move to rind 0.4 and its corrected adapters Nov 10, 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 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.

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

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 ## Waiting release 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 its quest/m5/README.md bullet.

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

Comment thread quest/m0/rind-adapters.md Resolved
Comment thread quest/m0/rind-adapters.md Resolved
Comment thread quest/m0/rind-adapters.md Resolved
@kixelated
kixelated added this pull request to the merge queue Nov 10, 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 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.

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

✅ No new issues found.

Reviewed changes

  • Completed the rind 0.4 CPU-check inventory: all 14 moq_crypto::cpu::check() callers, the UnsupportedCpu variants and re-export across nine crates, both vendored providers, and dimpl/error.rs:363, with cpu.rs:17 corrected.
  • Aligned provider.rs:22 with 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 rind requirement from crates.io's dependencies endpoint rather than cargo search.
  • Merged main, which drops the PR's m5 edits (main already carried #8399), leaving two m0 files.

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

Merged via the queue into main with commit 2b388b3 Nov 10, 2026
5 of 6 checks passed
@kixelated
kixelated deleted the quest-plan/rind-adapters branch November 10, 2026 03:43
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