commit de compras

This commit is contained in:
2026-11-04 09:37:20 +02:00
parent fcf31e8d48
commit 0b05a1192c
741 changed files with 114127 additions and 116 deletions
+8 -3
View File
@@ -1,4 +1,5 @@
import fs from 'node:fs';
import {validateOrigins} from './audit-module-matrix.mjs';
import path from 'node:path';
import crypto from 'node:crypto';
import {fileURLToPath} from 'node:url';
@@ -8,14 +9,14 @@ const root=path.resolve(path.dirname(fileURLToPath(import.meta.url)),'..');
const roots={sgf:root,compras:path.resolve(root,'../compras')};
const planPath=path.join(root,'docs/integration/sgf-flow-plan.json');
const digest=b=>crypto.createHash('sha256').update(b).digest('hex');
const planBytes=fs.readFileSync(planPath), plan=JSON.parse(planBytes);
const planBytes=fs.readFileSync(planPath), plan=JSON.parse(planBytes);validateOrigins(plan);
const requireValue=(condition,message)=>{if(!condition)throw Error(message);};
requireValue(plan.schema_version===1&&plan.status==='preparation_only','Unsupported plan');
const modules=new Set(plan.modules), sourceIds=new Set(), stages=new Map();
requireValue(modules.size===6,'Expected the six existing modules');
const sources=plan.sources.map(s=>{
requireValue(!sourceIds.has(s.id),'Duplicate source');sourceIds.add(s.id);
requireValue(roots[s.repository]&&/^(app|packages|resources|docs)\//.test(s.path)&&/\.(php|js|md)$/.test(s.path),'Unexpected source path');
requireValue(roots[s.repository]&&/^(app|packages|resources|docs|integrations|public)\//.test(s.path)&&/\.(php|js|jsx|mjs|md)$/.test(s.path),'Unexpected source path');
const base=fs.realpathSync(roots[s.repository]), file=fs.realpathSync(path.resolve(base,s.path));
requireValue(file.startsWith(base+path.sep)&&!s.path.split('/').includes('..'),'Source escapes repository');
return {...s,sha256:digest(fs.readFileSync(file)),meaning:'source_present_only_not_operational_proof'};
@@ -42,5 +43,9 @@ const report={id:plan.id,date:plan.date,kind:'static_preparation_inventory',plan
limitations:['Source existence is not execution, parity, acceptance or deployment evidence.','Dependencies represent the selected synthetic path, not universal product eligibility rules.','No stage transition engine, inventory adapter or journal engine implemented by this inventory.'],
preservation:{database_connections:0,source_execution:false,application_routes_changed:false,rights_changed:false,protected_six_records_untouched:true,blocked_cache_untouched:true,
demos_changed:false,purchasing_activated:false,publication:false,checkpoint:false},visual_review_pending:true,deployment_capacity_validated:false};
fs.writeFileSync(path.join(root,'docs/proofs/module-flow-preparation-20261102.json'),JSON.stringify(report,null,2)+'\n');
const outputName=process.argv[2]??'module-flow-preparation-20261102.json';
requireValue(/^[a-z0-9-]+\.json$/.test(outputName),'Proof filename required');
const output=path.join(root,'docs/proofs',outputName);
requireValue(!fs.existsSync(output),'Completed proof preserved; choose a new proof filename');
fs.writeFileSync(output,JSON.stringify(report,null,2)+'\n');
console.log(JSON.stringify({modules:modules.size,stages:stages.size,sources:sources.length,mandatory_cycles:0,kind:report.kind,database_connections:0,operational_integration_validated:false},null,2));