#!/usr/bin/env node import { executeIncrementalReleaseGate, parseRunnerArgs } from '../release-gate/runner.mjs'; function usage() { console.log(`Usage: node scripts/run-release-gate-incremental.mjs --artifact .runtime/portal [--baseline-commit ] [--deployed-commit ] Reuses a prior full Gate report when the runtime artifact SHA256 is unchanged, then re-executes only REL-* release scenarios.`); } try { const options = parseRunnerArgs(process.argv); if (options.help) { usage(); process.exit(0); } options.mode = 'incremental'; const { report, outputDir, baseline } = await executeIncrementalReleaseGate(options); const summary = report.summary; console.log(`Incremental release gate report: ${outputDir}`); console.log(`baseline_commit=${baseline.report.commit_sha}`); console.log(JSON.stringify(summary)); const passed = summary.failed === 0 && summary.skipped === 0 && summary.blocked === 0 && summary.unknown === 0 && summary.cleanup_failed === 0 && summary.passed + summary.not_applicable === summary.required; process.exit(passed ? 0 : 1); } catch (error) { console.error(`Incremental release gate failed: ${error.message}`); process.exit(1); }