Complete V1 RC deployment capability gates
This commit is contained in:
21
tools/web/check-v1-acceptance-release-binding.mjs
Normal file
21
tools/web/check-v1-acceptance-release-binding.mjs
Normal file
@@ -0,0 +1,21 @@
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { evidencePath, root, sha256 } from "./v1-acceptance-lib.mjs";
|
||||
|
||||
assert.ok(fs.existsSync(evidencePath), "V1 acceptance evidence is missing");
|
||||
const acceptanceSha256 = sha256(fs.readFileSync(evidencePath));
|
||||
const releaseEvidence = JSON.parse(fs.readFileSync(path.join(root, "docs/status/release-evidence.json"), "utf8"));
|
||||
const userLoopRecord = releaseEvidence.evidence?.records?.find((record) => record.id === "v1-user-loop");
|
||||
|
||||
assert.ok(userLoopRecord, "release evidence has no v1-user-loop record");
|
||||
assert.equal(userLoopRecord.exitCode, 0, "release v1-user-loop record failed");
|
||||
assert.ok(userLoopRecord.output?.trim().length > 0, "release v1-user-loop output is empty");
|
||||
assert.ok(
|
||||
userLoopRecord.artifactSha256?.includes(acceptanceSha256),
|
||||
"current V1 acceptance evidence is not bound to release evidence",
|
||||
);
|
||||
|
||||
process.stdout.write(
|
||||
`v1-acceptance-release-binding-ok acceptanceSha256=${acceptanceSha256} releaseGeneratedAt=${releaseEvidence.generatedAt}\n`,
|
||||
);
|
||||
Reference in New Issue
Block a user