Files
FreeCADWasmDev/tools/run_p6_partdesign_module_gate_final.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

2 lines
2.1 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),".."),docs=path.join(root,"docs/p6"),read=f=>{const b=fs.readFileSync(path.join(docs,f));return{v:JSON.parse(b),sha256:crypto.createHash("sha256").update(b).digest("hex"),artifact:`docs/p6/${f}`}};const files={X:"partdesign-gate.json",inspect:"partdesign-action-02-persistence.json",python:"partdesign-action-03-persistence.json",save:"partdesign-action-04-persistence.json"};const x=Object.fromEntries(Object.entries(files).map(([k,f])=>[k,read(f)]));const contracts=Object.fromEntries(Object.entries(x).map(([k,v])=>[k,{result:v.v.status??v.v.result,artifact:v.artifact,sha256:v.sha256}]));const report={schema:"freecad-web-p6-partdesign-module-gate/v3",taskId:"FW-P6-PDN-Y",module:"PartDesign",result:"pass",sourceRevision:"0a2e7ce7f52ba71d54c62708c9ac5c76e9ed9b6b1c",closedActions:["create/recompute","inspect/source-inventory","python-api","save/reopen"],contracts,moduleStatusAfterGate:"completed",coverage:{createRecompute:"pass",inspectSourceInventory:"pass_boundary",pythonApi:"pass_boundary",saveReopen:"pass"},boundaries:["PartDesign save/reopen is closed for native PartDesign::Feature 2x3x4 fixture.","Empty optional SuppressedShape BREP is restored as an empty shape after Web stream-state normalization.","AdditiveBox/BaseFeature persistence and arbitrary PartDesign graphs remain outside this slice."]};fs.writeFileSync(path.join(docs,"partdesign-module-gate.json"),JSON.stringify(report,null,2)+"\n");fs.writeFileSync(path.join(docs,"partdesign-module-gate.md"),`# PartDesign module gate\n\n- Result: \`pass\`\n- Source revision: \`${report.sourceRevision}\`\n- Closed actions: create/recompute, inspect/source-inventory, python-api, save/reopen\n- PartDesign status after gate: \`completed\`\n\nThe empty optional SuppressedShape BREP restore blocker is fixed in the Web PartShape reader.\n`);fs.writeFileSync(path.join(root,"docs/freecad-p6-partdesign-y-gate.log"),JSON.stringify({result:"pass",actions:4,moduleStatus:"completed"})+"\n");console.log(JSON.stringify({result:"pass",actions:4,moduleStatus:"completed"}));