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
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")
Context
Surfaced 2026-05-05 during DreamMode-inactivity investigation per @tobiu's hint. The
aiConfig.autoDreamandaiConfig.autoGoldenPathflags govern whether DreamPipeline + Golden Path Synthesis fire on Memory Core boot. Their actual values can diverge from the committedconfig.template.mjsbecause operator-localconfig.mjsis gitignored — operators (and agents) currently have no way to observe the deployed state without grepping the gitignored file.Empirical anchor: my
config.mjsshowsautoDream: false && process.env.AUTO_DREAM !== 'false'(deliberate operator-disable viafalse &&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 resolutionidentity(#10176) — stdio identity bindingproviders.embedding(#10723) — Chroma-side embedding providerproviders.summary(#10724 / PR #10771) — chat-API summary providerBut NOT:
autoDreamactual state — is GraphRAG extraction running on startup?autoGoldenPathactual state — is Golden Path Synthesis writingsandman_handoff.md?realTimeMemoryParsingactual state — adjacent feature flag with similar concernsautoIngestFileSystemactual state — dittoThese 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 exposesbuildIdentityBlock(#10176),buildTopologyBlock(#10127),buildEmbeddingProviderBlock(#10723); pattern of module-scope pure projection with isolated unit-test coverage is establishedaiConfig.autoDream,aiConfig.autoGoldenPath,aiConfig.realTimeMemoryParsing,aiConfig.autoIngestFileSystem— the boolean feature flagsai/daemons/DreamService.mjs:84-89— theif (aiConfig.data.autoDream)/if (aiConfig.data.autoGoldenPath)gates that govern DreamPipeline activationai/mcp/server/memory-core/config.template.mjs:43,49— env-var-driven default shape (correct)config.mjs(gitignored) — can diverge silently from templateThe Fix
Add
buildDreamFeaturesBlock(cfg)module-scope pure projection function toHealthService.mjs. Wire into healthcheck payload as new top-levelfeatures.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'sconfig.mjsproduced.lastDreamRun/lastGoldenPathRun— timestamp of last successful run if any;nullif never run. Surfaces whether disabled features have stale last-run state vs were deliberately turned off recently.Optional v2 extension: add a
divergedFromTemplateboolean detected by reading the template + comparing against deployed values. This catches the stale-config-vs-template case fromfeedback_defensive_pattern_parityfamily.Acceptance Criteria
buildDreamFeaturesBlock(cfg)added toHealthService.mjsas module-scope pure projectionfeatures.dreamblock wired into healthcheck payload (alongsidedatabase.topology,providers.embedding, etc.)autoDream,autoGoldenPath,realTimeMemoryParsing,autoIngestFileSystem(post-config-evaluation, not raw env var)learn/agentos/SharedDeployment.mdupdated withfeatures.dreamshape documentation (similar style to existingproviders.embeddingdoc)Out of Scope
divergedFromTemplatedetector — separate scope; can be follow-up if drift becomes a recurring issuelastDreamRunis ambitious for v1, ship asnullplaceholder + file follow-up to wire actual run-trackingproviders.auth— separate ticket #10770providers.neoEmbedding— separate ticket #10773Related
buildIdentityBlock), #10127 (buildTopologyBlock), #10723 (buildEmbeddingProviderBlock), #10724 (buildSummaryProviderBlockshipped via PR #10771)providers.auth), #10773 (providers.neoEmbedding)learn/agentos/DreamPipeline.mdOrigin Session ID: 23b9cbcd-4938-4a46-b21a-0d48dd12e7e7
Retrieval Hint:
query_raw_memories(query="healthcheck features dream autoDream autoGoldenPath observability config divergence operator-local")