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 () = Printf.printf "\n╔═══════════════════════════════════════════════════════╗\n"; Printf.printf "║ Solid Pill Boot Test ║\n"; Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n"; (* Create state *) let state = State.create () in (* Step 1: Boot ivory pill *) Printf.printf "[1] Booting ivory.pill...\n%!"; let ivory_path = Filename.concat project_root "pills/ivory.pill" in begin match Boot.boot_ivory state ivory_path with | Error (Boot.Invalid_pill msg) -> Printf.printf "✗ Ivory boot failed: %s\n%!" msg; exit 1 | Error (Boot.Unsupported msg) -> Printf.printf "✗ Unsupported: %s\n%!" msg; exit 1 | Ok () -> Printf.printf "✓ Ivory kernel loaded\n\n%!"; end; (* Step 2: Boot solid pill events *) Printf.printf "[2] Loading solid.pill events...\n%!"; let solid_path = Filename.concat project_root "pills/solid.pill" in (* Process all events *) begin match Boot.boot_solid state solid_path with | Error (Boot.Invalid_pill msg) -> Printf.printf "✗ Solid boot failed: %s\n%!" msg; exit 1 | Error (Boot.Unsupported msg) -> Printf.printf "✗ Unsupported: %s\n%!" msg; exit 1 | Ok () -> let eve = State.event_number state in Printf.printf "✓ Solid boot completed!\n%!"; Printf.printf " Events played: %Ld\n\n%!" eve; end; Printf.printf "╔═══════════════════════════════════════════════════════╗\n"; Printf.printf "║ Solid boot SUCCESS! 🎉 ║\n"; Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n"