<?php
$lane=$argv[1]??'';$mode=$argv[2]??'--gate';if(!in_array($lane,['B','C'],true)||!in_array($mode,['--gate','--read'],true))exit(78);$env=[];foreach(['PATH','LANG','TZ','LD_LIBRARY_PATH','DM_HOME','NLS_LANG','DM_CHARSET','DM_SVC_PATH','LC_ALL','LC_CTYPE']as $k)if(getenv($k)!==false)$env[$k]=getenv($k);
if($lane==='B'){$file='/workspace/zhct/zhctproject/ai_api/.env.local';if(realpath($file)!==$file||is_link($file))throw new RuntimeException('Original local AI config path');$ini=parse_ini_file($file,true,INI_SCANNER_RAW);foreach(['DATABASE'=>'AI','DATABASE_ZHCT'=>'ZHCT']as $section=>$db){$v=array_merge(['HOSTPORT'=>'3306','CHARSET'=>'utf8','PREFIX'=>$db==='AI'?'yoshop_':'ydy_'],$ini[$section]);foreach(['HOSTNAME'=>'HOST','HOSTPORT'=>'PORT','DATABASE'=>'SCHEMA','USERNAME'=>'USER','PASSWORD'=>'PASSWORD','CHARSET'=>'CHARSET','PREFIX'=>'PREFIX']as $f=>$t)$env['POC_'.$db.'_'.$t]=$v[$f];}$cfg=require '/workspace/zhct/zhctproject/store/application/config/local/database.php';foreach(['hostname'=>'HOST','database'=>'SCHEMA','username'=>'USER','password'=>'PASSWORD']as $k=>$v)if((string)$cfg[$k]!==$env['POC_ZHCT_'.$v])throw new RuntimeException('Original Store/AI code-local target disagree');unset($cfg,$ini,$v);$php=['/usr/local/php7.4/bin/php'];}
else{foreach([[53772,'127.0.0.1:18102','AI'],[112175,'/tmp/zhct-dm-poc-20260928.fcpiiN/store','ZHCT']]as $spec){[$pid,$needle,$db]=$spec;if(strpos((string)file_get_contents('/proc/'.$pid.'/cmdline'),$needle)===false)throw new RuntimeException('Original nonprod parent identity');foreach(explode("\0",(string)file_get_contents('/proc/'.$pid.'/environ'))as $entry){$pair=explode('=',$entry,2);if(count($pair)!==2)continue;foreach(['HOST','PORT','SCHEMA','USER','PASSWORD']as $k)if($pair[0]===($db==='AI'?'POC_AI_':'POC_').$k)$env['POC_'.$db.'_'.$k]=$pair[1];}$env['POC_'.$db.'_CHARSET']='utf8';}foreach(['AI'=>'5238','ZHCT'=>'5237']as $db=>$port)if(($env['POC_'.$db.'_HOST']??'')!=='127.0.0.1'||($env['POC_'.$db.'_PORT']??'')!==$port||($env['POC_'.$db.'_SCHEMA']??'')!==($db==='AI'?'AIZHCT_APP':'ZHCT_APP'))throw new RuntimeException('Approved C loopback two instances');$php=['/www/server/php/74/bin/php','-c','/www/server/php/74/etc/php-cli.ini','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/libphp74_dm.so','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/php74_pdo_dm.so'];}
if($mode==='--read'){if(!isset($argv[3],$argv[4])||preg_match('/^[0-9a-f]{64}$/D',$argv[3])!==1||preg_match('/^[0-9a-f]{64}$/D',$argv[4])!==1)throw new RuntimeException('Exact approved read-plan/reader SHA');$env['AF_READ_PLAN_SHA']=$argv[3];$env['AF_READ_RUNNER_SHA']=$argv[4];}
$cmd=array_merge($php,[__DIR__.'/reader.php',$lane,$mode,__DIR__.'/private']);$process=proc_open(implode(' ',array_map('escapeshellarg',$cmd)),[0=>STDIN,1=>STDOUT,2=>STDERR],$pipes,null,$env);if(!is_resource($process))throw new RuntimeException('Own short readonly child');exit(proc_close($process));
