import { spawnSync } from "node:child_process"; const steps = [ { label: "Release evidence lane click-through", script: "scripts/smoke-rc63-release-evidence-lane.mjs", }, { label: "Review decision receipt recovery", script: "scripts/smoke-rc60-review-decision-loop.mjs", }, { label: "Release evidence capture assist", script: "scripts/smoke-rc73-release-evidence-capture-assist.mjs", }, { label: "Release Center cockpit", script: "scripts/smoke-rc88-release-center.mjs", }, { label: "Release checklist click-through", script: "scripts/smoke-rc99-release-checklist-clickthrough.mjs", }, ]; const runStep = (step) => { console.log(`\n[release-operator] ${step.label}`); const result = spawnSync(process.execPath, [step.script], { env: process.env, shell: false, detached: process.platform === "win32", stdio: "inherit", }); if (result.error) throw result.error; if (result.status !== 0) throw new Error(`${step.label} failed with exit code ${result.status}`); }; try { console.log("ProjectBrain release operator smoke suite"); console.log(`Base URL: ${process.env.PROJECTBRAIN_SMOKE_URL ?? "default smoke URL"}`); console.log(`Project: ${process.env.PROJECTBRAIN_SMOKE_PROJECT ?? "widefrog"}`); for (const step of steps) { runStep(step); } console.log("\nRelease operator smoke suite passed."); } catch (error) { console.error("\nRelease operator smoke suite failed:"); console.error(error.message); process.exitCode = 1; }