diff --git a/lib/gbrain-local-status.ts b/lib/gbrain-local-status.ts index f546a93bc7..ca26211af4 100644 --- a/lib/gbrain-local-status.ts +++ b/lib/gbrain-local-status.ts @@ -35,6 +35,7 @@ import { } from "fs"; import { homedir } from "os"; import { dirname, join } from "path"; +import { buildGbrainEnv } from "./gbrain-exec"; export type LocalEngineStatus = | "ok" @@ -220,12 +221,20 @@ function freshClassify(env?: NodeJS.ProcessEnv): LocalEngineStatus { if (!existsSync(gbrainConfigPath())) return "missing-config"; // 3. Probe gbrain sources list. + // + // Seed DATABASE_URL from ~/.gbrain/config.json (via buildGbrainEnv, the + // same helper the sync orchestrator uses in lib/gbrain-exec.ts). Without + // this, Bun autoloads a project's .env when the probe runs inside a repo + // that defines its own DATABASE_URL (e.g. an app DB on a different port), + // gbrain connects to the wrong DB, and the classifier falsely reports + // broken-db. This also makes the result cwd-independent, so the 60s cache + // can no longer propagate a poisoned negative to clean directories. try { execFileSync("gbrain", ["sources", "list", "--json"], { encoding: "utf-8", timeout: PROBE_TIMEOUT_MS, stdio: ["ignore", "pipe", "pipe"], - env: env ?? process.env, + env: buildGbrainEnv({ baseEnv: env ?? process.env }), }); return "ok"; } catch (err) {