# https://github.com/joshuaswarren/remnic Project Manual

Generated at: 2026-06-26 19:37:31 UTC

## Table of Contents

- [Overview & System Architecture](#page-1)
- [Memory Engine & Retrieval Pipeline](#page-2)
- [Platform Integrations & Plugins](#page-3)
- [Configuration, Operations & Troubleshooting](#page-4)

<a id='page-1'></a>

## Overview & System Architecture

### Related Pages

Related topics: [Memory Engine & Retrieval Pipeline](#page-2), [Platform Integrations & Plugins](#page-3)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts)
- [packages/remnic-core/src/access-service.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-service.ts)
- [packages/remnic-core/src/storage.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/storage.ts)
- [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts)
- [packages/remnic-core/src/shared-context/manager.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/shared-context/manager.ts)
- [packages/remnic-core/src/recall-query-policy.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/recall-query-policy.ts)
- [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)
- [packages/remnic-core/src/memory-extension/codex-publisher.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/codex-publisher.ts)
- [packages/remnic-core/src/connectors/live/github.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/live/github.ts)
- [packages/remnic-core/src/taxonomy/resolver-doc-generator.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/taxonomy/resolver-doc-generator.ts)
- [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)
- [packages/remnic-core/src/event-order-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/event-order-recall.ts)
- [packages/remnic-core/src/explicit-cue-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/explicit-cue-recall.ts)

</details>

# Overview & System Architecture

Remnic is a markdown-first memory layer for AI coding agents. It stores knowledge as plain Markdown files with YAML front-matter, exposes recall through an MCP server, and ships host-specific plugins that inject memory into agent sessions at the right moment. The system is organized as a TypeScript monorepo with one core package (`@remnic/core`) and a family of host plugins (`@remnic/plugin-openclaw`, `@remnic/plugin-pi`, `@remnic/plugin-codex`).

## Purpose and Scope

Remnic's role is to be the durable, inspectable, agent-agnostic memory backing store. The core treats every piece of knowledge as a typed Markdown record, classifies it via a taxonomy, and surfaces it to agents only when the recall policy decides it is relevant. Source: [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts) defines nine top-level memory types — `fact`, `preference`, `decision`, `entity`, `skill`, `correction`, `question`, `observation`, and `summary` — each rendered to the host agent with semantic weight hints.

The system deliberately keeps private runtime state separate from public knowledge. The OpenClaw wiki-bridge enumerator, for example, scans only `facts/`, `entities/`, `corrections/`, `artifacts/`, and `profile.md`, and explicitly excludes `state/`, `questions/`, `transcripts/`, `archive/`, `buffers/`, and `tokens/`. Source: [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts).

## Package Layout

```mermaid
flowchart LR
    subgraph Core["@remnic/core"]
        MCP[access-mcp.ts<br/>engram.recall, briefing]
        AS[access-service.ts<br/>briefing, recall]
        Storage[storage.ts<br/>entity serialization]
        NK[native-knowledge.ts<br/>obsidian + workspace chunks]
        CXM[shared-context/manager.ts<br/>cross-signals, daily curation]
        MemExt[memory-extension/<br/>codex + shared instructions]
        Conn[connectors/live/<br/>github]
    end
    subgraph Plugins["Host Plugins"]
        OC[plugin-openclaw<br/>wiki bridge, flush plan]
        PI[plugin-pi<br/>context hook, commands]
        CX[plugin-codex<br/>phase-2 sandbox publisher]
    end
    Agents[AI Agents / IDE Hosts] --> Core
    Core --> Plugins
    Plugins --> Agents
```

The core package owns recall, storage, connectors, and host-agnostic policies. Each plugin adapts the core to a specific host's extension API (OpenClaw, Pi, Codex). Source: [packages/remnic-core/src/memory-extension/codex-publisher.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/codex-publisher.ts) shows how the Codex extension is materialized on disk under an `extensionRoot/instructions.md` plus `skills/` and `rollout_summaries/` directories.

## Recall Pipeline

Recall follows a deterministic pipeline from query to injected context:

1. **Query normalization** — stopwords, lexical cues, and filesystem-like paths are stripped. Source: [packages/remnic-core/src/recall-query-policy.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/recall-query-policy.ts) collapses whitespace, drops `~/...` and `C:\...` tokens, and trims compact identifier terms before they ever hit the index.
2. **Chunk sourcing** — Obsidian notes, OpenClaw workspace-sync files, and curated-include files are chunked with heading awareness and tagged with namespace, privacy class, and source hash. Source: [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts).
3. **Cue and intent scoring** — `explicit-cue-recall.ts` and `response-guidance-recall.ts` apply pattern libraries (DIY tasks, calculus walkthroughs, sleep-quality metrics, etc.) to assemble evidence. Source: [packages/remnic-core/src/explicit-cue-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/explicit-cue-recall.ts) and [packages/remnic-core/src/response-guidance-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/response-guidance-recall.ts).
4. **Assembly and disclosure** — the access service joins hits, applies `RecallDisclosure` levels (`section` vs. `raw`), and returns `EngramAccessMemoryRecord` payloads. Source: [packages/remnic-core/src/access-service.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-service.ts).
5. **Injection** — the host plugin writes the recall blob into the agent's message stream. For Pi, recall must be **appended** to messages rather than prepended to keep prefix caches valid. Source: [issue #1479](https://github.com/joshuaswarren/remnic/issues/1479).

The MCP surface exposes `engram.recall`, `engram.recall_explain`, and `engram.set_coding_context` (the last binds a coding-agent project/branch to a namespace). Source: [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts).

## Storage, Connectors, and Curation

Entity files are serialized in a compiled-truth + timeline format that remains parse-compatible with legacy `summary` and `facts` fields. Structured sections are sorted by schema, and legacy facts are preserved when no timeline exists. Source: [packages/remnic-core/src/storage.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/storage.ts).

Connectors ingest external corpora. The GitHub connector, for example, paginates issues, PRs, and discussions, builds `ConnectorDocument` records with stable `externalId` values, and feeds them into the recall index. Source: [packages/remnic-core/src/connectors/live/github.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/live/github.ts).

The shared-context manager runs daily curation: it merges cross-signal overlaps, applies optional semantic enhancement (fail-open on timeout), and writes a `cross-signals/<date>.md` roll-up plus a structured JSON report. Source: [packages/remnic-core/src/shared-context/manager.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/shared-context/manager.ts). Taxonomy decisions are exposed as a human-readable `RESOLVER.md` decision tree generated from category priorities. Source: [packages/remnic-core/src/taxonomy/resolver-doc-generator.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/taxonomy/resolver-doc-generator.ts).

## Known Limitations and Recent Fixes

The community has surfaced several architectural gaps that drive recent releases:

| Area | Issue | Resolution |
|------|-------|------------|
| Flush plan lifecycle | Models hallucinate `memory-candidates/` paths; `flush-plan.md` grows unbounded ([#1483](https://github.com/joshuaswarren/remnic/issues/1483)) | Constrained flush-plan prompt ([#1484](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.641)) |
| LCM model routing | LCM summarizer bypassed `taskModelChain` ([#1473](https://github.com/joshuaswarren/remnic/issues/1473)) | Routed through `taskModelChain` ([v9.3.637](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.637)) |
| OAuth providers | `FallbackLlmClient` rejected OAuth-only providers ([#1478](https://github.com/joshuaswarren/remnic/issues/1478)) | Resolved in [v9.3.639](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.639) |
| Pi stale-ctx | Post-await `ctx` access threw "stale ctx" ([#1481](https://github.com/joshuaswarren/remnic/issues/1481)) | Hardened context handling in [v9.3.640](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.640) |
| QMD on Windows | `launchProcess()` lacked `shell:true` ([#1476](https://github.com/joshuaswarren/remnic/issues/1476)) | Windows QMD launcher fix in [v9.3.640](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.640) |
| Day summary cron | Timezone and model reconciliation gaps ([#1475](https://github.com/joshuaswarren/remnic/issues/1475), [#1474](https://github.com/joshuaswarren/remnic/issues/1474)) | Reconciled in [v9.3.639](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.639) |

The current release, **v9.3.644**, accepts 2026.6.11 beta OpenClaw hosts. Source: [v9.3.644 release notes](https://github.com/joshuaswarren/remnic/releases/tag/v9.3.644).

## See Also

- Memory types and citation format — `packages/remnic-core/src/memory-extension/shared-instructions.ts`
- MCP tool inventory — `packages/remnic-core/src/access-mcp.ts`
- OpenClaw wiki bridge — `packages/plugin-openclaw/src/public-artifacts.ts`
- Codex sandbox publisher — `packages/remnic-core/src/memory-extension/codex-publisher.ts`
- Daily cross-signals curation — `packages/remnic-core/src/shared-context/manager.ts`

---

<a id='page-2'></a>

## Memory Engine & Retrieval Pipeline

### Related Pages

Related topics: [Overview & System Architecture](#page-1), [Configuration, Operations & Troubleshooting](#page-4)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)
- [packages/remnic-core/src/explicit-cue-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/explicit-cue-recall.ts)
- [packages/remnic-core/src/response-guidance-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/response-guidance-recall.ts)
- [packages/remnic-core/src/event-order-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/event-order-recall.ts)
- [packages/remnic-core/src/semantic-consolidation.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/semantic-consolidation.ts)
- [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts)
- [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts)
- [packages/remnic-core/src/operator-toolkit.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/operator-toolkit.ts)
- [packages/remnic-core/src/taxonomy/resolver-doc-generator.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/taxonomy/resolver-doc-generator.ts)
- [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)
- [packages/remnic-core/src/wearables/day-store.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/wearables/day-store.ts)
- [packages/plugin-openclaw/README.md](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/README.md)
</details>

# Memory Engine & Retrieval Pipeline

## Overview

Remnic is a local-first, file-backed memory system that stores knowledge as plain Markdown files with YAML frontmatter and exposes a multi-stage retrieval pipeline to host agents (Codex, OpenClaw, Pi, etc.). The memory engine is responsible for ingesting facts, organizing them into a semantic taxonomy, retrieving contextually relevant entries on demand, and periodically consolidating redundant memories. The retrieval pipeline composes several scoring strategies — lexical overlap, intent matching, and event-order cues — into a single ranked recall snapshot, which is then surfaced back into the host's context window.

Source: [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)

## Memory Model & Storage Layout

Each memory is a Markdown document with a YAML frontmatter `type` field. The supported semantic types are enumerated in the shared instruction block and consumed by every host-specific publisher:

| Type | Semantic Role |
|------|---------------|
| `fact` | Objective, user-confirmed knowledge |
| `preference` | Stated or inferred user preferences |
| `decision` | Explicit trade-off or commitment |
| `entity` | Named thing the user cares about |
| `skill` | Reusable workflow or procedure |
| `correction` | Amendment to a prior memory |
| `question` | Open uncertainty flagged for review |
| `observation` | Cross-session pattern |
| `summary` | Condensed roll-up |

Source: [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)

On disk, memories live under a `memoryDir` partitioned into scanned roots (`facts/`, `entities/`, `corrections/`, `artifacts/`, `profile.md`) and explicitly excluded private roots (`state/`, `questions/`, `transcripts/`, `archive/`, `buffers/`, `tokens/`). The public-artifacts provider enforces this split by walking only the allow-listed directories and resolving symlinks against the memory root before exposing entries to wiki ingestion.

Source: [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)

Wearable day transcripts are deliberately stored under `wearables/<source>/<YYYY-MM-DD>.md` — outside the memory scan roots so they never appear as recallable memories, but inside the QMD collection root so they remain full-text searchable.

Source: [packages/remnic-core/src/wearables/day-store.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/wearables/day-store.ts)

## Retrieval Pipeline

Recall is composed of three complementary scorers that run together and produce a single ranked snapshot:

1. **Lexical / explicit-cue recall** — Tokenizes the query, drops a curated stopword set, and counts token overlap against indexed chunks. Reference targets are capped via `maxReferences`, and the resulting section is bounded by `maxChars` to keep the injected blob host-budget-friendly.

   Source: [packages/remnic-core/src/explicit-cue-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/explicit-cue-recall.ts)

2. **Intent / response-guidance recall** — Pattern-matches the normalized query against an intent registry (e.g. `diy_insulation_summary`, `calculus_derivative_walkthrough`, `technical_project_summary`) and emits intent tags that bias the downstream ranker toward domain-specific evidence.

   Source: [packages/remnic-core/src/response-guidance-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/response-guidance-recall.ts)

3. **Event-order recall** — Surfaces memories whose frontmatter events are temporally adjacent to the current turn, weighted against an enumerated phrase dictionary of conversational anchors.

   Source: [packages/remnic-core/src/event-order-recall.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/event-order-recall.ts)

The MCP surface exposes this pipeline as `engram.recall` (with `query`, `cwd`, `projectTag`, `asOf`, `tags`, and `tagMatch` parameters) and `engram.recall_explain`, plus a companion `engram.set_coding_context` that pins a session to a project/branch-scoped namespace.

Source: [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts)

### Architecture

```mermaid
flowchart LR
    Q[Query] --> EX[Explicit Cue Recall]
    Q --> RG[Response Guidance / Intent]
    Q --> EO[Event Order Recall]
    EX --> R[Ranked Snapshot]
    RG --> R
    EO --> R
    R --> CTX[Host Context Window]
    CTX --> AGENT[Host Agent]
```

## Consolidation & Maintenance

The semantic consolidation engine clusters near-duplicate memories via token overlap, synthesizes a canonical version through an LLM operator, archives the originals, and runs a post-consolidation materialize step. Operators are dispatched through a pluggable vocabulary defined in `consolidation-operator.ts` and re-exported from `semantic-consolidation.ts` to avoid circular imports.

Source: [packages/remnic-core/src/semantic-consolidation.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/semantic-consolidation.ts)

Native Obsidian vaults are chunked heading-aware; each heading becomes a `NativeKnowledgeChunk` keyed by `vaultId:notePath:startLine-endLine` with metadata inherited from the parent note (tags, aliases, wikilinks, backlinks, namespace, privacy class).

Source: [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts)

The taxonomy resolver emits a human-readable `RESOLVER.md` decision tree from a `Taxonomy` definition so operators can file new knowledge deterministically. Categories are sorted by ascending priority number, with ties broken by lexical `id`.

Source: [packages/remnic-core/src/taxonomy/resolver-doc-generator.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/taxonomy/resolver-doc-generator.ts)

The operator toolkit injects a managed capture-instructions block into host instructions files, idempotently upserting between `CAPTURE_INSTRUCTIONS_START` / `CAPTURE_INSTRUCTIONS_END` markers so manual edits outside the block are preserved.

Source: [packages/remnic-core/src/operator-toolkit.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/operator-toolkit.ts)

## Public Artifacts & Wiki Bridge

For OpenClaw hosts, the `memory-wiki` bridge mode enumerates only the allow-listed public directories (`facts/`, `entities/`, `corrections/`, `artifacts/`, `profile.md`) and rejects symlink traversal that would re-target an allow-listed directory onto a private one (e.g. `facts -> state`). The corpus supplement then exposes those memories as a read-only `remnic` corpus under a service-scoped supplement ID, with no exposure of transcript buffers, auth metadata, or runtime state.

Source: [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)
Source: [packages/plugin-openclaw/README.md](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/README.md)

## Known Issues & Operational Notes

- **LCM summarizer model routing** — In v9.3.639 the Lossless Context Management summarizer was rerouted through `taskModelChain` instead of the gateway default; prior versions fell back to `agents.defaults.model` (issue #1473).
- **OAuth-only providers** — `FallbackLlmClient` was hardened in v9.3.639 to honor OAuth-only providers when `modelSource: "gateway"` (issue #1478).
- **Day-summary cron reconciliation** — The `engram-day-summary` cron now reconciles model config on plugin startup via `reconcileDaySummaryCronRouting()`, matching the hourly summary behavior (issue #1474).
- **Recall injection order** — The Pi plugin's `context` hook now appends recalled memories instead of prepending them, preserving prefix-cache locality for providers like DeepSeek V4 Flash (issue #1479).

## See Also

- OpenClaw Plugin Lifecycle
- MCP Tool Surface
- Semantic Consolidation Operators
- Obsidian Vault Ingestion

---

<a id='page-3'></a>

## Platform Integrations & Plugins

### Related Pages

Related topics: [Overview & System Architecture](#page-1), [Configuration, Operations & Troubleshooting](#page-4)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)
- [packages/remnic-core/src/memory-extension/codex-publisher.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/codex-publisher.ts)
- [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)
- [packages/remnic-core/src/connectors/live/github.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/live/github.ts)
- [packages/remnic-core/src/connectors/codex-materialize.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/codex-materialize.ts)
- [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts)
- [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts)
- [packages/remnic-core/src/projection/index.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/projection/index.ts)
- [packages/remnic-core/src/shared-context/manager.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/shared-context/manager.ts)
- [packages/remnic-core/src/taxonomy/resolver-doc-generator.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/taxonomy/resolver-doc-generator.ts)
</details>

# Platform Integrations & Plugins

Remnic distributes its functionality across a monorepo of **platform integrations** (host-specific plugins such as `@remnic/plugin-openclaw` and `@remnic/plugin-pi`) and **extension publishers** that teach external agent hosts (Codex, OpenClaw) how to read and write Remnic memory. The `@remnic/core` package sits between them, exposing canonical memory, MCP tools, and connector adapters that every host and plugin consume.

## Architecture Overview

The integration layer is organised so that **core remains host-agnostic**, while each plugin owns the surface area unique to its platform (event hooks, message-shape translation, public-artifact emission). The diagram below shows the major relationships that the source code expresses today.

```mermaid
flowchart LR
  Host["Agent Host<br/>(OpenClaw / Pi / Claude Code / Codex)"]
  Plugin["Host Plugin<br/>(plugin-openclaw, plugin-pi)"]
  Core["@remnic/core<br/>(canonical memory + MCP)"]
  Pub["Memory Extension Publisher<br/>(codex-publisher + shared-instructions)"]
  Conn["Connectors<br/>(github live, codex-materialize)"]
  NK["Native Knowledge<br/>(Obsidian vault sync)"]

  Host -- "events / messages" --> Plugin
  Plugin -- "RecallTool, append/prepend context" --> Core
  Host -. "instructions.md + skills/" .-> Pub
  Pub -- "shared instruction fragments" --> Core
  Conn -- "ConnectorDocument[]" --> Core
  NK -- "NativeKnowledgeChunk[]" --> Core
  Core -- "facts/, entities/, profile.md" --> Plugin
```

## Public Artifacts and the Memory-Wiki Bridge

The OpenClaw plugin enumerates a safe subset of memory for wiki ingestion via [`packages/plugin-openclaw/src/public-artifacts.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts). The function `listRemnicPublicArtifacts()` resolves the memory directory with `realpath`, then walks an allowlist of directories (`facts/`, `entities/`, `corrections/`, `artifacts/`, plus the public summary of `profile.md`).

Private runtime state is explicitly excluded:

> "Private/runtime state (state/, questions/, transcripts, buffers, etc.) is explicitly excluded." — `packages/plugin-openclaw/src/public-artifacts.ts:1-15`

The implementation also defends against symlink traversal: a directory named `facts` that resolves to `state` is rejected so that allowlisted names cannot redirect to private data. Source: [`packages/plugin-openclaw/src/public-artifacts.ts:67-90`](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts).

## Memory Extension Publishers

When Remnic integrates with a host that loads static instructions (e.g., Codex), it ships a *memory extension* — a directory containing `instructions.md`, optional `skills/`, and per-session `rollout_summaries/`. The publisher lives in [`packages/remnic-core/src/memory-extension/codex-publisher.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/codex-publisher.ts) and is composed from shared fragments defined in [`packages/remnic-core/src/memory-extension/shared-instructions.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts).

Reusable blocks include `REMNIC_SEMANTIC_OVERVIEW` (a markdown table describing the nine canonical memory types: `fact`, `preference`, `decision`, `entity`, `skill`, `correction`, `question`, `observation`, `summary`) and `REMNIC_CITATION_FORMAT`, which lets host agents emit `oai-mem-citation` blocks for downstream retrieval. Source: `packages/remnic-core/src/memory-extension/shared-instructions.ts:12-44`.

The Codex publisher renders these blocks into `instructions.md` with an atomic write (temp file + rename). It also enforces a Phase-2 sandbox rule set — "No network. No CLI invocation. No MCP tool calls." — when publishing inside Codex's consolidation sandbox. Source: `packages/remnic-core/src/memory-extension/codex-publisher.ts:160-200`.

## Live and Materialized Connectors

Remnic pulls knowledge from third-party sources via two connector families:

| Connector | Location | Purpose |
|-----------|----------|---------|
| GitHub live | `packages/remnic-core/src/connectors/live/github.ts` | Paginated fetch of issues, PRs, discussions and comments using cursor watermarks. |
| Codex rollout | `packages/remnic-core/src/connectors/codex-materialize.ts` | Materialises Codex rollout logs into Markdown summaries under `<codex_home>/memories`, gated by a `.remnic-managed` sentinel and idempotent via a content hash. |

The GitHub connector exposes a `ConnectorDocument` shape with `externalId`, `externalRevision`, and `externalUrl`, and paginates by mutating the `page` query parameter. Source: [`packages/remnic-core/src/connectors/live/github.ts:30-55`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/live/github.ts).

The Codex materializer returns a `MaterializeResult` distinguishing `wrote`, `skippedNoSentinel`, and `skippedIdempotent` outcomes — important because hosts may re-run materialisation repeatedly without producing duplicate memory. Source: [`packages/remnic-core/src/connectors/codex-materialize.ts:30-60`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/codex-materialize.ts).

## Native Knowledge and Obsidian

[`packages/remnic-core/src/native-knowledge.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts) implements **Obsidian vault ingestion**. Notes are split with a heading-aware chunker (`chunkObsidianNote`) that preserves `tags`, `aliases`, `wikilinks`, and `backlinks` per chunk. An alias index (`buildAliasIndex`) maps aliases back to note paths so recall can resolve synonym queries.

The module also handles two state-file formats — `openclaw-workspace-sync.json` and a generic curated-include state — converting either into the unified `NativeKnowledgeChunk` shape the rest of core expects.

## MCP Access Surface

Plugins and external callers reach memory through the Model Context Protocol. [`packages/remnic-core/src/access-mcp.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts) registers tools including `engram.recall` (with `chunk | section | raw` granularity, `asOf` historical pin, `tags` filter, and `tagMatch: "any" | "all"`), `engram.recall_explain`, and `engram.set_coding_context`. The `asOf` parameter is the implementation behind issue #680 (historical recall), and `tags`/`tagMatch` implement issue #689. Source: `packages/remnic-core/src/access-mcp.ts:20-90`.

## Workspace Projection and Shared Context

[`packages/remnic-core/src/projection/index.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/projection/index.ts) renders canonical memory into a human-readable `.engram/context-tree/` of Markdown files annotated with provenance, trust tier, confidence, and source anchors. Manual edits inside fenced blocks are preserved across regenerations.

[`packages/remnic-core/src/shared-context/manager.ts`](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/shared-context/manager.ts) writes a daily `Cross-Signals` report summarising overlapping themes, risks, and promotion candidates across agent outputs, supporting cross-agent coordination.

## Common Failure Modes (from Community Reports)

Several recent issues describe real-world integration friction:

- **Stale ctx errors** (`@remnic/plugin-pi`) after session replacement break the whole extension until restart (issue #1481).
- **OAuth-only providers** are rejected by `FallbackLlmClient` before runtime auth resolution when `modelSource: "gateway"` (issue #1478); v9.3.639 routed OAuth and LCM through `taskModelChain`.
- **Windows QMD launch** fails because `launchProcess()` calls bare `spawn()` without `shell:true` (issue #1476); fixed in v9.3.640.
- **Day Summary cron timezone** is server-locked (issue #1475), and the cron is not reconciled on startup like the hourly cron is (issue #1474); partially addressed in v9.3.639.
- **OpenClaw flush-plan paths** hallucinated by the LLM grow `flush-plan.md` indefinitely (issue #1483); the prompt was constrained in v9.3.640 and lifecycle processing fixed in v9.3.641.

## See Also

- [Remnic Memory Types & Recall](./memory-types-and-recall.md)
- [MCP Tools Reference](./mcp-tools.md)
- [Connectors & Live Sync](./connectors.md)

---

<a id='page-4'></a>

## Configuration, Operations & Troubleshooting

### Related Pages

Related topics: [Overview & System Architecture](#page-1), [Memory Engine & Retrieval Pipeline](#page-2), [Platform Integrations & Plugins](#page-3)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/plugin-openclaw/src/public-artifacts.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/plugin-openclaw/src/public-artifacts.ts)
- [packages/remnic-core/src/storage.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/storage.ts)
- [packages/remnic-core/src/access-mcp.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-mcp.ts)
- [packages/remnic-core/src/access-service.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/access-service.ts)
- [packages/remnic-core/src/memory-extension/shared-instructions.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/shared-instructions.ts)
- [packages/remnic-core/src/native-knowledge.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/native-knowledge.ts)
- [packages/remnic-core/src/memory-extension/codex-publisher.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/memory-extension/codex-publisher.ts)
- [packages/remnic-core/src/connectors/codex-materialize.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/connectors/codex-materialize.ts)
- [packages/remnic-core/src/shared-context/manager.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/remnic-core/src/shared-context/manager.ts)
- [packages/bench/src/registry.ts](https://github.com/joshuaswarren/remnic/blob/main/packages/bench/src/registry.ts)
</details>

# Configuration, Operations & Troubleshooting

Remnic is a memory-augmentation layer that stores knowledge as plain Markdown files with YAML front-matter and exposes that corpus to host agents through MCP, native publishers, and bridge plugins. This page documents the operational surface: how memory is persisted, how access is mediated, how privacy boundaries are enforced, and where known issues surface during routine use.

## Operational Architecture

Remnic is organized as a set of cooperating subsystems that move knowledge between external sources, structured storage, and runtime agents. The flow can be summarized as:

```mermaid
flowchart LR
    A[External Sources<br/>Codex rollouts, GitHub, Obsidian] --> B[Connectors<br/>codex-materialize, github.ts]
    B --> C[Native Knowledge<br/>native-knowledge.ts]
    C --> D[Storage Layer<br/>storage.ts]
    D --> E[Memory Directory<br/>facts/, entities/, corrections/, artifacts/]
    D --> F[MCP Access Layer<br/>access-mcp.ts, access-service.ts]
    D --> G[Host Publishers<br/>codex-publisher.ts, plugin-openclaw]
    F --> H[Host Agents]
    G --> H
    D -.private state excluded.-> X[state/, questions/, transcripts/, archive/, buffers/, tokens/]
```

The diagram highlights two important operational boundaries. First, only specific top-level directories are eligible for ingestion by external agents; second, the MCP and publisher surfaces are explicitly downstream of storage and never reach private runtime state. Source: [packages/plugin-openclaw/src/public-artifacts.ts:1-15]()

## Configuration Touch Points

### Memory Type Taxonomy

Every persisted memory carries a `type` front-matter field that tells host agents how to weight it. The taxonomy is published verbatim into host `instructions.md` files so the meaning is consistent across surfaces. Source: [packages/remnic-core/src/memory-extension/shared-instructions.ts:13-37]()

| Type | Role |
|------|------|
| `fact` | Objective confirmed knowledge |
| `preference` | Stated or inferred user preference |
| `decision` | Explicit decision or trade-off |
| `entity` | Named thing the user cares about |
| `skill` | Reusable workflow / procedure |
| `correction` | Fix or amendment to a prior memory |
| `question` | Open uncertainty flagged for resolution |
| `observation` | Cross-session pattern |
| `summary` | Condensed roll-up |

### Per-Note Metadata

Native knowledge chunks carry namespace and privacy-class metadata propagated from the source vault. `chunkObsidianNote` assigns `vaultId`, `notePath`, `namespace`, `privacyClass`, `tags`, `aliases`, `wikilinks`, and `backlinks` to every chunk so downstream recall can apply privacy filters before returning content. Source: [packages/remnic-core/src/native-knowledge.ts:1-44]()

### Materialization Sentinels

Codex rollout materialization writes a `.remnic-managed` sentinel alongside the memory directory. Subsequent runs use the sentinel plus a content hash to short-circuit idempotent re-ingestion and to skip gracefully when the sentinel is missing. Source: [packages/remnic-core/src/connectors/codex-materialize.ts:18-75]()

## Privacy & Access Boundaries

### Public vs. Private Artifacts

The OpenClaw bridge enumerates a strict allow-list of public directories: `facts/`, `entities/`, `corrections/`, `artifacts/`, and `profile.md`. Everything else — including `state/`, `questions/`, `transcripts/`, `archive/`, runtime buffers, and `tokens/` — is deliberately excluded from wiki ingestion. Source: [packages/plugin-openclaw/src/public-artifacts.ts:5-13]()

Two defensive checks protect the boundary at runtime:

1. The memory root is resolved via `realpath()` before any directory is opened; if resolution fails, the enumerator returns an empty list rather than guessing. Source: [packages/plugin-openclaw/src/public-artifacts.ts:46-58]()
2. Each allow-listed directory is checked for symlink redirection that could alias a public name to a private directory (e.g., `facts -> state/`), preventing accidental disclosure. Source: [packages/plugin-openclaw/src/public-artifacts.ts:62-69]()

### MCP Tool Surface

Remnic exposes a constrained set of MCP tools. `engram.recall` accepts a `query` plus optional filters: `namespace`, `disclosure`, `cwd`, `projectTag`, `asOf` (historical pin, issue #680), and `tags` with `tagMatch` semantics (`any` or `all`, issue #689). `engram.recall_explain` returns the most recent snapshot for a session, and `engram.set_coding_context` attaches project/branch routing. The `principal` field on `remnic_briefing` is described as transport-bound and never sourced from untrusted payloads. Source: [packages/remnic-core/src/access-mcp.ts:1-50](), [packages/remnic-core/src/access-service.ts:14-22]()

### Sandbox Enforcement

The Codex phase-2 publisher publishes an explicit sandboxing contract into `instructions.md`: no network calls, no CLI invocation of `remnic`/`engram`, no MCP tool calls, and only filesystem reads for memory. Local writes are permitted only where the sandbox policy allows. This contract is what makes Codex consolidation safe in restricted environments. Source: [packages/remnic-core/src/memory-extension/codex-publisher.ts:24-35]()

## Known Operational Issues

The community has surfaced several recurring operational failure modes that operators should expect to triage:

- **Windows QMD probe failure** — `launchProcess()` uses a bare `spawn()` without `shell:true`, so `sh`, `.cmd`, and JS launchers all error with `ENOENT`/`EINVAL` on Windows. Tracked in issue #1476 and fixed in v9.3.640.
- **LLM routing bypass** — LCM summarization and gateway task defaults originally fell back to `agents.defaults.model` instead of the plugin's `taskModelChain`; OAuth-only providers (e.g. `openai/gpt-5.4`) were rejected before runtime auth. Fixed in v9.3.639 (#1482) and v9.3.637 (#1470).
- **Cron reconciliation drift** — `engram-day-summary` did not reconcile model config on plugin startup or accept a configurable timezone. Tracked in #1474 / #1475.
- **Flush-plan hallucination** — During memory-triggered compaction, the model occasionally writes to hallucinated paths (e.g. `memory-candidates/`); fixed in v9.3.640 (#1484) and v9.3.641 (#1487).
- **Pi plugin stale context** — Post-await `ctx` access after session replacement triggers ExtensionRunner's stale-ctx error; v9.3.640 appends recall instead of prepending for prefix-cache friendliness and hardens context handling (#1481, #1479).

## Diagnostics

The `bench` package ships a registry of regression benchmarks that operators can re-run after upgrades to validate that recall, ingestion, and consolidation paths still behave correctly. Defined suites include `enrichmentFidelity`, `entityConsolidation`, `pageVersioning`, `retrievalPersonalization`, `retrievalTemporal`, `retrievalDirectAnswer`, `retrievalGraph`, `retrievalReasoningTrace`, `codingRecall`, `proceduralRecall`, `ingestionEntityRecall`, `ingestionSchemaCompleteness`, `ingestionBacklinkF1`, and `ingestionSetupFriction`. Source: [packages/bench/src/registry.ts:1-58]()

Cross-signals reports (`crossSignalsDir/<date>.md`) and daily curation output also act as first-line diagnostics: they surface counts of approved / approved-with-feedback / rejected decisions, the semantic-enhancer outcome (applied, timed-out, or no overlaps), and a list of recurring themes and risks. Source: [packages/remnic-core/src/shared-context/manager.ts:1-30]()

## See Also

- Memory Type Reference
- MCP Tool Reference
- OpenClaw Bridge Mode
- Codex Phase-2 Consolidation

---

<!-- evidence_pipeline_checked: true -->
<!-- evidence_injected: true -->

---

## Pitfall Log

Project: joshuaswarren/remnic

Summary: Found 29 structured pitfall item(s), including 2 high/blocking item(s). Top priority: Security or permission risk - Security or permission risk requires verification.

## 1. Security or permission risk - Security or permission risk requires verification

- Severity: high
- Evidence strength: source_linked
- Finding: Developers should check this security_permissions risk before relying on the project: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution
- User impact: Developers may expose sensitive permissions or credentials: FallbackLlmClient rejects OAuth-only providers (openai) before runtime auth resolution
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1478

## 2. Security or permission risk - Security or permission risk requires verification

- Severity: high
- Evidence strength: source_linked
- Finding: Developers should check this security_permissions risk before relying on the project: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error
- User impact: Developers may expose sensitive permissions or credentials: [Windows] QMD probe fails: launchProcess() uses bare spawn() without shell:true — all qmd launch forms (sh/.cmd/JS) error
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1476

## 3. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this installation risk before relying on the project: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers)
- User impact: Developers may fail before the first successful local run: plugin-pi: stale ctx error after session replacement/reload (post-await ctx access in event + command handlers)
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1481

## 4. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1474

## 5. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1476

## 6. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1481

## 7. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: capability.host_targets | https://github.com/joshuaswarren/remnic

## 8. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: Day Summary cron job does not reconcile model config on plugin startup
- User impact: Developers may misconfigure credentials, environment, or host setup: Day Summary cron job does not reconcile model config on plugin startup
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1474

## 9. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: Day Summary cron timezone is not configurable (uses server timezone)
- User impact: Developers may misconfigure credentials, environment, or host setup: Day Summary cron timezone is not configurable (uses server timezone)
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1475

## 10. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: Flush plan: models hallucinate 'memory-candidates/' paths and flush-plan.md grows indefinitely
- User impact: Developers may misconfigure credentials, environment, or host setup: Flush plan: models hallucinate 'memory-candidates/' paths and flush-plan.md grows indefinitely
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1483

## 11. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: LCM summarizer bypasses taskModelChain, falls back to gateway default model chain
- User impact: Developers may misconfigure credentials, environment, or host setup: LCM summarizer bypasses taskModelChain, falls back to gateway default model chain
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1473

## 12. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: v9.3.639
- User impact: Upgrade or migration may change expected behavior: v9.3.639
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.639

## 13. Capability evidence risk - Capability evidence risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: README/documentation is current enough for a first validation pass.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: capability.assumptions | https://github.com/joshuaswarren/remnic

## 14. Maintenance risk - Maintenance risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a maintenance risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/joshuaswarren/remnic

## 15. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: downstream_validation.risk_items | https://github.com/joshuaswarren/remnic

## 16. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: risks.scoring_risks | https://github.com/joshuaswarren/remnic

## 17. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1478

## 18. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1483

## 19. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/joshuaswarren/remnic/issues/1473

## 20. Capability evidence risk - Capability evidence risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this capability risk before relying on the project: Make context recall append instead of prepend
- User impact: Developers may hit a documented source-backed failure mode: Make context recall append instead of prepend
- Evidence: failure_mode_cluster:github_issue | https://github.com/joshuaswarren/remnic/issues/1479

## 21. Runtime risk - Runtime risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this performance risk before relying on the project: v9.3.643
- User impact: Upgrade or migration may change expected behavior: v9.3.643
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.643

## 22. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: issue_or_pr_quality=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/joshuaswarren/remnic

## 23. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: release_recency=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/joshuaswarren/remnic

## 24. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.636
- User impact: Upgrade or migration may change expected behavior: v9.3.636
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.636

## 25. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.637
- User impact: Upgrade or migration may change expected behavior: v9.3.637
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.637

## 26. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.638
- User impact: Upgrade or migration may change expected behavior: v9.3.638
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.638

## 27. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.640
- User impact: Upgrade or migration may change expected behavior: v9.3.640
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.640

## 28. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.641
- User impact: Upgrade or migration may change expected behavior: v9.3.641
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.641

## 29. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: Developers should check this maintenance risk before relying on the project: v9.3.642
- User impact: Upgrade or migration may change expected behavior: v9.3.642
- Evidence: failure_mode_cluster:github_release | https://github.com/joshuaswarren/remnic/releases/tag/v9.3.642

<!-- canonical_name: joshuaswarren/remnic; human_manual_source: deepwiki_human_wiki -->
