LearnNewsExamplesServices
Frontmatter
title>-
authorneo-opus-ada
stateMerged
createdAtMay 30, 2026, 9:19 AM
updatedAtMay 30, 2026, 4:51 PM
closedAtMay 30, 2026, 4:51 PM
mergedAtMay 30, 2026, 4:51 PM
branchesdevagent/12139-deauto-trigger
urlhttps://github.com/neomjs/neo/pull/12197
Merged
neo-opus-ada
neo-opus-ada commented on May 30, 2026, 9:19 AM

Summary

PR A of #12139 — the de-auto-trigger surface. Makes the Memory-Core + Knowledge-Base MCP servers pure clients of an orchestrator-driven substrate: no boot-time self-triggers, no redundant autonomy tools. The orchestrator daemon already drives every one of these behaviors on its own schedule (#12065: dream / summary / golden-path / chroma / kbSync tasks), so the server-side flags were a redundant second source of truth — every SDK script + runSandman already hardcoded them to false defensively to avoid double-runs.

Deltas

  • 9 boot-time auto- config leaves removed* — MC: autoSummarize / autoStartDatabase / autoStartInference / autoDream / autoGoldenPath / realTimeMemoryParsing / autoIngestFileSystem; KB: autoStartDatabase / autoSync (+ env bindings).
  • Boot hooks removedSessionService startup-summarize, DreamService autoDream, GraphService autoIngestFileSystem, MemoryService realTimeMemoryParsing (already a dead no-op), KB DatabaseService autoSync.
  • On-disconnect summarize path removedSessionService.queueSummarizationJob + processPendingSummarizations + the Server.onSessionClosed call. (Summarization is orchestrator-driven; the summary task's drift sweep covers disconnected sessions. The path was already off under the default autoSummarize:false.)
  • 2 redundant MCP tools removedmanage_database (MC + KB) + summarize_sessions (MC). mutate_frontier kept (agent-facing primitive). Now-unused ChromaLifecycleService / DatabaseLifecycleService toolService imports dropped.
  • HealthService.buildDreamFeaturesBlock simplified to {lastDreamRun, lastGoldenPathRun} (the auto-* feature flags it projected are retired).
  • Defensive = false overrides removedai/services.mjs + runSandman.mjs.

The summarizeSessions method stays — the orchestrator's summarize-sessions.mjs runner calls it.

Test Evidence

341 affected specs pass (test-unit): HealthService.spec, Server.spec, both KB Config specs, DatabaseService.backup.spec (85 passed) + DreamService / SessionService / SessionSummarization / QueryReRanker / ResumeValidation / ConceptIngestor / MemorySessionIngestor / LazyEdgeDrainer / SemanticGraphExtractor (256 passed).

Evidence: node --check clean on all 16 changed files; grep confirms 0 residual aiConfig.autoX / .data.autoX consumers in prod. Updated specs: HealthService.spec (buildDreamFeaturesBlock → timestamps-only), Server.spec (removed the obsolete onSessionClosed → queueSummarizationJob test), knowledgeBaseConfigDefaults.mjs fixture (dropped the 2 retired KB leaves).

Post-Merge Validation

Behaviour-preserving: every removed flag defaulted to false (no boot trigger fired in the default config), and the orchestrator owns each behavior. No env-contract change for operators running the orchestrator (the intended topology).

Known trivial follow-up: a few unit specs retain harmless dead aiConfig.autoX = false setup-lines (no-ops now; all 341 specs green) — left out to keep this diff focused; a hygiene sweep will clear them.

FAIR-band: n/a — operator-directed lane (#12139, scope expanded 2026-05-30).

Refs #12139 (PR B = lifecycle-service collapse + ChromaManager simplification + healthcheck managed/strategy branching).

Authored by Claude Opus 4.8 (Claude Code, 1M context).

Follow-up: OpenAPI YAML ↔ handler consistency fix (commit 7d8f9a2c1)

The first push went red on unit — correct catch by @tobiu: MC + KB derive their MCP tool shapes from openapi.yaml, so removing the toolService.mjs handler registrations without removing the matching OpenAPI operations left the spec advertising handler-less tools. The derived consistency specs (serviceMapping keys === openapi operationIds) failed.

Fix (this commit):

  • ai/mcp/server/memory-core/openapi.yaml — removed /db/manage (manage_database) + /sessions/summarize (summarize_sessions).
  • ai/mcp/server/knowledge-base/openapi.yaml — removed /db/manage (manage_database).

No test edits needed — those specs are fully derived (parse the YAML → assert handler parity), so removing the ops greens them automatically.

Local verification: both YAMLs parse; serviceMappingoperationId parity restored (MC 29 ops, KB 9 ops); the consistency specs pass 72/72 (McpServerListToolsSmoke, OpenApiValidatorCompliance, McpServerToolLimits, BaseServer), including the two previously-red … listed tools align with openapi operationIds and serviceMapping keys assertions for memory-core + knowledge-base.

Awaiting CI re-run.


neo-opus-ada
neo-opus-ada commented on May 30, 2026, 3:22 PM