<?php
declare(strict_types=1);
require __DIR__.'/native.php';require __DIR__.'/decimal-oracle.php';
ck(!file_exists($runtime.'/fresh-preflight.json'),'Fresh preflight once');sourceProof();
$pre=json_decode(file_get_contents($runtime.'/preflight-'.$lane.'.json'),true);$fresh=[];
foreach(['AI'=>['user','account_settlement','user_balance_log'],'ZHCT'=>['meal_order','staff','user','restaurants','prepay_order']] as $db=>$tables){
 $identity=readNative($db,$dm?"SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') schema_name FROM DUAL":'SELECT DATABASE() schema_name,VERSION() version,@@SESSION.sql_mode sql_mode,@@character_set_connection connection_charset');
 ck($identity[0]['schema_name']===getenv('POC_'.$db.'_SCHEMA'),'Approved live schema identity');if(!$dm)ck(strpos($identity[0]['version'],'5.6.')===0,'Approved MySQL5.6');
 foreach($tables as $t){$name=($db==='AI'?'yoshop_':'ydy_').$t;$cols=readNative($db,$dm?'SELECT COLUMN_NAME,DATA_TYPE,NULLABLE,DATA_DEFAULT,DATA_LENGTH,DATA_PRECISION,DATA_SCALE FROM USER_TAB_COLUMNS WHERE TABLE_NAME=? ORDER BY COLUMN_ID':'SELECT COLUMN_NAME,DATA_TYPE,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY ORDINAL_POSITION',[$dm?strtoupper($name):$name]);ck($cols===$pre['schema'][$db][$t]['columns'],'Fresh original metadata unchanged '.$db.'.'.$t);$fresh[$db][$t]=$cols;}
}
$before=ownSnapshot();$old=oldProtection();$prior=json_decode(file_get_contents($runtime.'/prior-persistence.json'),true);$pg=json_decode(file_get_contents($runtime.'/prior-guard.json'),true);
ck($before===$prior['own_fullrows'],'Exact old0.01/current prepay and all own fullrows stable');ck($old===$pg['old_protection'],'Original13 fullrow protection stable');
$ids=json_decode(file_get_contents($runtime.'/prepared.json'),true)['ids'];
$count=readNative('ZHCT','SELECT COUNT(*) n FROM ydy_meal_order WHERE remark=?',['CDXCORE11S1_DIRECT_002']);ck((int)$count[0]['n']===0,'New remark collision0');
$cast=$dm?'VARCHAR(40)':'CHAR';$money=readNative('AI','SELECT CAST(balance AS '.$cast.') balance_text,CAST(gift_balance AS '.$cast.') gift_text,CAST(pay_money AS '.$cast.') pay_text FROM yoshop_user WHERE user_id=?',[$ids['AI_U1']]);
foreach(['balance_text'=>'0.99','gift_text'=>'0.00','pay_text'=>'0.01'] as $k=>$v)ck(dec102text($money[0][$k])===$v,'Original server exact wallet lease '.$k);
ck($before['staff_department']===[]&&$before['one_card_account_map']===[]&&$before['user_subsidy']===[]&&$before['user_gift_log']===[],'Excluded funding/identity rows0');ck((int)$before['STORE_R1'][0]['stall_type']===1,'Original dine-in stall1');
saveOnce('fresh-preflight.json',['lane'=>$lane,'source'=>sourceProof(),'fresh_columns'=>$fresh,'own'=>$before,'old_protection'=>$old,'cash_server_text'=>$money,'remark_collision0'=>true,'SQL_READONLY'=>true,'HTTP'=>0,'DML'=>0,'at'=>date('c')]);
echo json_encode(['lane'=>$lane,'fresh_preflight'=>true,'source_files'=>6168,'HTTP'=>0,'DML'=>0]),"\n";
