You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Config: some options are gated by a different section than the one they sit in, and the schema doesn't say so #715
Magic Context: 0.49.7 (checked that the relevant code is unchanged in 0.49.10) · Config:memory.enabled: false, dreamer.disable: true, smart_notes.enabled: false
This is about config structure, separate from #709 (OpenCode 2 wiring). In several places an option's position in the config, or its description, suggests one dependency while the code has another. I read the bundled dist/ and the shipped src/config/schema/magic-context.ts. Line numbers are approximate.
Hidden gates
memory.enabled: false disables every scheduled dreamer task.runDueTasksForProject returns 0 when projectMemoryEnabled === false (index-tagss15p.js ~11004), so a user with the dreamer on and memory off gets no dream runs. The schema describes memory.enabled only as cross-session memory. If this is intended, the schema and README should say so, and a startup warning when the dreamer is enabled with memory off would help.
Smart notes need the dreamer, but the tool doesn't know that up front. With the dreamer off, ctx_note still describes surface_condition, then returns "Error: Smart notes require dreamer to be enabled…" (index-tagss15p.js ~27605). The tool description only drops the smart-note text when smart_notes.enabled === false (~27555). It should also drop it when the dreamer isn't runnable, and the schema for smart_notes.enabled should mention the dependency.
User-observation collection ignores dreamer.disable.userMemoryCollectionEnabled checks only that the review-user-memories schedule is a non-empty string (index-ghc9f0n7.js ~178). The default schedule is non-empty, so with the dreamer disabled the historian may still be asked to collect observations that nothing will review. I haven't confirmed whether the historian prompt actually requests them when memory.enabled is false.
Options nested under sections they don't depend on
memory.auto_search and memory.git_commit_indexing sit under memory but work with memory.enabled: false. The schema says so in their descriptions, but the nesting still reads as "part of memory". I turned auto-search off along with memory for that reason, without realising it searches past conversation, not just memories.
dreamer.inject_docs controls whether project docs are injected into the prompt. On OpenCode 1 it applies with the dreamer disabled, so it isn't really a dreamer setting.
historian_timeout_ms and commit_cluster_trigger are historian settings at the top level rather than under historian.
Moving these would break existing configs, so aliases with a deprecation warning, or just clearer schema descriptions, would be enough.
Possibly dead
memory.retrieval_count_promotion_threshold: the only references I found in dist/ are schema definitions, with no reader. Either it's unused or I missed an indirect read.
Expected
The schema and README describe each option's real dependencies. Where an option has no effect because of another setting, log a warning at startup, the same way the #709 fix plans to for options unsupported on OpenCode 2.
Thanks, this is a careful report. We'll check each of the seven points against the current source and come back with which are real gaps, which are intended, and what we change. Where an option has no effect because of another setting, the schema descriptions should say so and Magic Context should log it once at startup. Point 3, observation collection while the dreamer is disabled, looks like wasted work in the summarizer if it holds.
Activity
magic-alfonso commentedon Oct 17, 2026
Thanks, this is a careful report. We'll check each of the seven points against the current source and come back with which are real gaps, which are intended, and what we change. Where an option has no effect because of another setting, the schema descriptions should say so and Magic Context should log it once at startup. Point 3, observation collection while the dreamer is disabled, looks like wasted work in the summarizer if it holds.