Problem
ShieldDefinition (src/Kevlar.Extensions.DependencyInjection/ShieldDefinition.cs:25-40) binds Timeout, Retry, CircuitBreaker, RateLimit, ConcurrencyLimit, and AttemptTimeout. Hedging cannot be expressed from configuration even though HedgeOptions has only scalar settings (MaxHedgedAttempts, Delay). Applications using AddShield(name, IConfiguration) therefore cannot hedge without dropping to code.
Proposed fix
HedgeDefinition { MaxHedgedAttempts, Delay } bound at ShieldDefinition.Hedge.
- Fixed pipeline position documented;
Retry and Hedge both set is a KevlarConfigurationException at build time.
- Fallback stays out of configuration because it needs a delegate; document that.
ReloadingShieldOptions covers the new field automatically.
Tests
- Binding from JSON produces the expected
Describe() string.
- Validation error when both
Retry and Hedge are set.
- Reload picks up a changed hedge delay.
Problem
ShieldDefinition(src/Kevlar.Extensions.DependencyInjection/ShieldDefinition.cs:25-40) bindsTimeout,Retry,CircuitBreaker,RateLimit,ConcurrencyLimit, andAttemptTimeout. Hedging cannot be expressed from configuration even thoughHedgeOptionshas only scalar settings (MaxHedgedAttempts,Delay). Applications usingAddShield(name, IConfiguration)therefore cannot hedge without dropping to code.Proposed fix
HedgeDefinition { MaxHedgedAttempts, Delay }bound atShieldDefinition.Hedge.RetryandHedgeboth set is aKevlarConfigurationExceptionat build time.ReloadingShieldOptionscovers the new field automatically.Tests
Describe()string.RetryandHedgeare set.