diff --git a/src/clayde/config.py b/src/clayde/config.py index 60a2b66..69dc51f 100644 --- a/src/clayde/config.py +++ b/src/clayde/config.py @@ -41,6 +41,7 @@ def effective_git_name(self) -> str: # Orchestrator behaviour loop_interval_s: int = 300 implement_max_retries: int = 3 + fs_enabled: bool = False fs_reviewer: str = "max-tet" fs_parallelism: int = 1 fs_loop_interval_s: int = 120 diff --git a/src/clayde/orchestrator.py b/src/clayde/orchestrator.py index d8c4272..460b163 100644 --- a/src/clayde/orchestrator.py +++ b/src/clayde/orchestrator.py @@ -58,7 +58,13 @@ async def worker_task() -> None: kb_path=settings.kb_path, ) - await asyncio.gather(server.serve(), worker_task(), _freeshard_loop(settings)) + tasks = [server.serve(), worker_task()] + if settings.fs_enabled: + log.info("Freeshard loop enabled") + tasks.append(_freeshard_loop(settings)) + else: + log.info("Freeshard loop disabled (CLAYDE_FS_ENABLED not set)") + await asyncio.gather(*tasks) def run_loop(): diff --git a/tests/test_config.py b/tests/test_config.py index 2476d5b..e8f5146 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -158,3 +158,9 @@ def test_kb_path_default(): from clayde.config import Settings s = Settings(_env_file=None) assert s.kb_path == "/home/clayde/knowledge_base" + + +def test_fs_enabled_defaults_off(): + from clayde.config import Settings + s = Settings(_env_file=None) + assert s.fs_enabled is False