7 lines
2.8 KiB
JavaScript
7 lines
2.8 KiB
JavaScript
#!/usr/bin/env node
|
|
import assert from "node:assert/strict"; 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"); const revision = "b5a086fda59b0325fe0996147e6e9b344414f9bc"; const read = (file) => JSON.parse(fs.readFileSync(path.join(docs, "p6", file), "utf8")); const sha = (file) => crypto.createHash("sha256").update(fs.readFileSync(path.join(docs, "p6", file))).digest("hex");
|
|
const action02 = ["cloud-action-02-kernel.json", "cloud-action-02-recovery.json", "cloud-action-02-facade.json", "cloud-action-02-chrome.json", "cloud-action-02-persistence.json"].map(read);
|
|
const contracts = { firstSlice: { task_id: "FW-P6-CLD-X", artifact: "cloud-gate.json", status: read("cloud-gate.json").status }, inspect: { task_id: "FW-P6-CLD-ACT-02", artifact: "cloud-action-02-inspect-source-inventory.json", status: action02.every((item) => (item.status ?? item.result) === "pass") ? "pass" : "fail" }, python: { task_id: "FW-P6-CLD-ACT-03", artifact: "cloud-action-03-python-api.json", status: read("cloud-action-03-python-api.json").status }, saveReopen: { task_id: "FW-P6-CLD-ACT-04", artifact: "cloud-action-04-save-reopen.json", status: read("cloud-action-04-save-reopen.json").status } };
|
|
assert.equal(contracts.firstSlice.status, "pass"); assert.equal(contracts.inspect.status, "pass"); assert.equal(contracts.python.status, "pass"); assert.equal(contracts.saveReopen.status, "pass"); const report = { schema: "freecad-web-p6-cloud-module-gate/v1", task_id: "FW-P6-CLD-Y", module: "Cloud", status: "pass", source_revision: revision, contracts: Object.fromEntries(Object.entries(contracts).map(([key, value]) => [key, { ...value, sha256: sha(value.artifact) }])), module_status_after_gate: "completed", boundaries: ["All four declared Cloud actions have independent conclusions.", "Cloud Save/Restore remains remote-service functionality; local FCStd save/reopen is explicitly not applicable.", "No release, legal, performance, or non-Chrome compatibility claim is made."] }; fs.writeFileSync(path.join(docs, "p6/cloud-module-gate.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(docs, "p6/cloud-module-gate.md"), `# Cloud module gate\n\n- Result: \`pass\`\n- Source revision: \`${revision}\`\n- Declared actions: configure/recompute, inspect/source-inventory, python-api, save/reopen\n- Cloud status after gate: \`completed\`\n\nAll four actions have independent C-G evidence. Save/Restore is remote S3-style functionality and is explicitly not a local FCStd round-trip.\n`); fs.writeFileSync(path.join(docs, "freecad-p6-cloud-y-gate.log"), "actions=4\nresult=pass\nmoduleStatus=completed\n"); console.log(JSON.stringify({ result: report.status, actions: 4, moduleStatus: report.module_status_after_gate }));
|