LearnNewsExamplesServices
Frontmatter
id10779
titleHealthcheck observability: features.dream block (autoDream + autoGoldenPath actual state)
stateClosed
labels
enhancementaiarchitecture
assignees[]
createdAtMay 5, 2026, 9:30 PM
updatedAtMay 13, 2026, 3:50 PM
githubUrlhttps://github.com/neomjs/neo/issues/10779
authorneo-opus-4-7
commentsCount0
parentIssue10671
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 13, 2026, 3:50 PM

Healthcheck observability: features.dream block (autoDream + autoGoldenPath actual state)

Closedenhancementaiarchitecture
neo-opus-4-7
neo-opus-4-7 commented on May 5, 2026, 9:30 PM

Context

Surfaced 2026-05-05 during DreamMode-inactivity investigation per @tobiu's hint. The aiConfig.autoDream and aiConfig.autoGoldenPath flags govern whether DreamPipeline + Golden Path Synthesis fire on Memory Core boot. Their actual values can diverge from the committed config.template.mjs because operator-local config.mjs is gitignored — operators (and agents) currently have no way to observe the deployed state without grepping the gitignored file.

Empirical anchor: my config.mjs shows autoDream: false && process.env.AUTO_DREAM !== 'false' (deliberate operator-disable via false && short-circuit, modified 2026-05-05 13:53). This was invisible from the healthcheck — I had to discover it by reading the gitignored file directly. Operators relying on healthcheck for boot-state verification will not see the disable.

The Problem

The Memory Core healthcheck currently surfaces:

  • database.topology (#10127) — Chroma coordinate resolution
  • identity (#10176) — stdio identity binding
  • providers.embedding (#10723) — Chroma-side embedding provider
  • providers.summary (#10724 / PR #10771) — chat-API summary provider

But NOT:

  • autoDream actual state — is GraphRAG extraction running on startup?
  • autoGoldenPath actual state — is Golden Path Synthesis writing sandman_handoff.md?
  • realTimeMemoryParsing actual state — adjacent feature flag with similar concerns
  • autoIngestFileSystem actual state — ditto

These flags govern whether the Dream/REM substrate is operationally active. With them disabled, MC boots but doesn't perform the prioritization-substrate work that the broader swarm depends on (per @tobiu's session framing: "DreamMode currently not active, and this feels like a problem"). Healthcheck should surface this so operators don't have to grep gitignored configs to verify state.

The Architectural Reality

  • ai/mcp/server/memory-core/services/HealthService.mjs — currently exposes buildIdentityBlock (#10176), buildTopologyBlock (#10127), buildEmbeddingProviderBlock (#10723); pattern of module-scope pure projection with isolated unit-test coverage is established
  • aiConfig.autoDream, aiConfig.autoGoldenPath, aiConfig.realTimeMemoryParsing, aiConfig.autoIngestFileSystem — the boolean feature flags
  • ai/daemons/DreamService.mjs:84-89 — the if (aiConfig.data.autoDream) / if (aiConfig.data.autoGoldenPath) gates that govern DreamPipeline activation
  • ai/mcp/server/memory-core/config.template.mjs:43,49 — env-var-driven default shape (correct)
  • Operator-local config.mjs (gitignored) — can diverge silently from template

The Fix

Add buildDreamFeaturesBlock(cfg) module-scope pure projection function to HealthService.mjs. Wire into healthcheck payload as new top-level features.dream:

"features": {
    "dream": {
        "autoDream": false,
        "autoGoldenPath": false,
        "realTimeMemoryParsing": false,
        "autoIngestFileSystem": false,
        "lastDreamRun": "<ISO timestamp or null>",
        "lastGoldenPathRun": "<ISO timestamp or null>"
    }
}

Field semantics:

  • autoDream / autoGoldenPath / realTimeMemoryParsing / autoIngestFileSystem — boolean ACTUAL value at boot (not env var). Reflects whatever short-circuit / override the operator's config.mjs produced.
  • lastDreamRun / lastGoldenPathRun — timestamp of last successful run if any; null if never run. Surfaces whether disabled features have stale last-run state vs were deliberately turned off recently.

Optional v2 extension: add a divergedFromTemplate boolean detected by reading the template + comparing against deployed values. This catches the stale-config-vs-template case from feedback_defensive_pattern_parity family.

Acceptance Criteria

  • buildDreamFeaturesBlock(cfg) added to HealthService.mjs as module-scope pure projection
  • features.dream block wired into healthcheck payload (alongside database.topology, providers.embedding, etc.)
  • Block reports actual boolean values for autoDream, autoGoldenPath, realTimeMemoryParsing, autoIngestFileSystem (post-config-evaluation, not raw env var)
  • Unit tests cover combinations: all-true, all-false, mixed (the realistic operator-state where some are env-var-driven and some are short-circuit-disabled)
  • learn/agentos/SharedDeployment.md updated with features.dream shape documentation (similar style to existing providers.embedding doc)
  • No secret/sensitive value leaks (the boolean flags themselves aren't sensitive but verify pattern adheres to "surface, don't obscure" without leaking adjacent secrets)

Out of Scope

  • v2 divergedFromTemplate detector — separate scope; can be follow-up if drift becomes a recurring issue
  • Last-run timestamp persistence layer — if lastDreamRun is ambitious for v1, ship as null placeholder + file follow-up to wire actual run-tracking
  • Healthcheck providers.auth — separate ticket #10770
  • Healthcheck providers.neoEmbedding — separate ticket #10773

Related

  • Empirical anchor: session 2026-05-05 #10494 investigation; @tobiu's hint about operator-local DreamMode disable
  • Pattern precedents: #10176 (buildIdentityBlock), #10127 (buildTopologyBlock), #10723 (buildEmbeddingProviderBlock), #10724 (buildSummaryProviderBlock shipped via PR #10771)
  • Adjacent observability follow-ups: #10770 (providers.auth), #10773 (providers.neoEmbedding)
  • Underlying substrate: #10494 (DreamService regression), #10120 (Golden Path external-visibility-gap), learn/agentos/DreamPipeline.md

Origin Session ID: 23b9cbcd-4938-4a46-b21a-0d48dd12e7e7

Retrieval Hint: query_raw_memories(query="healthcheck features dream autoDream autoGoldenPath observability config divergence operator-local")

tobiu referenced in commit 43f1c75 - "feat(memory-core): surface dream daemon flags in healthcheck (#10779) (#11304) on May 13, 2026, 3:50 PM
tobiu closed this issue on May 13, 2026, 3:50 PM