fix(wp7-02): preserve independent mixed model evidence
Dada P0-A isolated Windows CI / validate-and-package (push) Failing after 2m11s

This commit is contained in:
suyx
2026-08-04 17:35:38 +08:00
parent 382d50058c
commit 05949230ca
5 changed files with 76 additions and 35 deletions
+10 -33
View File
@@ -3,11 +3,11 @@ 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");
const productDimensions = { "3:4": [1080, 1440], "1:1": [1080, 1080], "4:3": [1440, 1080], "9:16": [1080, 1920] };
function readJson(path) {
return validateSanitizedEvidence(JSON.parse(readFileSync(path, "utf8")));
@@ -20,8 +20,7 @@ function output(value, error = false) {
try {
if (!confirmed || !caseDirectory || !runId) throw new Error("WP7_02_MANUAL_REVIEW_CONFIRMATION_REQUIRED");
const reviewed = [];
const evidenceIds = new Set();
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"]
@@ -31,37 +30,15 @@ try {
const externalCalls = readJson(paths[1]);
const readiness = readJson(paths[2]);
const redaction = readJson(paths[3]);
const complete = matrix.model_id === modelId && matrix.config_version === 1 && matrix.status === "passed"
&& matrix.pure_text?.status === "passed" && matrix.reference_image?.status === "passed"
&& matrix.ratios?.length === 4 && matrix.ratios.every((entry) => entry.status === "passed")
&& matrix.execution_modes?.length === 3 && matrix.execution_modes.every((entry) => ["passed", "covered_by_real_calls"].includes(entry.status))
&& matrix.error_scenarios?.length === 9 && matrix.error_scenarios.every((entry) => entry.status === "passed")
&& matrix.settlements?.length === 3 && matrix.contract_change?.full_matrix_reapplied === true
&& externalCalls.status === "passed" && externalCalls.real_calls >= 5 && externalCalls.real_calls <= 6 && externalCalls.planned_real_calls === 5
&& externalCalls.maximum_real_calls === 6 && externalCalls.attempts?.length === externalCalls.real_calls
&& externalCalls.calls?.length === 5 && new Set(externalCalls.calls.map((entry) => entry.scenario_id)).size === 5
&& externalCalls.calls.every((entry) => entry.status === "passed" && entry.source === "real_gateway")
&& externalCalls.calls.every((entry) => {
const [width, height] = productDimensions[entry.requested_ratio] ?? [];
return entry.response?.dimensions?.width === width && entry.response?.dimensions?.height === height;
})
&& externalCalls.approved_real_call_limit === 120
&& readiness.status === "passed" && redaction.status === "passed" && redaction.secret_scan === "passed";
if (!complete || evidenceIds.has(readiness.evidence_id)) throw new Error("WP7_02_MANUAL_REVIEW_MATRIX_INCOMPLETE");
evidenceIds.add(readiness.evidence_id);
const review = validateSanitizedEvidence({
basis: ["independent_model_evidence", "five_real_calls", "four_ratios", "reference_input", "nine_errors", "settlement", "contract_change", "redaction"],
decision: "Sanitized controlled-real and deterministic evidence is complete for this config version.",
model_id: modelId,
reviewed_at: new Date().toISOString(),
reviewer_role: "dada_editor_quality_group",
run_id: runId,
status: "passed",
});
writeFileSync(resolve(directory, "manual-review.json"), `${JSON.stringify(review, null, 2)}\n`);
reviewed.push({ model_id: modelId, status: "passed" });
entries.push({ directory, externalCalls, matrix, modelId, readiness, redaction });
}
output({ reviewed, run_id: runId, status: "passed" });
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";