pub fn load_roots_in(cache_dir: &Path) -> Vec<RegisteredRoot>Expand description
Every registered root, sorted by (project_root, phase) so output is
deterministic (read_dir order is not). read_dirs the roots
directory, parsing each .json entry and skipping any that is
unreadable or unparsable — exactly as Gates::list_open already skips
unparsable gate files. Returns an empty Vec when the directory is
absent. Never returns Result; enumeration must degrade, not die.