fn try_read_dir(dir: &Path) -> Option<ReadDir>Expand description
Open dir for directory iteration. NotFound is the expected case
for the catalog’s projects/ tree on a fresh forge install and is
silent; real I/O failures (perm denied, broken FS) log at warn
so the user gets a triage signal rather than silently empty
catalog reads.