Expose invitation email binding through the Aspire API - #102
Conversation
Invite.EmailClaim is the opt-in recipient binding, but no Aspire builder emitted it, so it could only be set with a hand-spelled environment variable. That also left a shipped feature unreachable: signed invitation attestations require EmailClaim unconditionally, so an AppHost using WithInvite(...).WithSignedInvitationAttestations(...) failed startup options validation with no typed way to satisfy it. A separate fluent extension rather than a parameter on the existing WithInvite overloads: a trailing optional parameter is binary breaking because C# bakes defaults into the call site, and a same-name overload differing only by it would make existing calls ambiguous. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Reviewer context (kept out of the body so it stays release-note clean). Why a separate extension and not a parameter. Adding a trailing optional The unreachable-feature finding. Gate. Debug and Release, Mutation evidence, run independently of the implementer, with an assertion that the mutation actually applied before testing:
Worth recording: the implementer's first attempt at the second mutation reported a survivor that was a false negative — its Not verified: no AppHost was actually booted, so the startup-validation failure is established from the four code paths above rather than observed. Nothing asserts it end to end; a spec composing both builders and running the real validator over the bound configuration would close that, but it spans the Aspire and AuthProxy projects and was outside this change. |
Added
WithInviteEmailBindingon the Aspire builder, binding an invitation to the address it was issued to so only the invited recipient can redeem it (Expose invitation email binding through the Aspire API #85)