fn enumerate_sources(home: &Path) -> (Vec<SqliteSource>, bool)Expand description
Enumerate every per-(channel,version) and per-dev-branch objects.db under
home, pairing each with its own agents dir (the per-source fallback anchor;
the primary anchor in row_to_record is the global <home>/agents).
Returns (sources, incomplete). incomplete is true if any directory that
should be enumerable failed to read for a reason other than “doesn’t
exist” (permissions, a transient FS/network-home hiccup, a non-dir in the
way). The caller treats that like an unreadable DB and DEFERS the one-shot
marker so a future launch retries — otherwise a transiently-unreadable
versions/ (or dev/) would silently finalize the migration and omit that
tree’s named agents forever (codex P2 on #1389).