<?php
declare(strict_types=1);
require __DIR__.'/gate.php';require __DIR__.'/catalog-amendment.php';require __DIR__.'/resume.php';
$p=nf_plan(__DIR__.'/probe-plan.json');$a=nf_amend_load(__DIR__.'/catalog-amendment-C.json',$p);$r=nf_resume_load(__DIR__.'/resume-plan-C.json');$l=nf_resume_ledger($r,$p,$a);
$count=0;$rejected=[];
foreach([
 'default zero'=>static function(&$x){$x[0][2]['data_default']='0';},
 'quoted SQL string NULL'=>static function(&$x){$x[0][2]['data_default']="'NULL'";},
 'lowercase NULL'=>static function(&$x){$x[0][2]['data_default']='null';},
 'whitespace NULL'=>static function(&$x){$x[0][2]['data_default']=' NULL ';},
 'other ID default NULL string'=>static function(&$x){$x[0][0]['data_default']='NULL';},
 'other MARKER default NULL string'=>static function(&$x){$x[0][1]['data_default']='NULL';},
 'own FLOAT not nullable'=>static function(&$x){$x[0][2]['nullable']='N';},
 'own FLOAT wrong precision'=>static function(&$x){$x[0][2]['data_precision']=24.0;},
 'own FLOAT missing'=>static function(&$x){array_pop($x[0]);},
 'unexpected foreign constraint'=>static function(&$x){$x[3][]=['constraint_type'=>'R','status'=>'ENABLED'];},
 'unexpected trigger'=>static function(&$x){$x[5][]=['trigger_name'=>'ALIEN'];},
 'cluster entry removed'=>static function(&$x){array_shift($x[1]);},
 'extra system index'=>static function(&$x){$x[1][]=['index_name'=>'ALIEN','uniqueness'=>'NONUNIQUE','index_type'=>'NORMAL'];},
 'original system index renamed'=>static function(&$x){$x[1][0]['index_name']='ALIEN';},
 'cluster type changed'=>static function(&$x){$x[1][0]['index_type']='NORMAL';},
 'cluster uniqueness changed'=>static function(&$x){$x[1][0]['uniqueness']='UNIQUE';},
 'normal unique index column changed'=>static function(&$x){$x[2][0]['column_name']='POWER';},
 'normal unique index position changed'=>static function(&$x){$x[2][0]['column_position']=2.0;},
 'unexpected cluster column exposed'=>static function(&$x){$x[2][]=['index_name'=>'INDEX33556689','column_name'=>'POWER','column_position'=>1.0];},
 'PK name changed'=>static function(&$x){$x[3][0]['constraint_name']='ALIEN';},
 'PK column changed'=>static function(&$x){$x[4][0]['column_name']='POWER';},
]as $name=>$fn){$m=$l['metadata'];$fn($m);try{nf_fingerprint_gate($m,'C');}catch(Throwable $e){$rejected[]=$name;$count++;continue;}throw new RuntimeException('Mutation survived '.$name);}
$original=file_get_contents(__DIR__.'/runner-v2-executed.php');$resumed=file_get_contents(__DIR__.'/runner-resume-C.php');
$begin='  foreach($spec[\'steps\']as $case)';$end='  nf_check($dml===72';
$body=static function($s)use($begin,$end){$a=strpos($s,$begin);$b=strpos($s,$end,$a);nf_check($a!==false&&$b!==false,'Exact fixed DML loop anchors');return substr($s,$a,$b-$a);};
nf_check($body($original)===$body($resumed),'All72DML/48case bindings/values/diagnostics/rollback loop identical');$count++;
nf_check(strpos($resumed,'$execDDL($spec[\'statements\'][\'create_ordinary\'])')===false,'No CREATE replay call');$count++;
nf_check(hash_file('sha256',__DIR__.'/resume-plan-C.json')===NF_RESUME_SHA,'Frozen resume bytes');$count++;
echo json_encode(['status'=>'RESUME_PURE_GATE_PASS','assertions'=>$count,'negative_gates_rejected'=>$rejected,'original_metadata_sha256'=>$r['seven_metadata_rows_sha256'],'original_baseline_sha256'=>$r['ten_natural_baseline_sha256'],'fixed_DML_loop_identical'=>true,'CREATE_replayed'=>0,'DB_connections'=>0,'DDL'=>0,'DML'=>0],JSON_PRETTY_PRINT),"\n";
