<?php
require __DIR__.'/run.php';$p=f27c_reference();f27c_gate($p);$local=$p;$local['recovery']['source_raw_path']='/tmp/cdx-prepay-full27-C-evidence-20261011/events-initial-stopped.jsonl';$meta=f27c_source($local);$checks=2;
function c_red($fn,$label){global $checks;$rejected=false;try{$fn();}catch(Throwable $e){$rejected=true;}f27_assert($rejected,'RED '.$label);$checks++;}
foreach($p['field_contract']as $i=>$f)if($f['target_sealed']['type']==='CLOB'){f27_assert($f['source']['type']==='text'&&$f['source']['character_maximum_length']===65535&&(int)$meta['columns'][$i]['char_length']===0&&$meta['columns'][$i]['char_used']===null,'Actual TEXT max is not VARCHAR semantic');$checks++;}
foreach(['data_length'=>1,'char_length'=>63,'char_used'=>'B']as $k=>$v){$bad=$meta;$bad['columns'][2][$k]=$v;c_red(static function()use($bad,$p){f27_schema($bad,$p,false);},'Wrong VARCHAR '.$k);}
foreach(['data_length'=>65535,'char_length'=>65535,'char_used'=>'C','nullable'=>'N','data_default'=>"''"]as $k=>$v){$bad=$meta;$bad['columns'][16][$k]=$v;c_red(static function()use($bad,$p){f27_schema($bad,$p,false);},'Wrong CLOB '.$k);}
foreach(['SQL','binds','PDO_types','source_ordinal']as $k){$bad=$p;$bad['steps'][13][$k]='unknown';c_red(static function()use($bad){f27c_gate($bad);},'Unknown resume SQL/bind/order');}
c_red(static function()use($p){f27_execute($p,['plan_sha'=>'not-approved']);},'No approval before config or connection');
$fixture=$meta;foreach($fixture['indexes']as &$r){$r['table_owner']='ZHCT_APP';$r['status']='VALID';}unset($r);f27c_fresh($fixture,$meta,$p);f27_schema($fixture,$p,false);$checks+=2;
$bad=$fixture;$bad['indexes'][0]['status']='INVALID';c_red(static function()use($bad,$meta,$p){f27c_fresh($bad,$meta,$p);},'Future actual invalid index stops');$bad=$fixture;$bad['indexes'][0]['table_owner']='FOREIGN';c_red(static function()use($bad,$meta,$p){f27c_fresh($bad,$meta,$p);},'Future actual foreign index stops');
echo f27_json(['status'=>'PURE_C_RESUME_TEST_GREEN','checks'=>$checks,'connections'=>0,'source_completed_prefix'=>21,'fresh_reads'=>13,'original_new_counts'=>['read'=>95,'DML'=>19,'DDL'=>3],'index_owner_status_fixture_only_not_DB_evidence'=>true])."\n";
