Skip to content

Dreamer policy is hardcoded to software-development workflows — make per-project policy configurable (task prompts, memory categories, maintained docs) #358

Description

@Ema-prowler

Short description

Magic Context's memory machinery (historian, dreamer, injection) works well as a mechanism, but its policy layer is hardcoded to software development: the dreamer task prompts, the memory taxonomy, and the maintained docs list are compiled into the plugin and cannot be adapted to non-code projects (security, research, operations, writing, etc.). For a project that is not a code repository, the system still classifies memories with development-oriented categories and maintains ARCHITECTURE.md / STRUCTURE.md as if every project were a repo.

What problem does this solve?

The plugin manages each project's memory with a fixed policy designed for
software repositories. That policy shows up in three places:

  1. The dreamer runs its tasks (curation, verification, user-memory review,
    documentation maintenance) with internal prompts written in development
    language. For a project that is not code, the agent classifies and
    organizes memory with the wrong perspective: it looks for "testing
    conventions", "releases" or "commits" where none exist.

  2. Memory categories are locked to a development taxonomy (PROJECT_RULES,
    ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING). Memories from other
    domains get forced into categories that do not represent their real
    work, degrading curation usefulness.

  3. Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md,
    software architecture files. Projects that are not code repositories
    receive documentation that does not fit them, or cannot maintain the
    documentation that would actually serve them.

The result: the memory mechanism (historian, compaction, injection) works
for any project, but the policy layer limits it to development projects.
Users from other domains end up with less useful classification, irrelevant
documentation, and dreamer prompts that do not understand their work.

Proposed solution

Decouple the MECHANISM (historian, compaction, injection, storage — the core
of how the plugin stores, organizes and recalls memory) from the POLICY (how
the dreamer should think about THIS project). The core must remain intact;
the proposal is to open the policy layer to configuration so each project
can adapt it to its domain:

  1. Project awareness for the dreamer.
    The dreamer runs tasks (curation, verification, user-memory review, doc
    maintenance, etc.), each with an internal system prompt. Today those
    prompts are fixed and speak in development language (codebase, repo,
    releases, testing). The proposal: let the user give the dreamer an
    orientation about what this project is and how it should treat its
    memories, without replacing the task mechanism — only adapting the
    perspective with which tasks are executed.

  2. Configurable memory categories.
    The category taxonomy is fixed (PROJECT_RULES, ARCHITECTURE, CONSTRAINTS,
    CONFIG_VALUES, NAMING) and oriented to software repositories. The
    proposal: let the user define the categories their project uses, so
    curation classifies memories into the categories that actually exist in
    their work.

  3. Configurable maintained docs.
    Documentation maintenance is fixed to ARCHITECTURE.md and STRUCTURE.md.
    The proposal: let the user choose which documentation files should be
    maintained (and with what content instructions for each), instead of a
    fixed list.

  4. Non-code project mode (optional).
    A convenience mode that pre-configures the points above for projects
    that are not code repositories: disables development-oriented language
    and repo doc maintenance, keeps memory curation with user-defined
    categories, and focuses historian/review prompts on the project's real
    work type. It would solve the root problem for those who want it, but
    it is optional.

graph TD;
    A[TODAY - Policy welded to code] --> B[Dreamer task prompts fixed with dev-oriented language];
    A --> C[Memory categories fixed to dev taxonomy];
    A --> D[Maintained docs fixed to ARCHITECTURE.md and STRUCTURE.md];
    B --> E[Dreamer agent thinks in codebase / repo / releases];
    C --> E;
    D --> E;
    E --> F[Result: less useful curation and irrelevant docs for non-code projects];
    G[PROPOSAL - Configurable per-project policy] --> H[Project awareness - user tells the dreamer what this project is];
    G --> I[Memory categories defined by the user];
    G --> J[Maintained docs chosen by the user with content rules];
    G --> K[Non-code project mode - optional, pre-configures everything];
    H --> L[Dreamer agent understands your domain];
    I --> L;
    J --> L;
    L --> M[Result: useful curation and relevant docs for any project];
    E --> N{Transition};
    N -->|decouple mechanism from policy| H;
Loading

Alternatives considered

  1. Fork the plugin and maintain it ourselves.
    Rejected: a fork forces perpetual sync with upstream for what is a
    configurability change.

  2. Externalize dreamer prompts to files (templates/).
    Viable as an implementation, but less discoverable than the existing
    magic-context.jsonc configuration, which is the pattern the plugin
    already uses (schedules, models, thresholds).

  3. Do nothing and use the plugin with defaults only.
    Rejected for non-dev projects: classifying into development categories
    and maintaining repo docs adds noise and tokens to projects that don't
    need them.

  4. Hardcode a domain-specific category set as an additional option.
    Rejected: it would solve one specific case but reproduce the same
    problem for the next domain. The right fix is letting the user define
    their own categories.

Area

OpenCode plugin

Additional context

Real use case: a work project that is not a code repository — it contains
per-topic work folders, findings, operational data and methodology, with no
source code, commits or releases. Current behavior:

  • Curation classifies memories into development categories that do not map
    to the project's real work (result: less useful curation, forced or
    skipped classification).
  • Doc maintenance keeps ARCHITECTURE.md and STRUCTURE.md in sync even
    though those files describe software layers the project does not have.
  • User memories accumulate slowly because the review prompt is tuned for
    recurring dev workflows, not for other types of work sessions.

Acceptance criteria:

  • The dreamer receives configurable orientation about the project type
  • Memory categories are user-configurable
  • The maintained docs list and their content instructions are configurable
  • Default behavior unchanged when no custom config is present
  • Documented in the config schema and README

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestNew feature or capability request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions