<?php
declare(strict_types=1);
const NF_RESUME_SHA='644a36d53e40c1531284784a62ce149297e62f53a8af548c3d09c9adf1dbb8b3';
function nf_resume_load(string $file):array {
 nf_check(hash_file('sha256',__DIR__.'/index-representation-overlay-C.json')==='6b071133cfcf66f7a2bafee9c758e59f7b405a3fc4a79bbd68aaa08e7557f42a','Exact Root-approved own index representation overlay');
 nf_check(hash_file('sha256',$file)===NF_RESUME_SHA,'Exact approved frozen resume spec bytes');
 $r=json_decode(file_get_contents($file),true,512,JSON_THROW_ON_ERROR);
 nf_check($r['original_plan_sha256']===NF_PLAN_SHA&&$r['catalog_amendment_sha256']===NF_AMEND_SHA,'Original plan/catalog identities unchanged');
 nf_check($r['target']===['lane'=>'C','schema'=>'ZHCT_APP','table'=>'CDX_NF5_261011_D9A4','object_type'=>'TABLE','existing_own_ordinary'=>true],'Exact existing own C object');
 nf_check($r['cumulative_budget']['DDL_already']===1&&$r['cumulative_budget']['DDL_remaining']===1&&$r['cumulative_budget']['DML_already']===0&&$r['cumulative_budget']['DML_remaining']===72&&$r['cumulative_budget']['probe_already']===18&&$r['cumulative_budget']['natural_already']===20,'No successful CREATE replay/counter reset');
 return $r;
}
function nf_resume_ledger(array $r,array $p,array $a):array {
 $file=$r['original_stopped_raw_path'];nf_check(hash_file('sha256',$file)===$r['original_stopped_raw_sha256'],'Original stopped raw exact immutable SHA');
 $created=false;$meta=[];$baseline=[];$last=null;$createdSQL=null;$createCount=0;
 $metaSQL=array_map(static function($q)use($a){return nf_catalog_sql($q['sql'],'C',$a);},$p['lanes']['C']['five_float_group']['schema_fingerprint_queries']);
 $naturalSQL=array_map(static function($q)use($a){return nf_catalog_sql($q['sql'],'C',$a);},$p['lanes']['C']['natural_protection']['queries']);
 foreach(file($file,FILE_IGNORE_NEW_LINES)as $line){
  $e=json_decode($line,true,512,JSON_THROW_ON_ERROR);
  if($e['event']==='DDL-success'){$createCount++;$created=true;$createdSQL=$e['data']['sql'];}
  if($e['event']==='read-success'){
   $sql=$e['data']['sql'];if($created&&isset($metaSQL[count($meta)])&&$sql===$metaSQL[count($meta)])$meta[]=$e['data']['rows'];
   elseif(!$created&&isset($naturalSQL[count($baseline)])&&$sql===$naturalSQL[count($baseline)])$baseline[]=$e['data']['rows'];
  }
  if($e['event']==='stopped')$last=$e['data'];
 }
 nf_check($createCount===1&&$createdSQL===$p['lanes']['C']['five_float_group']['statements']['create_ordinary']&&hash('sha256',$createdSQL)===$r['success_CREATE_sql_sha256'],'Single successful exact CREATE ledger');
 nf_check(count($meta)===7&&count($baseline)===10,'Full original metadata and natural baseline');
 nf_check(hash('sha256',json_encode($meta,JSON_PRESERVE_ZERO_FRACTION))===$r['seven_metadata_rows_sha256']&&hash('sha256',json_encode($baseline,JSON_PRESERVE_ZERO_FRACTION))===$r['ten_natural_baseline_sha256'],'Complete raw original fingerprints exact');
 nf_check($last['DDL']===1&&$last['DML_attempts']===0&&$last['completed_cases']===0&&$last['probe_queries']===18&&$last['natural_queries']===20&&!$last['unknown'],'No hidden executed DML or unknown object state');
 nf_fingerprint_gate($meta,'C');
 return ['metadata'=>$meta,'natural_baseline'=>$baseline];
}
