<?php
declare(strict_types=1);require __DIR__.'/bootstrap.php';$old=json_decode(file_get_contents('/tmp/cdx-ai-admin-device-dishes-read5-20261011/private/evidence/final-original.json'),true)['original'];$now=$own();$diff=[];$binary=[];foreach($old as $t=>$rows){if($rows===$now[$t])continue;$d=['table'=>$t,'old_count'=>count($rows),'new_count'=>count($now[$t]),'fields'=>[]];foreach($rows as $i=>$row)foreach($row as $k=>$v)if(!array_key_exists($i,$now[$t])||!array_key_exists($k,$now[$t][$i])||$v!==$now[$t][$i][$k]){$n=$now[$t][$i][$k]??null;$d['fields'][]=['row_index'=>$i,'column'=>$k,'old_type'=>gettype($v),'new_type'=>gettype($n),'old_sha'=>hash('sha256',serialize($v)),'new_sha'=>hash('sha256',serialize($n)),'new_utf8_valid'=>!is_string($n)||mb_check_encoding($n,'UTF-8')];$binary[]=['table'=>$t,'row_index'=>$i,'column'=>$k,'old_type'=>gettype($v),'old_bytes_base64'=>base64_encode(is_string($v)?$v:serialize($v)),'new_type'=>gettype($n),'new_bytes_base64'=>base64_encode(is_string($n)?$n:serialize($n))];}$diff[]=$d;}$persist('preflight-drift-bytes-original.json',$binary);file_put_contents(__DIR__.'/preflight-drift-'.$lane.'.json',json_encode($diff,JSON_PRETTY_PRINT));echo json_encode($diff),"\n";
