LearnNewsExamplesServices
Frontmatter
title>-
authortobiu
stateMerged
createdAtApr 11, 2026, 12:24 PM
updatedAtApr 11, 2026, 12:32 PM
closedAtApr 11, 2026, 12:32 PM
mergedAtApr 11, 2026, 12:32 PM
branchesdevagent/9881-disable-daemon-autostart
urlhttps://github.com/neomjs/neo/pull/9882
Merged
tobiu
tobiu commented on Apr 11, 2026, 12:24 PM

Resolves #9881

Context & Execution Summary

This Pull Request resolves the build pipeline error Error: spawn chroma ENOENT seen during CI data-sync runs.

The original failure occurred because ai/services.mjs was inadvertently triggering the initAsync lifecycle on MCP lifecycle managers when the SDK was required by the labels.mjs build script, trying to unconditionally spawn the chroma and inference binaries in headless CLI environments.

Architecture Alignment & Changes

  • Targeted Daemon Configurations: Introduced completely scoped, targeted environment variables to override auto-start mechanics:
    • NEO_KB_AUTO_START_DATABASE (Knowledge Base)
    • NEO_MEM_AUTO_START_DATABASE (Memory Core)
    • NEO_MEM_AUTO_START_INFERENCE (Memory Core)
  • Lifecycle Pre-Flight: Updated DatabaseLifecycleService, ChromaLifecycleService, and InferenceLifecycleService to gate binary execution behind these configurable flags.
  • SDK Overrides: Explicitly clamped these flags to false in ai/services.mjs, ensuring SDK importers stay 100% headless unless explicitly overwritten.

Definition of Done

  • Validation Confirmed: node ./buildScripts/docs/index/labels.mjs executes natively without ENOENT daemon errors.
tobiu
tobiu commented on Apr 11, 2026, 12:31 PM

Input from Antigravity (Gemini 3.1 Pro):

✦ # PR Review Summary

Status: Approved

The targeted daemon flags correctly isolate lifecycle commands. The build script was verified to run headlessly without ENOENT.


📊 Evaluation Metrics

  • [ARCH_ALIGNMENT]: 100 - Perfectly aligns with the process.env override mechanic without hard-coding dependency requirements across the swarm servers.
  • [CONTENT_COMPLETENESS]: 100 - Fat Ticket PR description provides full context. Config files mirror template variables cleanly.
  • [EXECUTION_QUALITY]: 90 - Build scripts no longer attempt to spawn chroma dynamically based on SDK service logic.
  • [PRODUCTIVITY]: 100 - Successfully prevents daemon spawning on generic Github Action runners.
  • [IMPACT]: 70 - Highly important for unblocking CI/CD deployment pipelines, though structurally straightforward.
  • [COMPLEXITY]: 10 - Isolated mapping changes to configuration constants and specific if gates.
  • [EFFORT_PROFILE]: Quick Win - High ROI for pipeline stability.

🕸️ Context & Graph Linking

  • Target Epic / Issue ID: Resolves #9881
  • Related Graph Nodes: Pipeline, Daemon Lifecycles, GitHub Actions.

🧠 Graph Ingestion Notes

  • [KB_GAP]: None observed.
  • [TOOLING_GAP]: N/A
  • [RETROSPECTIVE]: Excellent architectural hygiene ensuring SDK components strictly behave "headlessly" by default unless explicitly configured otherwise via environment flags. This prevents CLI scripts from incurring the weight of local binaries.

📋 Required Actions

To proceed with merging, please address the following:

  • Proceed with Squash Merge.

This PR is approved.