import { mkdir, readFile, writeFile } from "node:fs/promises"; const ledger = JSON.parse( await readFile("docs/architecture/review-ledger.json", "utf8"), ); const results = []; for (const [diagram, review] of Object.entries(ledger.reviews)) { const content = await readFile(review.path, "utf8"); const hasDiagram = /```mermaid[\s\S]+```/.test(content); const scorePass = typeof ledger.reviewerThreshold === "number" && typeof review.score === "number" && review.score >= ledger.reviewerThreshold; results.push({ diagram, path: review.path, hasDiagram, reviewer: review.reviewer, score: review.score, scorePass, passed: hasDiagram && Boolean(review.reviewer) && scorePass && ledger.status === "PASS_SCOPED", }); } const passed = results.every((result) => result.passed); await mkdir("artifacts/quality", { recursive: true }); await writeFile( "artifacts/quality/documentation-review.json", `${JSON.stringify( { schemaVersion: 1, generatedAt: new Date().toISOString(), status: ledger.status, reviewerThreshold: ledger.reviewerThreshold, results, passed, }, null, 2, )}\n`, ); if (!passed) { process.stderr.write( "Documentation readiness: FAIL_UNVERIFIED (reviewer threshold and signed reviews required)\n", ); process.exit(1); } process.stdout.write("Documentation readiness: PASS_SCOPED\n");