<?php
require __DIR__.'/db.php';$baseline=json_decode(file_get_contents(__DIR__.'/private-baseline.json'),true);$lease=json_decode(file_get_contents(__DIR__.'/private-lease.json'),true);$pre=json_decode(file_get_contents(__DIR__.'/private-preflight.json'),true);$out=['lane'=>$lane,'own_tables'=>[],'references'=>[],'failure'=>null,'business_dml_by_verifier'=>0,'ddl'=>0];
try{foreach($modules as $module=>$scope){$table=$p.$scope['table'];$own=$q('SELECT * FROM '.$table.' WHERE STAFF_UUID=? AND '.$scope['marker'].' LIKE ? ORDER BY ID',[$lease['staff']['uuid'],$lease['marker'].'%']);$all=$q('SELECT * FROM '.$table.' ORDER BY ID');$columns=$lane==='B'?$q('SELECT COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA,DATETIME_PRECISION FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY ORDINAL_POSITION',[$table]):$q('SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH,DATA_SCALE,NULLABLE,DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME=? ORDER BY COLUMN_ID',[strtoupper($table)]);$out['own_tables'][$module]=['owned_rows'=>count($own),'all_rows'=>count($all),'all_rows_sha256'=>$hash($all),'natural_source_unchanged'=>$hash($all)===$hash($baseline['natural'][$module]),'metadata_unchanged'=>json_encode($columns)===json_encode($pre['tables'][$module]['columns']),'global_background_gate'=>$hash($all)===$hash($baseline['natural'][$module])?'unchanged_for_these_two_tables':'unknown-external-concurrency'];$check(!$own,'Owned row retained');$out['own_tables'][$module]['metadata_diff']=[];foreach($columns as $i=>$col)foreach($col as $k=>$v)if(json_encode($v)!==json_encode($pre['tables'][$module]['columns'][$i][$k]??null))$out['own_tables'][$module]['metadata_diff'][]=['column'=>$col['column_name'],'field'=>$k,'before'=>$pre['tables'][$module]['columns'][$i][$k]??null,'after'=>$v];}
 $current=['staff'=>$q('SELECT UUID,NAME,AI_USER_ID,IS_SHOW,JOB_STATUS FROM '.$p.'staff WHERE UUID=?',[$lease['staff']['uuid']])[0],'user'=>$q('SELECT ID,UUID,STAFF_UUID,ACCOUNT,TYPE FROM '.$p.'user WHERE ID=?',[$lease['user']['id']])[0],'actor'=>$q('SELECT ID,UUID,STAFF_UUID,ACCOUNT,TYPE,IS_DELETE FROM '.$p.'user WHERE ID=?',[$lease['actor']['id']])[0]];foreach($current as $key=>$row){$out['references'][$key]=['unchanged'=>$row===$baseline[$key],'sha256'=>$hash($row)];$check($row===$baseline[$key],'Consumed reference drift '.$key);}
}catch(Throwable $e){$out['failure']=['class'=>get_class($e),'reason_sha256'=>hash('sha256',$e->getMessage())];}
$save('sanitized-finish.json',$out);echo json_encode($out),"\n";exit($out['failure']?2:0);
