Review finding 9/19 · conventional-comment issue · area binder · gate: decide before the v1 API freeze
To add once they exist: label binder; milestone v1. (Already applied: bug.)
Problem
RequestBinder.WithOptions(...) can be called at any point, including after properties have already been bound. Options carry the IArgumentNameProvider, so a binder that binds some properties, swaps the name provider, then binds more, produces argument paths under two different naming policies within the same envelope.
Impact
A single failure envelope can mix, for example, GuestEmail and guest_email paths, so the collect-all output is internally inconsistent and a client cannot rely on one naming policy.
Direction
Either lock the options once the first property is bound and throw on a late WithOptions (a programming error, consistent with the binder's bug channel), or move options to an upstream stage so they can only be set before binding begins.
Context
Surfaced by the RequestBinder review (design spec #126, shipped in #141). Finding 9 of 19.
Problem
RequestBinder.WithOptions(...)can be called at any point, including after properties have already been bound. Options carry theIArgumentNameProvider, so a binder that binds some properties, swaps the name provider, then binds more, produces argument paths under two different naming policies within the same envelope.Impact
A single failure envelope can mix, for example,
GuestEmailandguest_emailpaths, so the collect-all output is internally inconsistent and a client cannot rely on one naming policy.Direction
Either lock the options once the first property is bound and throw on a late
WithOptions(a programming error, consistent with the binder's bug channel), or move options to an upstream stage so they can only be set before binding begins.Context
Surfaced by the RequestBinder review (design spec #126, shipped in #141). Finding 9 of 19.