({
summary,
protocol,
comparatorEvidence,
suiteComplete
}: {
summary: DiscoverySummaryType;
protocol: DiscoveryBenchmarkProtocol;
comparatorEvidence?: DiscoveryComparatorEvidence;
suiteComplete: boolean;
})
| 405 | } |
| 406 | |
| 407 | export function evaluateDiscoveryGate({ |
| 408 | summary, |
| 409 | protocol, |
| 410 | comparatorEvidence, |
| 411 | suiteComplete |
| 412 | }: { |
| 413 | summary: DiscoverySummaryType; |
| 414 | protocol: DiscoveryBenchmarkProtocol; |
| 415 | comparatorEvidence?: DiscoveryComparatorEvidence; |
| 416 | suiteComplete: boolean; |
| 417 | }): DiscoveryGateEvaluation { |
| 418 | const baseline = evaluateBaselineGate(summary, protocol, comparatorEvidence); |
| 419 | const comparators = protocol.shipGate.comparators.requiredNames.map((name) => |
| 420 | evaluateComparatorGate(summary, name, protocol, comparatorEvidence) |
| 421 | ); |
| 422 | const missingEvidence: string[] = []; |
| 423 | |
| 424 | if (!suiteComplete) { |
| 425 | missingEvidence.push('fixed public discovery suite is incomplete'); |
| 426 | } |
| 427 | |
| 428 | if (baseline.status === 'pending_evidence') { |
| 429 | missingEvidence.push(`${baseline.comparatorName} baseline metrics missing`); |
| 430 | } |
| 431 | |
| 432 | for (const comparator of comparators) { |
| 433 | if (comparator.status === 'pending_evidence') { |
| 434 | missingEvidence.push(`${comparator.comparatorName} comparator metrics missing`); |
| 435 | } |
| 436 | } |
| 437 | |
| 438 | const status = |
| 439 | missingEvidence.length > 0 |
| 440 | ? 'pending_evidence' |
| 441 | : baseline.status === 'passed' && |
| 442 | comparators.every((comparator) => comparator.status === 'passed') |
| 443 | ? 'passed' |
| 444 | : 'failed'; |
| 445 | |
| 446 | return { |
| 447 | status, |
| 448 | suiteStatus: suiteComplete ? 'complete' : 'incomplete', |
| 449 | baseline, |
| 450 | comparators, |
| 451 | missingEvidence, |
| 452 | claimAllowed: status === 'passed' |
| 453 | }; |
| 454 | } |
| 455 | |
| 456 | export async function evaluateDiscoveryFixture({ |
| 457 | fixture, |
no test coverage detected