<?php
declare(strict_types=1);require __DIR__.'/bootstrap.php';$check(!is_file($runtime.'/private-final-journal.json'),'No final read replay');$before=$snapshot();$cases=[];$errors=[];$owned=[];$tokens=[];$stats=[];$collections=[];$save=static function()use($runtime,&$cases,&$errors,&$owned,&$stats,&$collections,$before,$boundary){file_put_contents($runtime.'/private-final-journal.json',json_encode(['lane'=>getenv('SIGN_LANE'),'before'=>$before,'boundary'=>$boundary,'cases'=>$cases,'errors'=>$errors,'owned'=>$owned,'cli_stats'=>$stats,'collections'=>$collections],JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_PRESERVE_ZERO_FRACTION));chmod($runtime.'/private-final-journal.json',0600);};$save();
foreach($tenants as $module=>$tenant){$tokens[$module]=bin2hex(random_bytes(24));$cache->set($tokens[$module],['user'=>['store_user_id'=>$tenant,'store_id'=>$tenant,'real_name'=>$marker,'user_name'=>$marker,'is_super'=>1],'store_id'=>$tenant,'is_login'=>true],3600);}$save();require __DIR__.'/request_green.php';$rows=$own();foreach($tenants as $module=>$tenant){$ownRows=array_values(array_filter($rows['action'],static function($r)use($tenant){return (int)$r['store_id']===$tenant;}));foreach($ownRows as $index=>$row)$req($module,'FINAL_ROW_'.$index,'detail',['signId'=>(int)$row['id']]);}
$after=$snapshot();$check($rows===$own(),'Final read all own rows unchanged');$report=['lane'=>$lane,'phase'=>'final','before'=>$before,'after'=>$after,'protected_unchanged'=>$before===$after,'cases'=>$cases,'errors'=>$errors,'owned'=>$owned,'cli_stats'=>$stats,'boundary'=>$boundary,'final_original'=>$own()];file_put_contents($runtime.'/private-final-report.json',json_encode($report,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_PRESERVE_ZERO_FRACTION));chmod($runtime.'/private-final-report.json',0600);$save();echo json_encode(['lane'=>$lane,'requests'=>count($cases),'cli_failures'=>array_sum(array_column($stats,'failures')),'all_owned_original_unchanged'=>true,'protected_unchanged'=>$before===$after]),"\n";
