<?php
declare(strict_types=1);
require __DIR__.'/bootstrap.php';
$map=json_decode((string)file_get_contents($runtime.'/private-owned-map.json'),true);
$check((int)($map['staff_id']??0)>0&&(int)($map['user_id']??0)>0&&($map['tenant']??0)===$tenant,'Reference owned map');
// Read-only logical-reference safety check, no natural rows or ID values output.
$columns=$dm?$query("SELECT TABLE_NAME,COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME LIKE 'YOSHOP_%' AND COLUMN_NAME IN ('USER_ID','STAFF_ID') ORDER BY TABLE_NAME,COLUMN_NAME"):
    $query("SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME LIKE 'yoshop_%' AND COLUMN_NAME IN ('user_id','staff_id') ORDER BY TABLE_NAME,COLUMN_NAME");
$proof=[];$start=microtime(true);foreach($columns as $col){$table=strtolower($col['table_name']);$key=strtolower($col['column_name']);
    $check(preg_match('/^yoshop_[a-z0-9_]+$/D',$table)===1&&in_array($key,['staff_id','user_id'],true),'Reference metadata identifier');
    $value=$key==='staff_id'?(int)$map['staff_id']:(int)$map['user_id'];$n=(int)$query('SELECT COUNT(*) n FROM '.$table.' WHERE '.$key.'=?',[$value])[0]['n'];
    $proof[]=['table'=>$table,'column'=>$key,'remaining_owned_references'=>$n];}
$ok=!in_array(false,array_map(static function(array $p):bool{return $p['remaining_owned_references']===0;},$proof),true);
echo json_encode(['lane'=>$lane,'read_only'=>true,'business_dml'=>0,'reference_columns_checked'=>count($proof),'all_self_references_zero'=>$ok,
    'elapsed_ms'=>(int)round((microtime(true)-$start)*1000),'references'=>$proof],JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES),"\n";exit($ok?0:1);
