perf(web): measure and reuse batch verification stages
This commit is contained in:
@@ -108,13 +108,14 @@ const reusableProductionEvidence = () => {
|
||||
const reusedEvidence = reusableProductionEvidence();
|
||||
if (reusedEvidence) {
|
||||
for (const command of record.module.commands ?? []) {
|
||||
results.push({ command, exitCode: 0, reused: true, output: `reused existing Chromium production evidence: ${reusedEvidence.evidencePath}\n` });
|
||||
results.push({ command, exitCode: 0, reused: true, durationMs: 0, output: `reused existing Chromium production evidence: ${reusedEvidence.evidencePath}\n` });
|
||||
}
|
||||
} else {
|
||||
for (const command of record.module.commands ?? []) {
|
||||
const started = Date.now();
|
||||
const result = spawnSync("bash", ["-lc", command], { cwd: root, encoding: "utf8", maxBuffer: 32 * 1024 * 1024 });
|
||||
const output = `${result.stdout ?? ""}${result.stderr ?? ""}`;
|
||||
results.push({ command, exitCode: result.status ?? 1, output });
|
||||
results.push({ command, exitCode: result.status ?? 1, durationMs: Date.now() - started, output });
|
||||
if ((result.status ?? 1) !== 0) { failed = true; break; }
|
||||
}
|
||||
}
|
||||
@@ -131,9 +132,9 @@ const report = {
|
||||
source: { paths: record.module.sourcePaths, before: sourceBefore, after: sourceAfter, unchanged: sourceUnchanged },
|
||||
reusedReceipts,
|
||||
cases: { positive: record.module.positive, negative: record.module.negative, recovery: record.module.recovery },
|
||||
commands: results.map(({ command, exitCode }) => ({ command, exitCode })),
|
||||
commands: results.map(({ command, exitCode, durationMs, reused }) => ({ command, exitCode, durationMs, ...(reused ? { reused: true } : {}) })),
|
||||
verification: { required: plan.verificationPolicy.required, chromiumOnly: plan.verificationPolicy.browser === "chromium_only", fullFamilyParity: false },
|
||||
efficiency: { existingEvidenceReused: Boolean(reusedEvidence), skippedCommands: reusedEvidence ? results.length : 0, reusePolicy: reuseRequested ? "hash_bound_receipt" : "disabled" },
|
||||
efficiency: { existingEvidenceReused: Boolean(reusedEvidence), skippedCommands: reusedEvidence ? results.length : 0, totalDurationMs: results.reduce((total, result) => total + (result.durationMs ?? 0), 0), reusePolicy: reuseRequested ? "hash_bound_receipt" : "disabled" },
|
||||
inventory: { historical: plan.inventory, dynamic: { path: dynamicInventoryPath, sha256: sha(dynamicInventoryPath), sourceTreeSha256: dynamicInventory.authority.sourceTreeSha256, unitCount: dynamicInventory.summary.unitCount, planningEstimate: dynamicInventory.policy.planningEstimate, hardTarget: dynamicInventory.policy.hardTarget, verifiedUnits: dynamicInventory.coverage.verifiedUnits, unverifiedUnits: dynamicInventory.coverage.unverifiedUnits } },
|
||||
nextTask: failed || !sourceUnchanged ? task : plan.tasks[plan.tasks.findIndex((candidate) => candidate.id === task) + 1]?.id ?? null,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user