<?php
declare(strict_types=1);
ini_set('display_errors','0');ini_set('log_errors','0');error_reporting(E_ALL);
set_error_handler(function($severity){throw new ErrorException('Sanitized warning',0,$severity);});
$stage='start';$sqlHashes=[];
try{
    $lane=$argv[1]??'';$identity=[];
    if($lane==='B'){
        $file='/Users/wiscourper/Documents/workspace/zhct/zhctproject/ai_api/.env.local';$cfg=parse_ini_file($file,true,INI_SCANNER_RAW)['DATABASE'];
        foreach(['HOSTNAME','HOSTPORT','DATABASE','USERNAME','PASSWORD'] as $k){if(empty($cfg[$k])){throw new RuntimeException('Code local config incomplete');}}
        $pdo=new PDO('mysql:host='.$cfg['HOSTNAME'].';port='.$cfg['HOSTPORT'].';dbname='.$cfg['DATABASE'],$cfg['USERNAME'],$cfg['PASSWORD'],[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_CASE=>PDO::CASE_LOWER]);
        $sql='SELECT DATABASE() AS db,VERSION() AS version';$sqlHashes[]=hash('sha256',$sql);$id=$pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
        if($id['db']!==$cfg['DATABASE']||strpos($id['version'],'5.6.')!==0){throw new RuntimeException('Local MySQL56 identity gate');}
        $identity=['code_config'=>'.env.local DATABASE','code_config_sha256'=>hash_file('sha256',$file),'schema_matches'=>true,'server_version'=>$id['version']];
        $sql="SELECT ORDINAL_POSITION,COLUMN_NAME,DATA_TYPE,COLUMN_TYPE,NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='yoshop_user_gift_log' ORDER BY ORDINAL_POSITION";
        $map=['ordinal'=>'ordinal_position','name'=>'column_name','native_type'=>'data_type','source_column_type'=>'column_type','precision'=>'numeric_precision','scale'=>'numeric_scale','char_length'=>'character_maximum_length','nullable'=>'is_nullable'];
    }elseif($lane==='C'){
        $helper=(string)getenv('METADATA_RUNTIME_HELPER');
        if(realpath($helper)!=='/tmp/cdx-shadow-fetch-20261010.75qQz1/ProbeRuntime.php'||hash_file('sha256',$helper)!=='d7a1e080d9fe5a5aac4b4ec45b2987333cfef82eab2601c891c79a94d359ad46'){throw new RuntimeException('Frozen runtime helper gate');}
        require $helper;$identity=runtimeIdentity();$pdo=probePdo();$identity['mapped']=mappedComponents($identity);$identity['target']=independentTarget($pdo);
        $sql="SELECT COLUMN_ID,COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,CHAR_LENGTH,NULLABLE FROM USER_TAB_COLUMNS WHERE TABLE_NAME='YOSHOP_USER_GIFT_LOG' ORDER BY COLUMN_ID";
        $map=['ordinal'=>'column_id','name'=>'column_name','native_type'=>'data_type','precision'=>'data_precision','scale'=>'data_scale','char_length'=>'char_length','nullable'=>'nullable'];
    }else{throw new RuntimeException('Metadata lane gate');}
    $stage='gift_columns_only';$sqlHashes[]=hash('sha256',$sql);$columns=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    if(!$columns){throw new RuntimeException('Expected table metadata absent');}
    foreach($columns as &$raw){$col=[];foreach($map as $key=>$source){$col[$key]=$raw[$source];}foreach(['ordinal','precision','scale','char_length'] as $k){if($col[$k]!==null){$col[$k]=(int)$col[$k];}}$col['name']=strtolower($col['name']);$col['native_type']=strtolower($col['native_type']);$raw=$col;}unset($raw);
    echo json_encode(['status'=>'pass','lane'=>$lane,'scope'=>'one_table_columns_metadata_only','table'=>'yoshop_user_gift_log','identity'=>$identity,'columns'=>$columns,'sql_sha256'=>$sqlHashes,'business_row_reads'=>0,'dml'=>0,'ddl'=>0],JSON_UNESCAPED_SLASHES|JSON_PRESERVE_ZERO_FRACTION).PHP_EOL;
}catch(Throwable $e){echo json_encode(['status'=>'fail','stage'=>$stage,'class'=>get_class($e),'code'=>(string)$e->getCode(),'source_file'=>basename($e->getFile()),'line'=>$e->getLine(),'sql_sha256'=>$sqlHashes,'business_row_reads'=>0,'dml'=>0,'ddl'=>0]).PHP_EOL;exit(1);}
