9 lines
3.9 KiB
JavaScript
9 lines
3.9 KiB
JavaScript
import fs from 'node:fs';import crypto from 'node:crypto';import assert from 'node:assert/strict';
|
|
const run=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json'));assert.equal(run.id,'2576427d1939');const privateRoot=run.root+'/private',selected=privateRoot+'/receipt-composition-cc50a276c10c',regression=privateRoot+'/receipt-composition-b4093c6f6707';
|
|
const paths={profiles:selected+'/single-integration/20261110-133942-55f43aff/profiles-check.json',reads:selected+'/single-read-http-20261110.json',http_boundaries:selected+'/single-boundaries-http-20261110.json',client_recovery:selected+'/single-finance-ledger-client-20261110.json',rate_controller:regression+'/single-integration/20261110-132247-169255fa/stock-rate-controller-result.json',direct_correction:regression+'/single-integration/20261110-132829-d446e90c/direct-ledger-result.json',industrial_correction:regression+'/single-integration/20261110-132833-ef2bb812/industrial-ledger-result.json',material_isolation:regression+'/single-integration/20261110-133334-5449e218/material-isolation-result.json',finance_lock:regression+'/single-integration/20261110-134018-356f8135/finance-lock-result.json'};
|
|
const sha=path=>crypto.createHash('sha256').update(fs.readFileSync(path)).digest('hex');const proofs=Object.fromEntries(Object.entries(paths).map(([name,file])=>{const p=JSON.parse(fs.readFileSync(file));assert.equal(p.passed,true,name);return [name,{file,sha256:sha(file),checks:p.checks.length}];}));const checks=Object.values(proofs).reduce((n,p)=>n+p.checks,0);assert.equal(checks,92);
|
|
const effects={};for(const [name,file]of [['financial',selected+'/single-financial-http-progress.json'],['corrections',selected+'/single-corrections-http-progress.json']]){const p=JSON.parse(fs.readFileSync(file));assert.equal(p.passed,true);effects[name]={file,sha256:sha(file),completed_operations:Object.values(p.operations).filter(o=>o.result).length};}
|
|
const files=['app/Modules/Accounting/ComposedLedger.php','app/Modules/Accounting/ComposedLedgerController.php','app/Modules/Accounting/ComposedMaterialIsolation.php','app/Modules/Accounting/SourceBook.php','app/Modules/Purchasing/ComposedFinance.php','app/Modules/Purchasing/ComposedFinanceController.php','app/Modules/Purchasing/ReceiptRuntime.php','app/Shared/Installation/PresentationEntry.php','packages/general-ledger/src/PayableJournal.php','packages/general-ledger/src/LedgerCycle.php','packages/general-ledger/src/StockValuation.php','public/sgf-finance-payables.mjs','public/sgf-composed-ledger.mjs'];const sources=Object.fromEntries(files.map(file=>[file,sha(file)]));
|
|
const out={date:'2026-11-10',passed:true,meaning:'directed synthetic integration evidence; not complete product acceptance',installation:'cc50a276c10c',port:8085,entry:'http://127.0.0.1:8085/sgf',checks,proofs,effects,sources,journals:13,supplier_principal_minor:10000,supplier_balance_minor:10000,receivable_balance_minor:40000,sgc_required:false,new_demo:false,new_database:false,new_database_roles:false,cache_cleared:false,protected_records_changed:false,published:false,client_presentable:false,visual_review:false,deployment_capacity_validated:false,remaining:['workshop-stock physical integration and unused return','selected stock receipt2/issue1/return0.5 valuation100/50/25 in8085','remaining commercial workshop origin and legacy accounting continuations','accounting origin pagination beyond25','complete QA period conference and close','visual review and full startup/recovery acceptance'],historical_proofs_reused:['docs/proofs/purchasing-completion-final-20261104-r2.json','docs/proofs/sgf-six-module-composition-20261110.json']};
|
|
const file='docs/proofs/sgf-single-integration-20261110.json';assert(!fs.existsSync(file),'Preserve existing evidence');fs.writeFileSync(file,JSON.stringify(out,null,2)+'\n');console.log(JSON.stringify({passed:true,checks,journals:13,client_presentable:false,proof:file}));
|