<?php
declare(strict_types=1);
require __DIR__.'/NativeContract.php';require __DIR__.'/Oracle.php';
$assertions=0;$check=static function($ok,$label)use(&$assertions){if(!$ok)throw new RuntimeException($label);$assertions++;};
$read=static function($f){return json_decode(file_get_contents($f),true);};$plan=$read(__DIR__.'/execution-plan.json');$result=[];$states=[];
foreach(['B','C']as $lane){$p=__DIR__.'/private/'.$lane.'/';$baseline=$read($p.'baseline-original-'.$lane.'.json')['source'];$current=$baseline;$attempts=$read($p.'attempts.json');$check(count($attempts)===8,'8 immutable attempts');$native=0;$dmlCount=0;$warningsCount=0;$includes=0;
 foreach($attempts as $i=>$attempt){$spec=$plan['cases'][intdiv($i,2)];$action=$i%2===0?'update':'info';$label=$spec['label'].'-'.$action;$case=$attempt['case'];$check($case['label']===$label&&$case['spec']===$spec,'Original ordered new vectors');$check($attempt['complete']&&$attempt['verified'],'Original completion');$w=$read($p.'wire-'.$label.'.json');$response=$read($p.'response-'.$label.'.json');$body=base64_decode($attempt['body_base64'],true);$dto=json_decode($body,true);
  $check($w['case']===$case&&$w['before']===$current,'Typed complete before');$check($response['body']===$body&&$w['body']===$body&&$response['body_sha256']===hash('sha256',$body),'Immutable original body');$check($response['status']===200&&$w['status']===200&&strpos($attempt['headers'][0],'200')!==false,'Original status');$check(!isset($w['oracle_error'])&&!isset($w['business_or_send_error'])&&$w['response_saved_before_send'],'Observer isolated complete');$check(base64_decode($w['raw_request_base64'],true)===base64_decode($attempt['payload_base64'],true),'Original request bytes');$check(json_decode(base64_decode($attempt['payload_base64'],true),true)===$case['params'],'Original input PHP types');
  $uuid=$plan['target'][$lane]['uuid'];$rows=array_values(array_filter($current['nutrition'],static function($r)use($uuid){return $r['uuid']===$uuid;}));$row=$rows[0];$strip=static function($s)use($uuid){foreach($s['nutrition']as &$r)if($r['uuid']===$uuid)unset($r['use_weight']);unset($r);return $s;};$check($strip($current)===$strip($w['after']),'Full11 own actor config identity 5MD bits protected');$check($row===$w['before_exact_row'],'Exact physical own before row');
  $target=[];$warn=[];foreach($w['native']as $e){if(($e['layer']??'')==='PDOStatement.execute'||($e['layer']??'')==='PDO.query')$native++;if(($e['layer']??'')==='PDOStatement.execute'&&strpos($e['sql']??'','UPDATE ')===0)$target[]=$e;if(($e['layer']??'')==='source.SHOW_WARNINGS')$warn[]=$e;}
  $check(count($target)===$w['DML_attempts'],'Exact target native attempts');$dmlCount+=count($target);$warningsCount+=count($warn);
  $check($w['PHP_source_warnings']===[],'No PHP source warning');$check(count($w['oracle'])===27,'Server independent27 SELECT plus one physical SELECT');
  foreach($w['included_files']as $inc){$check(is_string($inc['sha256'])&&strlen($inc['sha256'])===64,'Every included SHA pinned');$includes++;}
  if($action==='info'){$check($dto===nfInfoOracle($row,$lane),'Whole info DTO types shapes order');$check($current===$w['after']&&$target===[]&&$warn===[],'Read no business writes');}
  elseif($spec['target_DML_attempt_max']===0){$check($dto===$spec['expected_update_envelope'],'Original validator envelope');$check($current===$w['after']&&$target===[]&&$warn===[],'Prefix whole scope unchanged zero targetDML');}
  else{
   $params=['uuid'=>$uuid];foreach(PlainScalarNativeContract::FIELDS as $f)if($f!=='is_own')$params[$f]=$f==='use_weight'?$spec['value']:$row[$f];$check($params===$case['params'],'Exact fresh row params fiveMD absent');$e=$target[0];PlainScalarNativeContract::assertUpdate($e['sql'],$e['binds'],$e['params'],$lane,$spec,$params,$uuid);$assertions++;
   if($lane==='C'&&$spec['value']==='1e999'){$check(!$e['success']&&$e['error']['errorInfo'][1]===-6102,'Actual C overflow');$check($dto===['code'=>1,'message'=>$e['error']['message'],'data'=>[]]&&$current===$w['after'],'Exact failure DTO whole row unchanged');}
   else{$check($e['success']&&$dto===['code'=>0,'message'=>'编辑营养品成功','data'=>[]],'Full success envelope');$bits=$spec['value']==='12.347'?'00000000aab12840':'000000e0ffffef47';$check($w['physical']['fields']['computed_weight']['bits64']===$bits,'Exact promoted32 computed bits');if($lane==='B'&&$spec['value']==='3.5e38'){$check($e['rowCount']===0&&$current===$w['after']&&$attempt['native_noop_full_row_and_intended_equal'],'Actual true row no-change');$check($read($p.'scope-metadata.json')['target_no_trigger_or_auto_effect'],'Target metadata noop proof');}else $check($e['rowCount']===1,'Actual one affected row');}
   if($lane==='B'){$check(count($warn)===1&&$warn[0]['success']&&$warn[0]['sql']==='SHOW WARNINGS'&&$warn[0]['binds']===[],'Immediate same PDO warning collection');$codes=array_column($warn[0]['rows'],'code');$check($codes===($spec['value']==='1e999'?[1264,1264]:($spec['value']==='3.5e38'?[1264]:[])),'Actual source warning codes');}
   else $check($warn===[],'C zero SHOW WARNINGS');
  }
  $current=$w['after'];$states[$lane][$label]=$w;
 }
 $final=$read($p.'baseline-final.json');$check($current===$final['source'],'Final exact typed lease');$check($final['physical']['fields']['computed_weight']['bits64']==='00000000aab12840','Final legal new weight');$check($final['observer_count']['count']===264&&$read($p.'observer-budget.json')['count']===264,'Independent observer264 cap');$check($native===$read($p.'native-budget.json')['count']&&$native<=($lane==='B'?43:75),'All native executions counted');$check($dmlCount===3&&$read($p.'target-update-budget.json')['count']===3,'Exactly three attempts');$check($warningsCount===($lane==='B'?3:0),'Warnings cap');$meta=$read($p.'scope-metadata.json');$check($meta['metadata_SELECT']===2&&$meta['target_no_trigger_or_auto_effect']&&count($meta['records'])===2,'Separate metadata2');$check($read($p.'readiness.json')['typed_exact_equal'],'PHP typed readiness');$check($read($p.'auth-native.json')['native']===[],'Auth zeroSQL');$clean=$read($p.'cleanup.json');$check($clean['own_port_closed']&&$clean['stop_sent']&&count($clean['cache_removed'])===1&&count($clean['temporary_credentials_removed'])===3,'Own resource cleanup');$rc=$read($p.'resource-check.json');$check($rc['own_worker_absent']&&$rc['own_port_closed']&&$rc['own_cache_auth_absent']&&$rc['source959_exact']&&$rc['original_parent_alive']&&$rc['no_AppleDouble'],'Independent resources/sourcefileset');
 $result[$lane]=['HTTP'=>8,'target_UPDATE_attempts'=>3,'native_execute_or_query'=>$native,'observer_SELECT'=>264,'extra_metadata_SELECT'=>2,'source_warning_reads'=>$warningsCount,'actual_included_records'=>$includes];
}
foreach(['plain-scalar-prefix-12349tail-info','plain-scalar-finite-over-cap-35e37-info','plain-scalar-positive-finish-12347-info']as $label){$b=json_decode($states['B'][$label]['body'],true);$c=json_decode($states['C'][$label]['body'],true);foreach(['id','uuid','create_time','create_by']as $f){$b['data'][$f]=$c['data'][$f];}$check($b===$c,'Full crosslane info only four proven env fields mapped');}
$negative=0;foreach(['B','C']as $lane){$w=$states[$lane]['plain-scalar-positive-finish-12347-update'];$e=array_values(array_filter($w['native'],static function($e){return ($e['layer']??'')==='PDOStatement.execute'&&strpos($e['sql']??'','UPDATE ')===0;}))[0];foreach(['value','php_type','PDO_type','UUID','SQL','params']as $mut){$sql=$e['sql'];$b=$e['binds'];$params=$e['params'];switch($mut){case 'value':$b[':data__name']['value'].='x';break;case 'php_type':$b[':data__use_number']['php_type']='double';break;case 'PDO_type':$b[':data__use_number']['type']=2;break;case 'UUID':$b[':where_AND_uuid']['value']='wrong';break;case 'SQL':$sql.=' ';break;case 'params':$params=[];break;}$rejected=false;try{PlainScalarNativeContract::assertUpdate($sql,$b,$params,$lane,$w['case']['spec'],$w['case']['params'],$plan['target'][$lane]['uuid']);}catch(RuntimeException $x){$rejected=true;}$check($rejected,'Mutation rejected '.$mut);$negative++;}}
echo json_encode(['assertions'=>$assertions,'mutations_rejected'=>$negative,'lanes'=>$result,'verification_SQL'=>0,'verification_HTTP'=>0,'verification_DML'=>0],JSON_PRETTY_PRINT),PHP_EOL;
