diff --git a/src/auto_commit_service/scheduler/__pycache__/daemon.cpython-312.pyc b/src/auto_commit_service/scheduler/__pycache__/daemon.cpython-312.pyc index c159814..94dc027 100644 Binary files a/src/auto_commit_service/scheduler/__pycache__/daemon.cpython-312.pyc and b/src/auto_commit_service/scheduler/__pycache__/daemon.cpython-312.pyc differ diff --git a/src/auto_commit_service/scheduler/daemon.py b/src/auto_commit_service/scheduler/daemon.py index 859ec72..7e31a61 100644 --- a/src/auto_commit_service/scheduler/daemon.py +++ b/src/auto_commit_service/scheduler/daemon.py @@ -390,6 +390,26 @@ class CommitDaemon: f"{len(results) - repos_committed - repos_failed} unchanged" ) + # Auto-refresh cache if any "Repository not found" errors occurred + if self.settings.recursive_discovery and repos_failed > 0: + not_found_errors = [ + r for r in results + if r.status == ProcessStatus.ERROR and + r.error and "not found" in r.error.lower() + ] + if not_found_errors: + logger.warning( + f"Detected {len(not_found_errors)} missing repositories, " + f"refreshing cache..." + ) + old_count = len(self.repos) + self.repos = self._discover_and_cache_repos() + new_count = len(self.repos) + logger.info( + f"Cache refreshed: {old_count} -> {new_count} repos " + f"({new_count - old_count:+d})" + ) + return cycle_result async def trigger_cycle(self) -> CycleResult: