feat(web): reuse verified source dependencies
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-03 13:50:55 +08:00
parent c3cce050f8
commit c334bb1437
28 changed files with 8504 additions and 70 deletions

View File

@@ -63,6 +63,30 @@ const reusableProductionEvidence = () => {
catch { return null; }
if (evidence.task !== task || evidence.browser !== "chromium" || evidence.queueMutation !== false
|| evidence.error !== undefined) return null;
if (evidence.reusedEvidence?.length && evidence.dependencyProofs?.length) {
for (const reused of evidence.reusedEvidence) {
if (!reused.path || !fs.existsSync(abs(reused.path))) return null;
let prior;
try { prior = json(reused.path); }
catch { return null; }
const paths = Array.isArray(prior.fixtures) ? prior.fixtures : prior.fixture ? [prior.fixture] : [];
const entries = Array.isArray(prior.fixtures) ? paths.map((fixture) => prior[fixture]) : [prior];
if (!paths.length || entries.some((entry) => !entry || entry.error !== undefined
|| (entry.saveReopenExact !== undefined && entry.saveReopenExact !== true)
|| (entry.deterministicExact !== undefined && entry.deterministicExact !== true)
|| (entry.exact !== undefined && entry.exact !== true))) return null;
if (Array.isArray(prior.fixtures)) {
if (paths.some((fixture) => !fs.existsSync(abs(fixture)) || prior.fixtureSha256?.[fixture] !== sha(fixture))) return null;
} else if (!fs.existsSync(abs(prior.fixture)) || prior.fixtureSha256 !== sha(prior.fixture)) return null;
}
if (!fs.existsSync(abs(reportPath))) return null;
let previousReceipt;
try { previousReceipt = json(reportPath); }
catch { return null; }
if (previousReceipt.status !== "PASS" || previousReceipt.source?.unchanged !== true) return null;
if (JSON.stringify(previousReceipt.source?.after ?? {}) !== JSON.stringify(sourceBefore)) return null;
return { evidencePath, evidence };
}
const fixturePaths = Array.isArray(evidence.fixtures) ? evidence.fixtures : evidence.fixture ? [evidence.fixture] : [];
if (!fixturePaths.length) return null;
const fixtureEvidence = Array.isArray(evidence.fixtures) ? fixturePaths.map((fixture) => evidence[fixture]) : [evidence];