From e5edb58a19d2d3f6f3a3b38ce49d6337ff745217 Mon Sep 17 00:00:00 2001 From: ClaudioDrews Date: Wed, 3 Jun 2026 11:44:22 -0300 Subject: [PATCH] fix: resolve all 8 Phase 3 config/path issues V3.01-V3.03: Replace hardcoded Path.home() / 'Vault' with os.environ.get() - wiki_continuous_ingest.py: WIKI_ROOT via env with fallback - bulk_wiki_ingest.py: WIKI_ROOT + EMBEDDING_MODEL via env with fallback - backfill_decay_metadata.py: VAULT_ROOT via VAULT_PATH env with fallback V3.04-V3.05: Replace hardcoded EMBEDDING_MODEL string with os.environ.get() - context_enhancer.py + bulk_wiki_ingest.py V3.06: Replace ~/.hermes til fallback with ./hermes (Docker doesn't expand ~) V3.07: Add /fabric volume mount (~/Vault/fabric:/fabric:rw) V3.08: Add Qdrant healthcheck + change worker qdrant dependency from service_started to service_healthy --- docker/docker-compose.yml | 11 +++++++++-- scripts/backfill_decay_metadata.py | 2 +- scripts/bulk_wiki_ingest.py | 4 ++-- scripts/context_enhancer.py | 2 +- scripts/wiki_continuous_ingest.py | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index c449f94..90bef21 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -39,6 +39,12 @@ services: environment: QDRANT__SERVICE__HTTP_PORT: "6333" QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY:-} + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:6333/healthz"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 10s worker: build: @@ -47,7 +53,7 @@ services: restart: unless-stopped depends_on: qdrant: - condition: service_started + condition: service_healthy redis: condition: service_healthy environment: @@ -66,7 +72,8 @@ services: LOG_LEVEL: ${LOG_LEVEL:-INFO} volumes: - ${WIKI_PATH:-./wiki}:/wiki:ro - - ${HERMES_HOME:-~/.hermes}:/hermes:rw + - ${HERMES_HOME:-./hermes}:/hermes:rw + - ${FABRIC_DIR:-./fabric}:/fabric:rw volumes: redis_data: diff --git a/scripts/backfill_decay_metadata.py b/scripts/backfill_decay_metadata.py index efed499..c9c5b4b 100644 --- a/scripts/backfill_decay_metadata.py +++ b/scripts/backfill_decay_metadata.py @@ -50,7 +50,7 @@ COLLECTION = "knowledge_base" BATCH_SIZE = 200 SCROLL_LIMIT = 200 LOG_FILE = Path.home() / ".hermes/logs/decay_scanner.log" -VAULT_ROOT = Path.home() / "Vault" +VAULT_ROOT = Path(os.environ.get("VAULT_PATH", str(Path.home() / "Vault"))) # ─── Heuristics ────────────────────────────────────────────────────────────── CONFIDENCE_BY_SOURCE = { diff --git a/scripts/bulk_wiki_ingest.py b/scripts/bulk_wiki_ingest.py index 3aca381..380e7bd 100644 --- a/scripts/bulk_wiki_ingest.py +++ b/scripts/bulk_wiki_ingest.py @@ -29,8 +29,8 @@ except ImportError: OPENROUTER_KEY = os.environ.get("OPENROUTER_API_KEY") QDRANT_URL = "http://localhost:6333" COLLECTION = "knowledge_base" -WIKI_ROOT = Path.home() / "Vault" / "wiki" -EMBEDDING_MODEL = "qwen/qwen3-embedding-8b" +WIKI_ROOT = Path(os.environ.get("WIKI_ROOT", str(Path.home() / "Vault" / "wiki"))) +EMBEDDING_MODEL = os.environ.get("EMBEDDING_MODEL", "qwen/qwen3-embedding-8b") EMBEDDING_DIMS = 4096 MAX_TEXT_LEN = 8000 # truncate text for embedding (model context limit) BATCH_SIZE = 8 # parallel embedding requests diff --git a/scripts/context_enhancer.py b/scripts/context_enhancer.py index 35498e3..3023c95 100755 --- a/scripts/context_enhancer.py +++ b/scripts/context_enhancer.py @@ -41,7 +41,7 @@ if not OPENROUTER_KEY: QDRANT_URL = os.environ.get("QDRANT_URL", "http://localhost:6333") COLLECTION = os.environ.get("QDRANT_COLLECTION", "knowledge_base") -EMBEDDING_MODEL = "qwen/qwen3-embedding-8b" +EMBEDDING_MODEL = os.environ.get("EMBEDDING_MODEL", "qwen/qwen3-embedding-8b") TOP_K_DEFAULT = 3 SCORE_THRESHOLD_DEFAULT = 0.55 MAX_TEXT_LEN = 8000 diff --git a/scripts/wiki_continuous_ingest.py b/scripts/wiki_continuous_ingest.py index 57acbd9..7ba93bb 100644 --- a/scripts/wiki_continuous_ingest.py +++ b/scripts/wiki_continuous_ingest.py @@ -22,7 +22,7 @@ ENV_PATH = Path.home() / "ai-stack" / "cognitive-agent" / ".env" if ENV_PATH.exists(): load_dotenv(ENV_PATH) -WIKI_ROOT = Path.home() / "Vault" / "wiki" +WIKI_ROOT = Path(os.environ.get("WIKI_ROOT", str(Path.home() / "Vault" / "wiki"))) STATE_FILE = Path.home() / ".hermes" / "wiki_ingest_state.json" FAILURES_FILE = Path.home() / ".hermes" / "wiki_ingest_failures.json" REDIS_PASSWORD = os.environ.get("REDIS_PASSWORD", "")