Files
clean-architecture-frontend…/scripts/verify-documentation-readiness.mjs
T

52 lines
1.4 KiB
JavaScript

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");