Repository navigation
Conversation
Quest-Claim: b925eb2e4a236018
Challenge, Proof, EnrollRequest, Enrollment, and Member are #[non_exhaustive] with constructors, so a later field is additive. Co-Authored-By: Claude Sonnet 5.5 <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 28 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. |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
Reviewed the full diff: it fences the remaining moq_auth::mesh contract structs and moves the in-crate builders onto constructors.
#[non_exhaustive]on five structs:Challenge,Proof,EnrollRequest,Enrollment, andMemberare now fenced, so every public struct and enum inrs/moq-auth/src/mesh/is now covered.- Constructors:
Challenge::new,EnrollRequest::new,Enrollment::new, andMember::newtake the required fields. Optional fields (name,relays,members,tags) stay public and mutable, the same pattern asConfig::new. - Call sites:
Coordinator::challenge, the enrollment build incoordinator.rs, andClient::enrollproduce the same field values as before. Serde attributes are unchanged, so the wire format is the same. - Quest bookkeeping: deletes
quest/m2/api-mesh-enrollment.mdand updates the links that pointed to it.
No crate outside moq-auth builds or destructures these types. The struct literals left in contract_tests.rs and the coordinator tests are allowed because they are inside the crate.
claude-opus-5-5 | 𝕏
|
Closing unmerged: the maintainer moved mesh enrollment to Kixel on 2026-11-14, and moq-dev/moq#8756 removes (Written by Opus 5.5) |

Finishes
quest/m2/api-mesh-enrollment.md, which this PR deletes.Summary
Challenge,Proof,EnrollRequest,Enrollment, andMemberinmoq_auth::meshare#[non_exhaustive], so a later field (a certificate, a revocation hint) is additive. The other public mesh types were already fenced (Config,Device,KeyInfo,NewKey,ErrorReply,ErrorCode);Client,Coordinator, andSignerhave no public fields or are traits.A caller builds one with a constructor and sets the optional fields:
Challenge::new(challenge, expires)EnrollRequest::new(proof, key), then.nameEnrollment::new(token, expires, name), then.relaysand.membersMember::new(endpoint, name), then.tagsProof::signalready was the constructor.The coordinator and client use them. The module docs say how to build and match. The quest's links in the m2 and m3 mesh quests are updated, and the mesh grant quest's related link is dropped. No certificate field is added, as the quest decided.
Impact
Public API: breaking for a caller that builds one of the five with a struct literal or destructures it without
...moq_auth::meshexists onmainand not onrelease, so no published release carries the old shape and nothing needs aMIGRATE.mdentry. Migration: use the constructor above, and write..in a pattern. Wire: none. There is no JS counterpart yet (mesh-js-enroll will mirror these names).The
!in the title follows the rule for a breaking change tomain; it is harmless to release tooling only while the module is unpublished, so drop it if the cut would read it as a major bump. Overlap: the sibling mesh quests (bounds, grant shape) touch the coordinator and its docs, not these structs' shape; whichever lands second adapts. AKeyInfoorNewKeyfield the bounds quest adds needs no change here, they were already fenced.Decisions
Taken by the agent under /quest-afk, for the maintainer's review:
Config::new(rejected: onenewtaking every field, which breaks the 4+ arguments rule forEnrollmentandEnrollRequestand breaks again when a field is added; builders, which add a type per struct for no gain).Enrollment::newrequiresname(the coordinator always assigns one) whilerelaysandmembersstart empty (rejected: an empty name default, which hides a missing one).!per the Public API rule (rejected: no!because the module is unpublished; see Impact).Validation
quest gate just check origin/mainpasses, including the moq-auth mesh contract tests (18 pass).Enrollmentis refused withE0639, whileEnrollment::new, field mutation,Challenge::new, andEnrollment { token, .. }compile.Follow-ups
None.
Models
Size: XS
Implementer: Claude Code, claude-sonnet-5-5, unknown effort
(Written by Claude Sonnet 5.5)
Review
Rewritten by
quest reviewafter each round.Head: 1e7c53d
Base: origin/main at 4fec611
Reviewer: Codex, gpt-6.1-sol, medium effort
Session:
01a1da4a-1008-7161-99f7-5851cd6cbccc, round 1Score: 9/10,
The constructors preserve existing field values and serialization, and the non-exhaustive annotations provide the intended API extensibility; no actionable defects were found by source review, though builds and tests were not run as instructed.Rounds: 1; findings 0: fixed 0, refuted 0, open 0
Findings: none