Initial curated projectbrain source from 8a7b1e0651dbdab97d744cbd2e653ab3970ac6c5
This commit is contained in:
commit
5aa3e8d685
700 files changed
+132801
No files matched your search
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env node
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
const root = process.cwd();
|
||||
const failures = [];
|
||||
|
||||
const read = (file) => fs.readFileSync(path.join(root, file), "utf8");
|
||||
const exists = (file) => fs.existsSync(path.join(root, file));
|
||||
const requireFile = (file) => {
|
||||
if (!exists(file)) failures.push(`Missing required file: ${file}`);
|
||||
};
|
||||
const requireIncludes = (file, needle, message) => {
|
||||
if (!exists(file) || !read(file).includes(needle)) failures.push(`${file}: ${message}`);
|
||||
};
|
||||
|
||||
[
|
||||
"backend/src/routes/runtimePersistence.ts",
|
||||
"backend/src/repositories/runtimeRepository.ts",
|
||||
"backend/src/routes/p7Runtime.ts",
|
||||
"src/shared/api/realClient.ts",
|
||||
"src/shared/hooks/useProjectData.ts",
|
||||
"src/features/operations/pages/ReviewQueue.tsx",
|
||||
"package.json",
|
||||
].forEach(requireFile);
|
||||
|
||||
requireIncludes("backend/src/routes/runtimePersistence.ts", "/api/projects/:projectId/review-queue/:reviewItemId/materialize-truth", "Review materialization endpoint must exist.");
|
||||
requireIncludes("backend/src/routes/runtimePersistence.ts", "/api/projects/:projectId/accepted-truth/:truthItemId/project-updates", "Project update creation endpoint must exist.");
|
||||
requireIncludes("backend/src/routes/runtimePersistence.ts", "/api/projects/:projectId/project-updates/:projectUpdateId/apply", "Project update apply endpoint must exist.");
|
||||
requireIncludes("backend/src/routes/p7Runtime.ts", "/api/projects/:projectId/current-state/generate", "Current state generation endpoint must exist.");
|
||||
requireIncludes("backend/src/repositories/runtimeRepository.ts", "materializeReviewItemAsTruthInDatabase", "Repository must materialize review items as accepted truth.");
|
||||
requireIncludes("backend/src/repositories/runtimeRepository.ts", "createProjectUpdateFromTruthInDatabase", "Repository must prepare project updates from accepted truth.");
|
||||
requireIncludes("backend/src/repositories/runtimeRepository.ts", "applyProjectUpdateInDatabase", "Repository must apply project updates.");
|
||||
requireIncludes("src/shared/api/realClient.ts", "materializeReviewItemAsTruth", "Real client must expose materialize review as truth.");
|
||||
requireIncludes("src/shared/api/realClient.ts", "createProjectUpdateFromTruth", "Real client must expose project update creation.");
|
||||
requireIncludes("src/shared/api/realClient.ts", "applyProjectUpdate", "Real client must expose project update apply.");
|
||||
requireIncludes("src/shared/api/realClient.ts", "generateCurrentStateReport", "Real client must expose current state generation.");
|
||||
requireIncludes("src/shared/hooks/useProjectData.ts", "useProjectAcceptedTruthData", "Async hooks must expose accepted truth.");
|
||||
requireIncludes("src/shared/hooks/useProjectData.ts", "useProjectProjectUpdatesData", "Async hooks must expose project updates.");
|
||||
requireIncludes("src/shared/hooks/useProjectData.ts", "useProjectCurrentStateReportsData", "Async hooks must expose current state reports.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "Live review closure", "Review Queue must expose live closure bridge.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "Accept + close selected review", "Review Queue must provide explicit closure action.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "closeSelectedReviewIntoState", "Review Queue must run the closure workflow.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "realClient.runtimePersistence.materializeReviewItemAsTruth", "Closure workflow must materialize accepted truth.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "realClient.runtimePersistence.createProjectUpdateFromTruth", "Closure workflow must prepare project updates.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "realClient.runtimePersistence.applyProjectUpdate", "Closure workflow must apply project updates.");
|
||||
requireIncludes("src/features/operations/pages/ReviewQueue.tsx", "realClient.runtimeV7.generateCurrentStateReport", "Closure workflow must regenerate current state.");
|
||||
requireIncludes("package.json", "audit:review-closure", "package.json must expose audit:review-closure.");
|
||||
requireIncludes("package.json", "check-review-closure-readiness.mjs", "package.json must wire the review closure readiness script.");
|
||||
|
||||
const scripts = JSON.parse(read("package.json")).scripts ?? {};
|
||||
const experienceAudit = scripts["audit:experience"] ?? "";
|
||||
const allAudit = scripts["audit:all"] ?? "";
|
||||
const reviewClosureIndex = experienceAudit.indexOf("audit:review-closure");
|
||||
const buildLoopIndex = experienceAudit.indexOf("audit:build-loop");
|
||||
if (!allAudit.includes("audit:experience") || reviewClosureIndex < 0 || buildLoopIndex < 0 || reviewClosureIndex > buildLoopIndex) {
|
||||
failures.push("package.json: audit:all must run the experience gate with review closure before build-loop readiness.");
|
||||
}
|
||||
|
||||
if (failures.length) {
|
||||
console.error("ProjectBrain review closure readiness: FAIL");
|
||||
for (const failure of failures) console.error(`- ${failure}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log("ProjectBrain review closure readiness: PASS");
|
||||
Reference in new issue
Block a user