open Nock_lib let rec find_project_root dir = let pills_dir = Filename.concat dir "pills" in if Sys.file_exists pills_dir && Sys.is_directory pills_dir then dir else let parent = Filename.dirname dir in if String.equal parent dir then failwith "unable to locate project root containing pills/" else find_project_root parent let project_root = match Sys.getenv_opt "NEOVERE_ROOT" with | Some root -> root | None -> let exe_dir = Filename.dirname Sys.executable_name in find_project_root exe_dir let rec print_noun_structure noun depth = let indent = String.make (depth * 2) ' ' in match noun with | Noun.Atom z -> let size = Z.numbits z in if size <= 64 then Printf.printf "%sAtom: %s (0x%s, %d bits)\n" indent (Z.to_string z) (Z.format "%x" z) size else Printf.printf "%sAtom: \n" indent size | Noun.Cell (h, t) -> Printf.printf "%sCell:\n" indent; Printf.printf "%s Head:\n" indent; print_noun_structure h (depth + 2); Printf.printf "%s Tail:\n" indent; print_noun_structure t (depth + 2) let () = if Array.length Sys.argv < 2 then begin Printf.printf "Usage: %s \n" Sys.argv.(0); exit 1 end; let event_num = Int64.of_string Sys.argv.(1) in let pier_path = Filename.concat project_root "test-pier" in if not (Sys.file_exists pier_path) then begin Printf.printf "Test pier not found at: %s\n" pier_path; Printf.printf "Run test_pier_boot.exe first\n"; exit 1 end; Printf.printf "\n╔═══════════════════════════════════════════════════════╗\n"; Printf.printf "║ Event Inspector ║\n"; Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n"; let eventlog = Eventlog.create ~enabled:false pier_path in Printf.printf "Reading event %Ld from test pier...\n\n" event_num; let event = Eventlog.read_event eventlog event_num in Printf.printf "Event structure:\n"; print_noun_structure event 0; Printf.printf "\n"; (* Check if it's a timestamped event [timestamp data] *) match event with | Noun.Cell (Noun.Atom timestamp, event_data) -> Printf.printf "✓ Event is properly timestamped!\n"; Printf.printf " Timestamp: %s\n" (Z.to_string timestamp); Printf.printf " Timestamp (hex): 0x%s\n" (Z.format "%x" timestamp); Printf.printf " Timestamp bits: %d\n" (Z.numbits timestamp); Printf.printf "\n Event data structure:\n"; print_noun_structure event_data 2 | _ -> Printf.printf "⚠ Event does NOT appear to be timestamped!\n"; Printf.printf " Expected: [timestamp event_data]\n"; Printf.printf " Got something else\n"