Problem
The composite evaluator supports weighted_average aggregation. There is no way to express "at least N% must pass" — a common quality gate pattern.
Proposal
Add threshold aggregation mode to the existing composite evaluator:
evaluators:
- name: flexible_gate
type: composite
aggregator:
type: threshold
threshold: 0.5 # at least 50% of child evaluators must pass
evaluators:
- name: latency_check
type: latency
max_ms: 5000
- name: cost_check
type: cost
max_usd: 0.01
Score = proportion of child evaluators that pass. Pass = score >= threshold.
Design Principles Alignment
- ✅ Lightweight Core — one new aggregation mode on existing type, not a new evaluator
- ✅ Non-Breaking Extension — existing
weighted_average mode unchanged
- ✅ Built-ins for Primitives Only — threshold aggregation cannot be composed from existing primitives
Acceptance Criteria
Problem
The composite evaluator supports
weighted_averageaggregation. There is no way to express "at least N% must pass" — a common quality gate pattern.Proposal
Add
thresholdaggregation mode to the existing composite evaluator:Score = proportion of child evaluators that pass. Pass = score >= threshold.
Design Principles Alignment
weighted_averagemode unchangedAcceptance Criteria
thresholdaggregation mode on composite evaluator