<?php
$lane=$argv[1]??'';$file=$argv[2]??'';
if(!in_array($lane,['B','C'],true)||!in_array($file,['probe.php','prepare.php','readback.php','internal-probe.php','logic-probe.php','query-layer-probe.php','source-audit.php','http-run.php','launch'],true))exit(78);
$pid=$lane==='B'?10001:112175;$root=$lane==='B'?'/tmp/zhct-http-store-mysql.dQTTBP':'/tmp/zhct-dm-poc-20260928.fcpiiN/store';
if(strpos(file_get_contents('/proc/'.$pid.'/cmdline'),$root.'/public')===false)throw new RuntimeException('Parent drift');
$env=[];foreach(explode("\0",file_get_contents('/proc/'.$pid.'/environ'))as $part){$kv=explode('=',$part,2);if(count($kv)===2)$env[$kv[0]]=$kv[1];}
if(($env['POC_EXTERNAL_STUBS']??'')!=='1'||($env['POC_REAL_QUEUE']??'0')!=='0')throw new RuntimeException('Unsafe parent');
$env['GP_LANE']=$lane;$env['GP_ROOT']=$root;
$phase=getenv('GP_PHASE')?:'red';if(!in_array($phase,['red','green'],true))throw new RuntimeException('Unknown phase');$env['GP_PHASE']=$phase;
$args=[$lane==='B'?'/usr/local/php7.3/bin/php':'/www/server/php/73/bin/php'];
if($lane==='C')array_push($args,'-c','/www/server/php/73/etc/php-cli.ini','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/libphp73_dm.so','-d','extension=/home/dmdba/dmdbms/drivers/php_pdo/php73_pdo_dm.so');
array_push($args,'-d','display_errors=0','-d','log_errors=0');
if($file==='launch'){$port=$lane==='B'?18551:18552;if($socket=@fsockopen('127.0.0.1',$port,$errno,$error,1)){fclose($socket);throw new RuntimeException('Own port occupied');}array_push($args,'-S','127.0.0.1:'.$port,'-t',__DIR__,__DIR__.'/index.php');$cmd='nohup '.implode(' ',array_map('escapeshellarg',$args)).' </dev/null >/dev/null 2>&1 & echo $!';}
else{array_push($args,__DIR__.'/private-evidence/'.$file);$cmd=implode(' ',array_map('escapeshellarg',$args));}
$proc=proc_open($cmd,[1=>STDOUT,2=>STDERR],$pipes,null,$env);exit(proc_close($proc));
