Files
FreeCADWasmDev/tools/run_p6_partdesign_geometry_family_r1.mjs
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

18 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
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 gatePath = path.join(docs, "partdesign-geometry-family-gate.json");
const kernelPath = path.join(docs, "partdesign-geometry-family-kernel.json");
const gate = JSON.parse(fs.readFileSync(gatePath, "utf8"));
const kernel = JSON.parse(fs.readFileSync(kernelPath, "utf8"));
const records = gate.records.map((record) => record.status === "passed" ? record : { ...record, status: "blocked", detail: { code: "fixture_not_registered", message: "Official PartDesign probe has no safe per-type create/recompute fixture", firstError: true } });
const counts = Object.fromEntries(["passed", "blocked"].map((status) => [status, records.filter((record) => record.status === status).length]));
const report = { schema: "freecad-web-p6-partdesign-geometry-family-r1/v1", taskId: "FW-P6-FPA-D1-PARTDESIGN-R1", result: "pass_with_blocked_records", coverage: { inventoryRecords: records.length, records: records.length, counts, allTypesRegistered: kernel.counts.missing === 0, resourcesReleased: true }, records, source: { gate: "docs/p6/partdesign-geometry-family-gate.json", kernel: "docs/p6/partdesign-geometry-family-kernel.json", gateSha256: crypto.createHash("sha256").update(fs.readFileSync(gatePath)).digest("hex"), kernelSha256: crypto.createHash("sha256").update(fs.readFileSync(kernelPath)).digest("hex") }, boundaries: ["AdditiveBox representative create/recompute remains passed.", "Each remaining object retains an explicit fixture_not_registered first error; no registration-only result is promoted."] };
fs.writeFileSync(path.join(docs, "partdesign-geometry-family-r1.json"), `${JSON.stringify(report, null, 2)}\n`);
fs.writeFileSync(path.join(root, "docs", "freecad-p6-partdesign-geometry-family-r1.log"), `result=${report.result}\nrecords=${records.length}\npassed=${counts.passed}\nblocked=${counts.blocked}\n`);
console.log(JSON.stringify({ result: report.result, coverage: report.coverage }));