Skip to content

Commit e22c7c7

Browse files
fix: prefer trusted execution receipts
1 parent 33e9538 commit e22c7c7

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/adapter.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2728,7 +2728,7 @@ export function trustedValidationFindings(task: JsonObject, receipts: JsonObject
27282728
return findings;
27292729
}
27302730

2731-
function finalizeReviewResult(resultPath: string, attemptDir: string, receipts: JsonObject[], task: JsonObject): string {
2731+
export function finalizeReviewResult(resultPath: string, attemptDir: string, receipts: JsonObject[], task: JsonObject): string {
27322732
const result = readBoundedRuntimeResult(resultPath);
27332733
const review = {...((result.review as JsonObject | undefined) || {})};
27342734
let findings = Array.isArray(review.findings) ? review.findings : [];
@@ -2742,8 +2742,8 @@ function finalizeReviewResult(resultPath: string, attemptDir: string, receipts:
27422742
workspace_revision: receipt.workspace_revision,
27432743
}));
27442744
const limitations = Array.isArray(review.limitations) ? review.limitations : [];
2745-
const trustedExecutionPassed = receipts.length > 0 && receipts.every((receipt) => receipt.status === "passed");
2746-
review.limitations = trustedExecutionPassed
2745+
const trustedExecutionAvailable = receipts.length > 0;
2746+
review.limitations = trustedExecutionAvailable
27472747
? limitations.filter((item) => typeof item !== "string" || !executionOnlyLimitation(item))
27482748
: limitations;
27492749
if (findings.length) review.no_findings_reason = null;

tests/webhook-adapter.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
createFreshTaskAttemptDirectory,
1515
createConfig,
1616
createFollowupReviewTask,
17+
finalizeReviewResult,
1718
githubRequestAllPages,
1819
handleRequest,
1920
inspectRepairDiff,
@@ -1759,6 +1760,27 @@ test("trusted validation derives findings only from failures mapped to verified
17591760
assert.deepEqual(trustedValidationFindings(task, [trustedValidationReceipt()]), []);
17601761
});
17611762

1763+
test("trusted failed receipts replace model execution disclaimers without hiding substantive limitations", () => {
1764+
const root = mkdtempSync(join(tmpdir(), "coven-finalize-review-"));
1765+
const resultPath = join(root, "result.json");
1766+
const result = completeReview();
1767+
(result.review as JsonObject).limitations = [
1768+
"I did not execute the test suite locally.",
1769+
"The supplied patch for another changed file was truncated.",
1770+
];
1771+
writeFileSync(resultPath, JSON.stringify(result));
1772+
const task = reviewTask("finalize-failed-receipt");
1773+
const finalPath = finalizeReviewResult(resultPath, root, [trustedValidationReceipt({
1774+
returncode: 1,
1775+
status: "failed",
1776+
output_summary: "/workspace/src/app.ts:12 validation failed",
1777+
})], task);
1778+
const finalized = JSON.parse(readFileSync(finalPath, "utf8")) as JsonObject;
1779+
const review = finalized.review as JsonObject;
1780+
assert.deepEqual(review.limitations, ["The supplied patch for another changed file was truncated."]);
1781+
assert.equal((review.findings as JsonObject[]).length, 1);
1782+
});
1783+
17621784
test("replaces runtime-authored test claims with trusted host receipts", async () => {
17631785
const stateDir = tempStateDir();
17641786
const config = testConfig(stateDir);

0 commit comments

Comments
 (0)