import { mkdir, readFile } from "node:fs/promises"; import { documentationReviewArtifactSchema } from "./contracts/release-artifacts.ts"; import { writeValidatedJsonArtifact } from "./lib/validated-json-artifact.ts"; type DocumentationReview = Readonly<{ sourcePath: string; sha256: string; thresholdSatisfied: boolean; verdict: string; score: number; }>; type ReviewLedger = Readonly<{ evidenceReport: Readonly<{ repoPath: string; canonicalSha256: string; }>; reviews: Record; reviewer: string; standard: string; status: string; }>; const ledger = JSON.parse( await readFile("docs/architecture/review-ledger.json", "utf8"), ) as ReviewLedger; const evidence = await readFile(ledger.evidenceReport.repoPath, "utf8"); const results = []; for (const [diagram, review] of Object.entries(ledger.reviews)) { const sourceReferenced = evidence.includes(review.sourcePath); const digestReferenced = /^[0-9a-f]{64}$/.test(review.sha256) && evidence.includes(review.sha256); const scorePass = review.thresholdSatisfied === true && review.verdict === "PASS" && typeof review.score === "number" && evidence.includes(`| ${review.score} | PASS |`); results.push({ diagram, sourcePath: review.sourcePath, sha256: review.sha256, sourceReferenced, digestReferenced, reviewer: ledger.reviewer, score: review.score, scorePass, passed: sourceReferenced && digestReferenced && ledger.reviewer === "wiki-diagram-reviewer" && ledger.standard === "rules/diagram-standards.md v2" && scorePass && ledger.status === "PASS_SCOPED", }); } const reportDigestValid = /^[0-9a-f]{64}$/.test(ledger.evidenceReport.canonicalSha256) && evidence.includes(ledger.evidenceReport.canonicalSha256); const passed = reportDigestValid && results.length === 2 && results.every((result) => result.passed); await mkdir("artifacts/quality", { recursive: true }); await writeValidatedJsonArtifact({ path: "artifacts/quality/documentation-review.json", schema: documentationReviewArtifactSchema, value: { schemaVersion: 1, generatedAt: new Date().toISOString(), status: ledger.status, reviewer: ledger.reviewer, standard: ledger.standard, evidenceReport: ledger.evidenceReport, reportDigestValid, results, passed, }, }); if (!passed) { process.stderr.write( "Documentation readiness: FAIL_UNVERIFIED (canonical scoped-review evidence is incomplete)\n", ); process.exit(1); } process.stdout.write("Documentation readiness: PASS_SCOPED\n");