( summary: DiscoverySummaryType, protocol: DiscoveryBenchmarkProtocol, comparatorEvidence: DiscoveryComparatorEvidence | undefined )
| 321 | } |
| 322 | |
| 323 | function evaluateBaselineGate( |
| 324 | summary: DiscoverySummaryType, |
| 325 | protocol: DiscoveryBenchmarkProtocol, |
| 326 | comparatorEvidence: DiscoveryComparatorEvidence | undefined |
| 327 | ) { |
| 328 | const baselineConfig = protocol.shipGate.baseline; |
| 329 | const baselineMetrics = comparatorEvidence?.[baselineConfig.comparatorName]; |
| 330 | const comparisons = [ |
| 331 | compareMetric( |
| 332 | getDiscoveryMetricValue(summary, baselineConfig.payloadMetric), |
| 333 | getDiscoveryMetricValue(baselineMetrics, baselineConfig.payloadMetric), |
| 334 | baselineConfig.payloadMetric |
| 335 | ), |
| 336 | ...baselineConfig.usefulnessMetrics.map((metric) => |
| 337 | compareMetric( |
| 338 | getDiscoveryMetricValue(summary, metric), |
| 339 | getDiscoveryMetricValue(baselineMetrics, metric), |
| 340 | metric |
| 341 | ) |
| 342 | ) |
| 343 | ]; |
| 344 | const missingMetrics = comparisons |
| 345 | .filter((comparison) => comparison.comparatorValue === null) |
| 346 | .map((comparison) => comparison.metric); |
| 347 | const payloadMetricPassed = comparisons[0]?.passes ?? false; |
| 348 | const beatenUsefulnessMetrics = comparisons |
| 349 | .slice(1) |
| 350 | .filter((comparison) => comparison.passes) |
| 351 | .map((comparison) => comparison.metric); |
| 352 | |
| 353 | return { |
| 354 | comparatorName: baselineConfig.comparatorName, |
| 355 | status: |
| 356 | missingMetrics.length > 0 |
| 357 | ? 'pending_evidence' |
| 358 | : payloadMetricPassed && beatenUsefulnessMetrics.length > 0 |
| 359 | ? 'passed' |
| 360 | : 'failed', |
| 361 | payloadMetric: baselineConfig.payloadMetric, |
| 362 | payloadMetricPassed, |
| 363 | beatenUsefulnessMetrics, |
| 364 | missingMetrics, |
| 365 | comparisons |
| 366 | } as const; |
| 367 | } |
| 368 | |
| 369 | function evaluateComparatorGate( |
| 370 | summary: DiscoverySummaryType, |
no test coverage detected