<?php
declare(strict_types=1);$_SERVER['HTTP_HOST']='owned-weight.invalid';require __DIR__.'/app.php';require __DIR__.'/data.php';$app=coreApp('PREFLIGHT');ck(!file_exists($runtime.'/preflight-ready.json')&&date('Y-m-d')==='2026-10-11'&&strtotime('2026-10-11')===1791648000,'Exact date/epoch and preflight once');$meta=[];foreach(['AI','ZHCT'] as $db){$id=readNative($db,$dm?"SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') schema_name FROM DUAL":'SELECT DATABASE() schema_name,VERSION() version');ck($id[0]['schema_name']===getenv('POC_'.$db.'_SCHEMA'),'Exact live target');if(!$dm)ck(strpos($id[0]['version'],'5.6.')===0,'MySQL5.6');$rows=readNative($db,$dm?'SELECT TABLE_NAME FROM USER_TABLES ORDER BY TABLE_NAME':"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_TYPE='BASE TABLE' ORDER BY TABLE_NAME");$meta[$db]=['schema'=>getenv('POC_'.$db.'_SCHEMA'),'tables'=>array_map('strtolower',array_column($rows,'table_name'))];}saveOnce('metadata-tables.json',$meta);CoreGate::$metadataMap=$meta;$schema=[];
foreach(['user'=>'user_id','staff'=>'id','user_weight'=>'id','user_weight_status'=>'id','user_course'=>'id','user_score'=>'id','user_score_log'=>'id','user_bind'=>'bind_id','user_health_metric_record'=>'id'] as $t=>$pk){$name='yoshop_'.$t;$arg=$dm?strtoupper($name):$name;$cols=readNative('AI',$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',[$arg]);ck(count($cols)>0&&in_array($pk,array_map('strtolower',array_column($cols,'column_name')),true),'Actual table/PK columns '.$t);
 $indexes=readNative('AI',$dm?'SELECT i.INDEX_NAME,i.UNIQUENESS,c.COLUMN_NAME,c.COLUMN_POSITION FROM USER_INDEXES i JOIN USER_IND_COLUMNS c ON i.INDEX_NAME=c.INDEX_NAME WHERE i.TABLE_NAME=? ORDER BY i.INDEX_NAME,c.COLUMN_POSITION':'SELECT INDEX_NAME,NON_UNIQUE,SEQ_IN_INDEX,COLUMN_NAME,COLLATION,SUB_PART FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY INDEX_NAME,SEQ_IN_INDEX',[$arg]);
 $constraints=readNative('AI',$dm?'SELECT c.CONSTRAINT_NAME,c.CONSTRAINT_TYPE,c.SEARCH_CONDITION,c.R_CONSTRAINT_NAME,cc.COLUMN_NAME FROM USER_CONSTRAINTS c LEFT JOIN USER_CONS_COLUMNS cc ON c.CONSTRAINT_NAME=cc.CONSTRAINT_NAME WHERE c.TABLE_NAME=? ORDER BY c.CONSTRAINT_NAME,cc.POSITION':'SELECT TABLE_NAME,CONSTRAINT_NAME,COLUMN_NAME,REFERENCED_TABLE_SCHEMA,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY CONSTRAINT_NAME,ORDINAL_POSITION',[$arg]);
 $triggers=readNative('AI',$dm?'SELECT * FROM USER_TRIGGERS WHERE TABLE_NAME=?':'SELECT TRIGGER_NAME,EVENT_MANIPULATION,ACTION_TIMING,ACTION_STATEMENT FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA=DATABASE() AND EVENT_OBJECT_TABLE=?',[$arg]);ck($triggers===[],'No unplanned business trigger '.$t);$schema[$t]=['columns'=>$cols,'indexes'=>$indexes,'constraints'=>$constraints,'triggers'=>$triggers];
 if($t==='user_bind')foreach($constraints as $c){$field=strtolower((string)($c['column_name']??''));if($field==='zhct_user_id')ck(empty($c['referenced_table_name'])&&($c['constraint_type']??'')!=='R','Bind0 has no FK');$condition=strtolower((string)($c['search_condition']??''));if(strpos($condition,'zhct_user_id')!==false)ck(preg_match('/zhct_user_id[" ]*is not null/i',$condition)===1||preg_match('/zhct_user_id[" ]*>= *0/i',$condition)===1,'Bind0 check expression must explicitly permit0');}
}
saveOnce('schema.json',$schema);$marker='CDXWGT11_'.$lane.'_U1';foreach([['user','nick_name',$marker],['user','mobile','00000009992'],['staff','name',$marker],['staff','phone','00000009992']] as [$t,$f,$v])ck((int)readNative('AI','SELECT COUNT(*) n FROM yoshop_'.$t.' WHERE '.$f.'=?',[$v])[0]['n']===0,'Fresh exact marker/phone collision0');$old=protect();$hashes=tableHashes();saveOnce('preflight-state.json',['source'=>sourceProof(),'old_protection'=>$old,'unrelated_fulltable_hashes'=>$hashes,'server_date'=>date('Y-m-d'),'start_epoch'=>strtotime('2026-10-11'),'HTTP'=>0,'DML'=>0]);echo json_encode(['lane'=>$lane,'tables'=>9,'SQL_before_warm'=>count(file($runtime.'/sql-budget.jsonl')),'HTTP'=>0,'DML'=>0]),"\n";
