'2026-11-10','evidence'=>'Intenção QA1000 para duas emissões concorrentes.'];$command('finance_prepare','invoice_receipt','prepare',$key,0,$data);$command('finance_review','invoice_receipt','review',$key,1,['decision'=>'approved']);$actor=$select('finance_review');$cuts=[];foreach([1,2] as $i)$cuts[$i]=app(App\Modules\Services\ServiceDocuments::class)->preview($actor,['kind'=>'invoice_receipt','action'=>'issue','document_key'=>$key,'version'=>2,'data'=>[],'reason'=>'Conclusão QA concorrente da mesma intenção financeira.'],(string)Illuminate\Support\Str::uuid())['preview'];file_put_contents($file,json_encode(['cuts'=>$cuts,'document_key'=>$key,'invoices_before'=>$host->table('si_invoices')->count()])); }elseif($mode==='first'){ $p=json_decode(file_get_contents($file),true);$actor=$select('finance_review');$host->beginTransaction();try{$result=app(App\Modules\Services\ServiceDocuments::class)->confirm($actor,$p['cuts'][1]);file_put_contents($dir.'/locked','host company, invoice counter and financial intent locked');$end=microtime(true)+20;while(!is_file($dir.'/release')&µtime(true)<$end)usleep(50000);if(!is_file($dir.'/release'))throw new LogicException('Release missing');$host->commit();file_put_contents($dir.'/first.json',json_encode($result));}finally{while($host->transactionLevel()>0)$host->rollBack();} }elseif($mode==='second'){ $p=json_decode(file_get_contents($file),true);$select('finance_review');request()->request->replace(['preview'=>$p['cuts'][2]]);$start=microtime(true);$r=app(App\Modules\Services\Http\ServiceDocumentsController::class)->confirm(request(),app(App\Modules\Services\ServiceDocuments::class));file_put_contents($dir.'/second.json',json_encode(['status'=>$r->getStatusCode(),'elapsed_seconds'=>microtime(true)-$start])); }elseif($mode==='recover'){ $p=json_decode(file_get_contents($file),true);$actor=$select('finance_review');$w=app(App\Modules\Services\ServiceDocuments::class);$reject(fn()=>$w->confirm($actor,$p['cuts'][2]),409,'second invoice-receipt refuses old version after first commit');$first=$w->confirm($actor,$p['cuts'][1]);$ok($first['replayed'],'first key recovers original invoice-receipt');$ok($host->table('si_invoices')->count()===$p['invoices_before']+1&&$host->table('sd_outputs')->where('document_key',$p['document_key'])->count()===1,'one invoice and one aggregate PDF');$out=$host->table('sd_outputs')->where('document_key',$p['document_key'])->first();$ok($host->table('sr_records')->where('invoice_id',$out->invoice_id)->count()===2,'one obligation and one receipt');file_put_contents($dir.'/result.json',json_encode(['passed'=>true,'second_during_lock'=>json_decode(file_get_contents($dir.'/second.json'),true),'after_release_status'=>409,'one_invoice'=>true,'one_obligation'=>true,'one_receipt'=>true,'one_allocation'=>true,'first_key_replayed'=>true,'regression_only'=>true],JSON_PRETTY_PRINT)); }else throw new LogicException('Unknown phase');echo json_encode(['passed'=>true,'phase'=>$mode,'proof'=>$dir.'/result.json']).PHP_EOL;