<?php
if(is_file(__DIR__.'/private-dispatch-extra.json')){$extra=json_decode(file_get_contents(__DIR__.'/private-dispatch-extra.json'),true);if(($extra['nonce']??'')!==''&&($extra['nonce']??'')===($_SERVER['HTTP_X_CDX_NONCE']??'')){require __DIR__.'/index-extra.php';exit;}}
$requestFile=__DIR__.'/private-dispatch.json';$request=is_file($requestFile)?json_decode(file_get_contents($requestFile),true):null;$path=parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH);
$reject=static function(){http_response_code(403);echo '{"harness_rejected":true}';exit;};
if(!$request||($_SERVER['REQUEST_METHOD']??'')!=='POST'||$path!==$request['case']['path']||($_SERVER['HTTP_X_CDX_NONCE']??'')!==$request['nonce']||($_SERVER['HTTP_TOKEN']??'')!==$request['token'])$reject();
require_once __DIR__.'/dispatch-gate.php';if(!cdxDispatchGate($request,$_SERVER['REQUEST_METHOD'],$path,$_POST,$_SERVER['HTTP_X_CDX_NONCE']??'',$_SERVER['HTTP_TOKEN']??''))$reject();
$lock=json_decode(file_get_contents(__DIR__.'/private-source-lock.json'),true);foreach($lock as $file=>$sha)if(hash_file('sha256',__DIR__.'/source/application/'.$file)!==$sha)$reject();
$label=$request['case']['label']??(string)$request['case']['step'];if(!preg_match('/^(?:[1-9]|10|11|R7|R9)$/D',$label))$reject();$sent=__DIR__.'/private-sent-'.$label;$handle=@fopen($sent,'x');if(!$handle)$reject();chmod($sent,0600);fwrite($handle,$request['nonce']);fclose($handle);
require __DIR__.'/common-write.php';$before=$source();$guard($before);$GLOBALS['CDX_PREPARED']=[];$GLOBALS['CDX_DML_COUNT']=0;$case=$request['case'];$started=microtime(true);$began=time();$body='';$error=null;$ids=[];
$nwSource=$source;$nwGuard=$guard;$nwSave=$save;register_shutdown_function(static function()use($case,$before,$nwSource,$nwGuard,$nwSave){$file=__DIR__.'/private-case-'.($case['label']??$case['step']).'.wire.json';if(is_file($file))return;try{$after=$nwSource();$nwGuard($after);$nwSave('private-case-'.($case['label']??$case['step']).'.shutdown.json',['case'=>$case,'before'=>$before,'after'=>$after,'prepared_SQL'=>$GLOBALS['CDX_PREPARED']??[],'oracle_native_SELECT'=>$GLOBALS['ORACLE_JOURNAL']??[],'fatal'=>error_get_last()]);}catch(Throwable $e){$nwSave('private-case-'.($case['label']??$case['step']).'.shutdown-error.json',['class'=>get_class($e),'message'=>$e->getMessage()]);}});
try{
 $fields=$case['params'];$op=$case['action']==='add'?'INSERT':'UPDATE';if($case['action']!=='add'&&!($case['table']==='nutrition_time'&&$case['action']==='update'))unset($fields['uuid']);if($case['action']==='delete')$fields=$case['table']==='nutrition_time'?['del_flag'=>'1']:['is_del'=>'0'];
 $GLOBALS['CDX_WRITE_CTX']=['case'=>$case['step'],'label'=>$case['label']??(string)$case['step'],'require_atomic'=>$lane==='C'&&isset($case['label']),'lane'=>$lane,'table'=>$case['table'],'op'=>$op,'fields'=>$fields,'uuid'=>$case['params']['uuid']??null,'creator_sha'=>'efcac9c3ed28940cbd075c4b8bdd20c5a6165984c1f413546f9620b5e8b9d044','nonce'=>$_SERVER['HTTP_X_CDX_NONCE'],'expected_nonce'=>$request['nonce']];
 $GLOBALS['CDX_OWNER_ORACLE']=static function($table,$uuid,$insert)use($q,$p,$marker){if($insert)return (int)$q('SELECT COUNT(*) AS CNT FROM '.$p.$table.' WHERE UUID=?',[$uuid])[0]['cnt'];$rows=$q('SELECT * FROM '.$p.$table.' WHERE UUID=?',[$uuid]);return count($rows)===1&&strpos($rows[0]['name'],$marker.'-')===0?1:0;};
 $_SERVER['PATH_INFO']=$path;require __DIR__.'/init-write.php';$response=\think\App::run();$body=$response->getContent();$status=$response->getCode();$decoded=json_decode($body,true);$check(is_array($decoded)&&array_keys($decoded)===['code','message','data'],'Exact JSON envelope, no HTML');$after=$source();$ids=$transition($before,$after,$case,$began,time());$check(($GLOBALS['CDX_DML_COUNT']??0)===($case['step']===5?0:1),'Exact expected DML statement count');
}catch(Throwable $e){$error=['class'=>get_class($e),'message'=>$e->getMessage(),'trace'=>$e->getTraceAsString()];$status=500;$after=$source();}
$record=['lane'=>$lane,'case'=>$case,'HTTP'=>$status,'body'=>$body,'body_sha256'=>hash('sha256',$body),'before'=>$before,'after'=>$after,'prepared_SQL'=>$GLOBALS['CDX_PREPARED'],'oracle_native_SELECT'=>$GLOBALS['ORACLE_JOURNAL'],'ids'=>$ids,'DML'=>$GLOBALS['CDX_DML_COUNT']??0,'error'=>$error,'began_epoch'=>$began,'ended_epoch'=>time(),'duration_seconds'=>microtime(true)-$started,'source_sha'=>$lock];$save('private-case-'.($case['label']??$case['step']).'.wire.json',$record);
if($error){http_response_code(500);echo '{"harness_failed":true}';}else{http_response_code($status);header('Content-Type: application/json; charset=utf-8');echo $body;}
