getSchemaBuilder()->hasTable('br_statements'))throw new LogicException('Backup and authorized setup required'); $files=['app/Modules/Finance/BankReconciliation.php','app/Modules/Finance/BankLedgerSource.php','app/Modules/Finance/Http/BankReconciliationController.php','app/Shared/Context/ModuleNavigation.php','app/Modules/Identity/Services/IdentityWorkflow.php','routes/web.php','resources/views/finance/bank.blade.php','resources/data/bank-statement-qa.csv','public/sgf-bank.mjs'];foreach($files as$file)if(str_ends_with($file,'.php'))(new Symfony\Component\Process\Process([PHP_BINARY,'-l',$repo.'/'.$file]))->mustRun();$build=$run['root'].'/private/single-bank-build-20261110';if(!is_file($build.'/manifest.json'))throw new LogicException('Private build required');$hashes=[];$copy=function($src,$file)use($s,$work,&$hashes){$dest=$s['app'].'/'.$file;$backup=$work.'/before/'.$file;if(is_file($dest)){if(!is_dir(dirname($backup)))mkdir(dirname($backup),0700,true);copy($dest,$backup);}if(!is_dir(dirname($dest)))mkdir(dirname($dest),0700,true);copy($src,$dest);$hashes[$file]=hash_file('sha256',$dest);};foreach($files as$file)$copy($repo.'/'.$file,$file);$cfg=$work.'/bank_qa.php';file_put_contents($cfg,"true,'binding_sha256'=>hash_file('sha256',$s['root'].'/bank-binding.json')],true).";\n");$copy($cfg,'config/bank_qa.php');foreach(glob($build.'/assets/*')as$file)$copy($file,'public/build/assets/'.basename($file));$copy($build.'/manifest.json','public/build/manifest.json');file_put_contents($work.'/bank-installation.json',json_encode(['passed'=>true,'hashes'=>$hashes,'new_demo'=>false,'cache_cleared'=>false,'native_writes'=>0,'production_reader_has_fixture_fallback'=>false],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'proof'=>$work.'/bank-installation.json']).PHP_EOL;