Files
memind/scripts/run-release-gate-regression-corpus.mjs
T

35 lines
1.2 KiB
JavaScript
Raw Normal View History

2026-07-26 14:32:01 +08:00
#!/usr/bin/env node
import path from 'node:path';
import { loadScenarioCatalog } from '../release-gate/catalog.mjs';
import { loadActiveRegressionCorpus } from '../release-gate/regression-corpus.mjs';
import { runCommand } from '../release-gate/runner.mjs';
const root = path.resolve(new URL('..', import.meta.url).pathname);
const catalog = await loadScenarioCatalog({ root });
const corpus = await loadActiveRegressionCorpus({ root, catalog });
if (corpus.status !== 'ready') {
console.error(
`COMP-09 blocked: regression corpus is ${corpus.status}; `
+ `${corpus.errors.join('; ') || 'no active privacy-reviewed manifest'}`,
);
process.exit(1);
}
for (const fixture of corpus.fixtures) {
const [command, ...args] = fixture.automation.command;
const result = await runCommand(command, args, {
cwd: root,
timeoutMs: Number(process.env.RELEASE_GATE_CORPUS_CASE_TIMEOUT_MS ?? 60_000),
});
if (result.code !== 0 || result.timedOut) {
console.error(`COMP-09 fixture failed: ${fixture.id}`);
console.error(result.stderr || result.stdout);
process.exit(1);
}
console.log(`PASS ${fixture.id} ${fixture.scenario_ids.join(',')}`);
}
console.log(`PASS COMP-09 fixtures=${corpus.fixtures.length} production_connected=false`);