fix(release): accept legacy zero skipped runtime summaries (#116429)

This commit is contained in:
Dallin Romney
2026-07-31 14:13:53 +08:00
committed by GitHub
parent fa4cc51a87
commit bd5daad79a
2 changed files with 33 additions and 1 deletions

View File

@@ -207,9 +207,13 @@ export function validateQaRuntimePairSummary(summary, options = {}) {
failed: 0,
skipped,
};
const requiredCountKeys = ["total", "passed", "failed"];
const skippedCountMatches =
summary.counts?.skipped === skipped || (skipped === 0 && summary.counts?.skipped === undefined);
if (
!isRecord(summary.counts) ||
Object.entries(expectedCounts).some(([key, value]) => summary.counts[key] !== value)
requiredCountKeys.some((key) => summary.counts[key] !== expectedCounts[key]) ||
!skippedCountMatches
) {
throw new Error("runtime-pair summary counts do not match validated scenario evidence");
}

View File

@@ -162,6 +162,34 @@ describe("frozen QA runtime-pair summary validation", () => {
});
});
it("accepts an older all-passing summary that omitted zero skipped count", () => {
const fixture = summary([scenario({ name: "legacy passing", status: "pass" })]);
delete (fixture.counts as { skipped?: number }).skipped;
expect(validateQaRuntimePairSummary(fixture)).toEqual({
total: 1,
passed: 1,
failed: 0,
skipped: 0,
});
});
it("requires skipped count when validated evidence contains skips", () => {
const fixture = summary([
scenario({
name: "tracked gap",
status: "skip",
codexStatus: "skip",
codexDetails: "known-harness-gap exec: tracked",
}),
]);
delete (fixture.counts as { skipped?: number }).skipped;
expect(() => validateQaRuntimePairSummary(fixture)).toThrow(
"counts do not match validated scenario evidence",
);
});
it("accepts a tracked Codex harness gap kept advisory by the current classifier", () => {
const advisoryGap = scenario({
name: "tracked advisory gap",