48 lines
2.4 KiB
JavaScript
48 lines
2.4 KiB
JavaScript
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
import { WP7_02_MODEL_IDS } from "./lib/wp7-02-external-contract.mjs";
|
|
import { validateSanitizedEvidence } from "./lib/wp7-02-controlled-executor.mjs";
|
|
import { reviewIndependentModelEvidence } from "./lib/wp7-02-manual-review.mjs";
|
|
|
|
const caseDirectory = process.env.DADA_WP7_02_CASE_DIR;
|
|
const runId = process.env.DADA_TDD_RUN_ID;
|
|
const confirmed = process.argv.includes("--confirm-manual-review");
|
|
|
|
function readJson(path) {
|
|
return validateSanitizedEvidence(JSON.parse(readFileSync(path, "utf8")));
|
|
}
|
|
|
|
function output(value, error = false) {
|
|
const serialized = JSON.stringify(validateSanitizedEvidence(value));
|
|
if (error) console.error(serialized); else console.log(serialized);
|
|
}
|
|
|
|
try {
|
|
if (!confirmed || !caseDirectory || !runId) throw new Error("WP7_02_MANUAL_REVIEW_CONFIRMATION_REQUIRED");
|
|
const entries = [];
|
|
for (const modelId of WP7_02_MODEL_IDS) {
|
|
const directory = resolve(caseDirectory, modelId.replaceAll(".", "_"));
|
|
const paths = ["contract-matrix.json", "external-calls.json", "readiness.json", "redaction.json"]
|
|
.map((name) => resolve(directory, name));
|
|
if (paths.some((path) => !existsSync(path))) throw new Error("WP7_02_MANUAL_REVIEW_EVIDENCE_MISSING");
|
|
const matrix = readJson(paths[0]);
|
|
const externalCalls = readJson(paths[1]);
|
|
const readiness = readJson(paths[2]);
|
|
const redaction = readJson(paths[3]);
|
|
entries.push({ directory, externalCalls, matrix, modelId, readiness, redaction });
|
|
}
|
|
const result = reviewIndependentModelEvidence(entries, { reviewedAt: new Date().toISOString(), runId });
|
|
for (let index = 0; index < entries.length; index += 1) {
|
|
const review = validateSanitizedEvidence(result.reviews[index]);
|
|
writeFileSync(resolve(entries[index].directory, "manual-review.json"), `${JSON.stringify(review, null, 2)}\n`);
|
|
}
|
|
output({ reviewed: result.reviews.map(({ model_id, status }) => ({ model_id, status })), run_id: runId, status: result.status }, result.status !== "passed");
|
|
if (result.status !== "passed") process.exitCode = 3;
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
const code = /^WP7_02_[A-Z0-9_:]+$/.test(message) ? message : "WP7_02_MANUAL_REVIEW_FAILED";
|
|
output({ code, run_id: runId, status: "externally_blocked" }, true);
|
|
process.exitCode = 3;
|
|
}
|