29 lines
2.0 KiB
JavaScript
29 lines
2.0 KiB
JavaScript
import crypto from "node:crypto";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), "..");
|
|
const docs = path.join(root, "docs/p6");
|
|
const read = (name) => JSON.parse(fs.readFileSync(path.join(docs, name), "utf8"));
|
|
const facade = read("import-action-01-facade.json");
|
|
const chrome = read("import-action-01-chrome.json");
|
|
const kernel = read("import-action-01-kernel.json");
|
|
const report = {
|
|
schema: "freecad-web-p6-import-action-01-persistence/v1",
|
|
taskId: "FW-P6-IMP-ACT-01-G",
|
|
module: "Import",
|
|
action: "create/recompute",
|
|
result: "pass_boundary",
|
|
persistence: { applicability: "not_applicable_current_action", reason: "create/recompute creates and closes an imported document but does not declare FCStd save/reopen; that is a separate Import action", verification: "closed-document-and-resource-replay" },
|
|
closedDocument: facade.responses.success.result.document,
|
|
stateSha256: facade.responses.success.result.stateSha256,
|
|
kernelReplayDeterministic: kernel.repeat.deterministic,
|
|
chromeReplay: { result: chrome.result, externalRequestCount: chrome.network.externalRequestCount, runtimeExceptionCount: chrome.runtimeExceptionCount, screenshotSha256: chrome.evidence.screenshotSha256 },
|
|
sourceBacked: true,
|
|
evidenceSha256: crypto.createHash("sha256").update(JSON.stringify({ facade, chrome, kernel })).digest("hex"),
|
|
};
|
|
if (report.closedDocument.activeAfterClose !== 0 || !report.kernelReplayDeterministic || report.chromeReplay.result !== "pass") throw new Error(JSON.stringify(report));
|
|
fs.writeFileSync(path.join(docs, "import-action-01-persistence.json"), `${JSON.stringify(report, null, 2)}\n`);
|
|
fs.writeFileSync(path.join(root, "docs/freecad-p6-import-action-01-g-persistence.log"), `result=pass_boundary\napplicability=${report.persistence.applicability}\nactiveAfterClose=0\nkernelReplayDeterministic=true\nchrome=${chrome.result}\n`);
|
|
console.log(JSON.stringify({ result: report.result, applicability: report.persistence.applicability }));
|