# Memorix Active Work > This is the single living work-status document for this repository. Read it > before resuming substantial work, update it after a material decision or > milestone, and do not create parallel progress logs. **Last updated:** 2026-10-23 **Long-term roadmap:** [docs/ROADMAP-1.9.12-2.0.md](docs/ROADMAP-1.9.12-2.0.md) **Local verification rule:** run the frontend, HTTP service, MCP server, and tests directly with Node/npm on the E: workspace. Do not start Docker or add local Docker data. The Dockerfile and image workflow remain deployment artifacts for the VPS/hosted build path only. ## Current Product State - `1.9.12` is the current published baseline. It is a security and release hardening patch on top of 1.9.11; the product contract remains unchanged. - The release keeps the canonical Dashboard Memory Map, removes the obsolete renderer/dependencies, makes reachable capabilities visible, and preserves the old MCP clients while adding the modern 2026-07-28 core contract. - SDK, CLI, hooks, and HTTP MCP share SQLite as the canonical flat data store. Large-store startup hydration uses bounded Orama batches so health remains responsive without rebalancing the index once per row. - MCP profiles are currently `micro=9`, `lite=21`, `team=29`, and `full=48`. Setup installs `lite`; advanced and compatibility tools remain opt-in so the default agent context stays small. - Contributor PR #260 was closed as superseded because its unlocked timeout fallback is unsafe; its diagnosis is credited and the stronger fail-closed fix shipped in 1.8.5. WorkBuddy PR #204 and continuation PR #266 are merged with their authorship retained; Star History PR #265 is also merged. - Release verification is green: MCP v2 direct tests, legacy and modern stdio/HTTP smoke, background concurrency smoke, P3/P4/P5/P6 suites, `npm run lint`, the sequential low-memory build, the full local regression, and all 7 remote CI checks passed. Live embedding tests remain intentionally skipped when their environment flag is absent. ## 1.9.11 Release Closeout (2026-10-17) - [x] Root package metadata, lockfile, MCP Registry metadata, plugin manifests, and changelog entries are synchronized at `1.9.11`. - [x] The release contains the merged 1.9.x maintenance fixes and the independently validated API Route and session-label contributions listed below. - [x] Tag `v1.9.11`, npm `memorix@1.9.11`, the official MCP Registry record, and the GitHub Release are published from commit `5aad490`. ## 1.9.12 Release Closeout (2026-10-18) - [x] The publish workflow verifies npm registry signatures before build and test, and fails closed instead of retrying without provenance. - [x] Opt-in background npm updates disable lifecycle scripts during install. - [x] Full local and remote release gates passed; `v1.9.12`, npm, MCP Registry, and GitHub Release are published from commit `d5d8b5f`. - [x] Begin the 1.10 contract-convergence iteration from the roadmap. ## 1.10 Iteration Started (2026-10-18) - [x] Context governance receipts now expose freshness, trust, quality, conflict, and evidence count for every optional-evidence decision. The agent-facing prompt and MCP tool schemas remain unchanged. - [x] Focused Workset, governor, graph-context, CLI context, and MCP profile tests pass (54 tests). - [x] Context receipts now also expose retrieval mode, code provider, fallback reason, optional candidate count, selected count, and omitted count. The auto-context and context-pack surfaces pass their known retrieval state. - [x] Budget omissions now carry up to three stable sample IDs per category, without storing raw evidence content in the receipt. - [x] Initial retrieval baseline recorded on Windows Node 22.22.3, 1,000 records, 20 hot SDK runs, embeddings/LLM disabled: specific query p95 9.629ms and broad query p95 12.079ms. This is a local lexical baseline, not a cross-platform SLO. - [x] The same benchmark at 10,000 records produced seed/index 12.633s, specific query p95 17.259ms, and broad query p95 125.991ms. Broad retrieval growth is now a measured 1.10 performance concern. - [x] At 40,000 records the same Windows hot SDK benchmark produced seed/index 45.658s, specific query p95 2.187ms, and broad query p95 84.462ms. The specific path is sensitive to hot-cache/query distribution; broad retrieval remains the stable capacity signal. - [x] The large-store gate now requests the bounded MCP receipt and records receipt assembly separately from end-to-end request time. On Windows Node 22.22.3 with 40,000 records, MCP context was 573.561ms end to end and receipt assembly was 7ms; the gate passed with 428.7MB peak RSS, 318.202ms cold MCP search, 2.733s hook write, and 157.485ms SDK reopen. - [x] Runtime/project binding now returns a privacy-safe `structuredContent.binding` receipt from `memorix_session_start`. It records resolved state, binding source, explicitness, project ID, hashed project root/data directory, and transport across legacy and stateless HTTP; focused server, legacy HTTP, and modern bridge tests pass without exposing raw paths or session handles. - [x] The binding receipt now also records verified Git remote state (hash and sanitized host) plus handle lease/expiry state and timestamps. Stateless handle creation uses the project data directory, so a handle cannot redirect the next request to the control-plane base database. Focused binding, serve mode, modern bridge, and startup tests pass. - [x] The adapter registry now generates schema version 1 capability manifests for all 19 agent targets. It covers transport/command, artifacts, hook lifecycle, rules/skills/guidance, scope, lifecycle actions, host-version evidence, runtime requirements, and generation sources. Setup targets are derived from the registry; Qwen is recorded as a hooks-only target rather than a false full-setup target. Registry, setup, doctor, and integration regressions pass. - [x] Agent doctor now includes manifest-derived transport observations, expected artifact categories, lifecycle support, registry source, and parity issues. Host-specific lanes remain explicitly skipped when the generic doctor has no reliable artifact check; Qwen is recognized as hooks-only instead of being treated as a complete MCP setup. - [x] Agent doctor now performs concrete artifact checks for stable rules and hook paths, including project/global scope and file existence. Package and skill roots remain explicit manifest-only data until an install-root contract makes those checks reliable. - [x] The memory ownership matrix is now canonical in `docs/1.3-MEMORY-ARCHITECTURE.md`. It records writer, verifier, default reader, and promotion rules for Observation, Reasoning, Claim, Wiki/Workflow, Session/Team, Long-term Memory, and CodeGraph, while keeping Task Workset as a derived delivery view. - [x] The existing evaluation harness now defines a 20-case 1.10 task matrix and a stable 15-metric contract across continuity, retrieval, safety, runtime, and integration. `npm run gate:context-matrix` validates the contract, while `npm run gate:context-runtime` executes the matrix against real runtime paths. - [x] The 1.10 runtime matrix passed 20/20 on Windows Node 22.22.3 with embeddings/LLM disabled. Hit precision/recall and stale/conflict rejection were 1.00/1.00, abstention precision was 0.95, matrix p50/p95 was 2ms/255ms, and peak RSS was 428,867,584 bytes. - [x] The packed 40k large-store gate passed with seed/index 45,571.959ms, SDK search 30.378ms, MCP context 518.983ms, receipt assembly 6ms, peak RSS 409.0MB, hook 2,634.153ms, and SDK reopen 85.095ms. - [x] The 100k capacity gate passed with seed/index 113,048.097ms, SDK search 39.71ms, MCP context 1,099.809ms, receipt assembly 7ms, peak RSS 409.4MB, SQLite disk count 100,002, and reopened count 100,001. - [x] The existing session replay baseline is recorded: embeddings disabled, 4/4 fixed questions hit, max turn 277 tokens, 0 over-budget turns, and session dedup reduced duplicate displays from 25% to 18.75% without losing hits. This covers only the mapped continuity/retrieval baseline cases. - [x] The HTTP control-plane `/health` response now exposes the same privacy-safe binding receipt with `transport: dashboard`, verified project/data-directory hashes, and Git remote state. - [x] Retrieval receipts now cross the compact engine, MCP search, and CLI JSON search surfaces. They record schema version, actual mode, candidate/result/ selected/omitted counts, token-budget omissions, fallback reason, token count, and elapsed time without query text, raw memory content, or local paths. ## 1.10.0 Release Closeout (2026-10-23) - [x] Root package metadata, `server.json`, plugin release manifests, and `CHANGELOG.md` are synchronized at `1.10.0`. - [x] Release PR #358 merged as commit `f2b7555`; all 7 remote release checks, full local regression, package smoke, 40k/100k capacity gates, and npm signature checks passed. - [x] Tag `v1.10.0`, GitHub Release, npm `memorix@1.10.0`, and official MCP Registry `io.github.AVIDS2/memorix@1.10.0` are published. npm integrity is `sha512-Eyxg9TwkYef4YfmUG3xcB/4y6lqsJQxMStK3QJW51AF6Nb6k8MHoPKyzG0XuyYOTjiAUNA5h9DIAsV3W1KuCiw==`. ## 1.10.1 Release Closeout (2026-10-23) - [x] Contributor PR #359 was revalidated on the current 1.10.0 main line and integrated through PR #361 (`6558c8f`). Cheaper Inference is opt-in, uses a dedicated key, and preserves the embedding/memcode provider boundaries. - [x] The original #359 was closed as superseded with the author attribution preserved in the integrated commit. - [x] The provider and derived-view receipt hardening are now staged in `CHANGELOG.md` as `1.10.1` release content. - [x] Release PR #363 merged as commit `7c51d34`; all 7 release checks, full regression, build, package smoke, and npm signature audit passed. - [x] Tag `v1.10.1`, GitHub Release, npm `memorix@1.10.1`, and official MCP Registry `io.github.AVIDS2/memorix@1.10.1` are published. npm integrity is `sha512-Ic2xYLW/22KhnfX9/8/hJMeI+mPAdxR/TudcsH2ZpaCx74T5b+m3xdeOnyfHRnlbW/vXKqB31ezS6puVHLiZBQ==`. - [x] Derived-view receipt hardening now reports FTS, Orama, embedding, and CodeGraph generation/freshness/rebuild status/failure reason through the bounded context and retrieval receipts. This is also unreleased and must be included in the next package release. - [x] The reproducible hot SDK benchmark was run at v1.9.11 and current 1.10 main with 1,000 records and 20 runs: specific p95 9.283ms -> 8.925ms and broad p95 12.301ms -> 12.298ms. This is a no-regression baseline, not an SLO or a statistical performance claim. ## 1.9.x Maintenance and Ecosystem Closeout (2026-10-16) - [x] Issue #330 was implemented through PR #333 (`477e968`) and merged in `17ec78a`. The in-memory Orama index preserves Latin tokenization and adds bounded CJK character unigrams/bigrams for Chinese, Japanese, and Korean queries. The standard `npm test` entry was also restored by removing the unsupported Vitest 5 `--minWorkers=1` flag. Local lint/build/focused tests and the full suite pass; Ubuntu, Windows, macOS, Docker, typecheck, Node 26, and registry CI all pass. #330 is closed. - [x] Issue #328 and the existing #3/#322-#325 fixes were implemented through PR #331 (`82e05b0`) and merged in `f9331a8`. Its Node 26 hook smoke and complete cross-platform CI pass; GitHub closed the linked issues after merge. - [x] The 2026-10 ecosystem scan used `last30days-skill` v3.28.0 plus Tavily. The strongest signals were bounded on-demand retrieval, progressive disclosure for MCP/skills, and explicit provenance/freshness against memory or context poisoning. Memorix already has admission, evidence, feedback, freshness, retention, and abstention primitives, so no speculative trust score subsystem was added; the next useful work is exposing those existing signals more consistently in receipts and operator views. - [x] #320 API Route provider contribution was independently validated and merged in `ea3ce86`; it remains opt-in and does not change the default model or embedding paths. #329 was also independently reviewed and merged in `d13cfa6`. - [x] PR #344 (`ed7f0df`) adds MiniMax M3.1 Flash support across the AI package and memcode: direct global/China metadata, provider-specific thinking normalization, the verified OpenRouter free route, legacy model lookup compatibility, and Flash as the memcode default. Its 7/7 CI passed; no live inference or unverified OpenCode route was claimed. - [ ] #297 is an external awesome-list submission rather than repository code work. #327 still lacks reproducible package/security evidence; #313 and #49 remain integration-boundary discussions. ## 1.9.5 Closeout (2026-09-20) The release is `v1.9.5` on `main` (`658231f`). The release gates below are complete. Detailed acceptance criteria and the public issue/PR disposition live in [docs/KNOWN_ISSUES_AND_ROADMAP.md](docs/KNOWN_ISSUES_AND_ROADMAP.md). - **[x] P1 HTTP control-plane boundary and lifecycle:** loopback default, explicit non-loopback security policy, body limits, synchronous listen failures, supervised background startup, and shutdown cleanup shipped. - **[x] P1 project isolation:** graph persistence, Dashboard, MCP, and legacy graph migration now carry project ownership. - **[x] P1 migration safety:** observation and subdirectory migrations are locked/atomic, project-aware, and fail closed on malformed source data. - **[x] P1 store ownership and SQLite concurrency:** SDK sibling lifetimes, sync ID allocation/tombstones, stale lock ownership, and release contracts have regression coverage. - **[x] P2 capacity budgets:** dashboard/team query caps, failed-job retention, embedding cache budgets, and long-lived project cache eviction shipped in merge commit `3a3dd49` through PR #306. The full local regression, real background-start smoke, and all seven remote CI checks passed. ## 1.9.x Capacity Slice (2026-09-21) - [x] TeamStore agents, locks, tasks, and inboxes are SQL-limited to 100 rows by default and 500 maximum; task/agent detail queries remain separate. - [x] Completed maintenance history is retained for 7 days and failed diagnostics for 30 days, both covered by retention tests. - [x] API, FastEmbed, and Transformers embedding caches enforce byte budgets; FastEmbed rejects oversized cache files before loading them. - [x] HTTP project-directory, TeamStore, and Dashboard store caches use bounded LRU-style maps instead of growing for every requested project. - [x] Local verification: lint, build, focused capacity tests (139 passed), and full regression (331 files / 3149 tests passed / 4 live embedding skipped). - [x] Remote verification: Linux, macOS, Windows, Docker control plane, Node 26 SQLite, typecheck, and MCP metadata checks all passed in PR #306. - [x] Large-store gate: 40,000 records passed on Windows/Node 22 with 51.4 s seed/index, 25.4 ms lexical search, 129.8 ms SDK reopen, 408.7 MiB peak RSS, durable HTTP/MCP/hook writes, and no failed checks. ## 1.9.x Task Continuity Ledger (2026-09-21) - [x] Added a project-scoped append-only SQLite ledger for task, requirement, decision, verification, risk, and outcome events. - [x] Added grouped MCP/CLI operations (`start`, `record`, `show`, `list`, `close`) with bounded inputs, credential redaction, and project isolation. - [x] Added optional `taskId` loading to Project Context so the bounded Workset includes continuity without changing the default prompt budget or micro tool profile. - [x] Added storage, Workset, MCP, profile, and HTTP integration tests. - [x] Added a deterministic outcome projection and replay cases for validated, at-risk, in-progress, and unverified task states. The projection is visible in structured receipts only; it does not rewrite memory relevance. ## 1.9.6 Release Closeout (2026-09-22) The release is `v1.9.6` on `main`. PR #312 merged the infrastructure closeout after the full Ubuntu, Windows, macOS, Docker, typecheck, native SQLite, and MCP metadata gates passed. - [x] Version metadata, Registry metadata, plugin manifests, changelog, and current product-line documentation are synchronized at `1.9.6`. - [x] Local full regression and MCP/HTTP/background smoke verification passed. - [x] The release keeps the 1.9.x line; no 1.10 version jump was introduced. ## 1.9.7 Release Closeout (2026-09-28) - [x] Merged contributor PR #315: transient `SQLITE_BUSY` during FTS5 setup is retried before the handle is marked unavailable. - [x] Merged contributor PR #316: runtime embedding failures use the durable lexical search path for large stores instead of returning a silent empty set. - [x] Follow-up coverage also treats provider disappearance and runtime vector dimension mismatch as embedding-unavailable states, preserving the same lexical fallback contract. - [ ] The full local regression still has two unrelated non-Git CLI prompt assertions in `tests/integration/release-blockers.test.ts`; the affected search/fallback suites and typecheck pass. - [x] npm, GitHub Release, and the official MCP Registry publish workflow are synchronized at `1.9.7`. ## 1.9.8 Release Closeout (2026-10-02) - [x] Closed #318 through PR #319: generated OpenCode plugins now support the v2 default `id`/`setup` contract while retaining v1 compatibility. - [x] Added event subscription, tool-hook, cleanup, and host session-ID coverage for the generated v2 plugin. - [x] PR #319 passed Ubuntu, macOS, Windows, Docker, typecheck, native SQLite, and MCP Registry metadata checks before merge. - [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at `1.9.8`. ## 1.9.9 Release Closeout (2026-10-02) - [x] Merged contributor PR #314: added an opt-in Requesty OpenAI-compatible memory/embedding provider with provider-specific key isolation and no new dependency. - [x] Independent verification passed: full build, focused provider/config tests (136 passed), and full regression (336 files passed, 2 skipped; 3179 tests passed, 4 skipped). - [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at `1.9.9`. ## 1.9.10 Release Closeout (2026-10-08) - [x] Merged #321 through PR #326: OpenCode 1.x now accepts the dual plugin export, receives lifecycle/file/command/message events through its generic `event` hook, and gets the Windows timeout mitigation. - [x] PR #326 passed Ubuntu, Windows, macOS, Docker, typecheck, native SQLite, and MCP Registry metadata checks. - [x] npm, GitHub Release, plugin manifests, and the official MCP Registry manifest are synchronized at `1.9.10`. ## 1.9.6 Infrastructure Closeout (2026-09-22) - [x] Added leased, observable SQLite handle registry with idle LRU eviction; HTTP dashboard/team/runtime caches release leases on eviction and shutdown. - [x] Added bounded HTTP session admission (`MEMORIX_MAX_HTTP_SESSIONS`), SQLite/runtime/session/event-loop health fields, and MCP binding root/expiry indexes. - [x] Kept the official modern MCP per-request protocol server while pooling project business runtimes behind a bounded reference-counted pool keyed by shared data directory plus project root. The legacy singleton business layer is reactivated before each business call and protected by a request gate; long-lived SSE GET streams do not occupy it. - [x] Extended continuity with verification obligation IDs, risk-aware outcome state, idempotency keys, and immediate transactions for the event cap. - [x] Added a privacy-safe orchestrator effect ledger and structured pipeline trace fields for attempts, risk tiers, effect keys, and bounded memory refs. - [x] Added the deterministic cross-session memory quality gate and package script `npm run gate:memory-quality`. ### New GitHub work - **#301 / #303:** merged through #305 and shipped in 1.9.5. Explicit `--mcp http` now configures Grok and packaged agents for one HTTP control plane; native setup and background smoke passed. - **#302 / #304:** merged through #305 and shipped in 1.9.5 after scope-aware tombstone handling, cross-project ID remapping, explicit per-user namespace validation, and mixed-project SQLite tests. - **#300:** Atlas Cloud memory preset is being carried through the 1.9.x closeout with isolated configuration tests and the normal CI gate; it is an optional provider path and does not change the default. - **#283:** resolved as documentation-only; the OpenAI-compatible OrcaRouter example and fixed-model/fallback guidance are now in `docs/CONFIGURATION.md`. - **#297:** external awesome-list request, dependent on the other repository's contribution workflow, not a Memorix code blocker. #49 and #3 remain external integration proposals with no host contract that Memorix can verify locally. - **#313:** hosted memory backend proposal remains an RFC/integration lead; any implementation must use the existing provider-agnostic sync contract and keep local SQLite canonical. - **#314:** merged and shipped in `1.9.9` after independent full-build and full-regression verification; the provider remains opt-in and local SQLite remains canonical. - **#320:** API Route provider contribution was independently verified with lint, build, 139 focused tests, and the full regression (337 files passed, 2 skipped; 3197 tests passed, 4 skipped). It remains open because GitHub's merge endpoint returned an internal error twice; no code change has been applied from it to `main`. - **#321 / #326:** merged and shipped in `1.9.10`; the dual export now supplies `server`, v1 events use the generic `event` hook, and Windows hook delivery uses a 30-second timeout mitigation. - **#318 / #319:** merged and shipped in `1.9.8`; OpenCode v2 plugin loading now supports the default `id`/`setup` contract while preserving v1 clients. ## 1.8.7 CodeGraph Main Line (2026-09-02) The published release is the CodeGraph foundation upgrade. Its single canonical plan and acceptance contract is [docs/1.8.7-CODEGRAPH.md](docs/1.8.7-CODEGRAPH.md). The work is deliberately split into P0 through P6: - P0: deterministic relation-accuracy and performance baseline. - P1: TypeScript/JavaScript/TSX AST parsing with honest Lite fallback. - P2: source-backed definitions, references, calls, imports/exports, inheritance, and test relations. - P3: atomic semantic-slice updates, affected dependency closure, and failure recovery. - P4: one task-shaped Agent context receipt instead of provider-specific orchestration. - P5: validated SCIP/external-provider normalization without configuration takeover. - P6: Dashboard, cross-platform, scale, precision, latency, and user-facing smoke acceptance. Local development uses Node/npm directly on E:. Docker is reserved for hosted CI/VPS deployment and is not part of local verification. ### 1.8.7 Release Evidence - TypeScript Compiler API indexing is persisted with source-backed symbols, imports/exports, references, calls, inheritance, test edges, parser errors, and bounded task context. Unsupported languages retain Lite structural facts. - Incremental refresh re-indexes local import dependents and replaces semantic slices atomically. Compiler failure leaves Lite facts usable and reports a partial/failed semantic state instead of claiming readiness. - The Dashboard exposes `/api/codegraph` and a separate CodeGraph health strip; it does not confuse the code evidence plane with the Memory Map. - Local gates: `npm run lint`, sequential `npm run build`, offline lock check, `316` test files passed, `3038` tests passed, stdio legacy/modern smoke, modern HTTP smoke, stateless handle/restart/isolation smoke, Dashboard API smoke, and a generated 100-file/1000-symbol CLI scale probe. - The external `@hasmcp/mcp-spec-test` runner remains not verified on this Windows host because its own Node test runner passes `E:` file paths as invalid ESM URLs before contacting the target. Official v2 direct tests and real Memorix stdio/HTTP smoke are the release evidence for this release. ## Ecosystem Watch (2026-08-28) Recent public changes reinforce the current product boundary: - The [MCP 2026-07-28 specification](https://modelcontextprotocol.io/specification/2026-07-28) makes requests self-describing and stateless-first, adds `server/discover`, and moves long-running work into the official `io.modelcontextprotocol/tasks` extension described in the [MCP changelog](https://modelcontextprotocol.io/specification/2026-07-28/changelog). Memorix now uses the official SDK v2 for the modern core while retaining the legacy path. It explicitly rejects Tasks because it has no durable MCP task implementation, and reports zero-TTL list hints instead of pretending to have a reusable list cache. - [TencentDB Agent Memory 2.0.1](https://github.com/TencentCloud/TencentDB-Agent-Memory/releases/tag/v2.0.1) emphasizes cold-start readiness, governed assets, cross-agent loading, and faster Wiki/CodeGraph processing. The useful lesson for Memorix is to expose asset readiness and provenance clearly, while keeping local project evidence authoritative instead of turning Memorix into a remote proxy hub. - [ContextBench](https://arxiv.org/abs/2602.05892) evaluates coding-agent context recall, precision, and efficiency during issue resolution, and reports that complex scaffolding does not automatically improve context use. This supports Memorix's bounded Workset and single-entry Autopilot approach. - [MemoryArena](https://memoryarena.github.io/) evaluates interdependent tasks across sessions, while [MemSyco-Bench](https://arxiv.org/abs/2607.01071) tests whether retrieved memory causes unjustified agreement, scope mistakes, or failure to reject stale facts. These are direct signals to keep continuity, evidence, feedback, conflict handling, and abstention separate. The next meaningful product work is therefore not “more memory fields”. It is making the existing lifecycle observable and trustworthy: the agent should know what is available, why a memory was selected, when it is stale, and when it is safer to abstain. ## Completed 1.8.5 Closeout (2026-08-30) P0 through P6 were completed in one release line, followed by the full local and remote gates. The release is published; the remaining open items below are separate future suggestions or contributor revisions, not hidden release work. ### P0 — Reconcile the candidate and the public surface - Apply the cleanup and transport changes to current `main` only after the final candidate has passed its full local gate and is rebuilt from that tree. - Keep the canonical Dashboard Memory Map, remove dead renderer/dependency paths, make profile counts truthful, and make CLI, MCP, README, docs, and all installed agent guidance describe the same reachable tools. - Keep `micro=9`, `lite=21`, `team=29`, and `full=48`; do not solve tool-schema bloat by silently exposing all 48 tools to every agent. ### P1 — Close the real runtime reliability gaps - Resolve #259/#260 with a real cross-platform concurrency test. The critical section must never fall back to an unlocked check-and-spawn after contention; it must either observe the existing service, wait/recheck, or fail with a useful retry message. Verify stale-lock recovery, duplicate-process cleanup, Windows hidden children, macOS launch-agent startup, and Linux service start. - Add a single readiness/status receipt showing service PID, endpoint, profile, project binding, startup state, and last failure without exposing secrets. - Make every foreground path bounded and cancellable, and make provider errors distinguish “saved locally” from “embedding still pending” so a successful write never feels hung. ### P2 — Finish MCP compatibility in this same line - Keep legacy 2025-era `initialize` and Streamable HTTP clients working while adding the 2026-07-28 stateless path, using the official SDK path rather than accumulating patches around the old SDK. - Implement and test request metadata/version negotiation, complete `server/discover`, `resultType`, response `_meta`, list cache hints, explicit unsupported-version errors, and the subscriptions extension where Memorix can give truthful semantics. Tasks remain explicitly rejected until a durable task contract exists. - Run the official v2 direct tests plus real stdio and HTTP clients. The third-party conformance runner must be recorded as an external harness failure when its Windows ESM path bug prevents it from reaching the server; unsupported features must still be rejected or reported explicitly, never represented as an empty success. ### P3 — Make memory selection honest and useful - Every task Workset gets one compact receipt: what was selected, why it was selected, source/freshness, coverage, omitted material, token budget, and whether the safe decision was to abstain. - Unify stale, conflict, feedback, retention, and provenance decisions behind the same lifecycle calculation. A memory can be useful evidence, a hint, or something to ignore; it must not become truth merely because retrieval found it. - Add deterministic multi-session and conflict tests inspired by ContextBench, MemoryArena, and MemSyco-Bench: recall, precision, noise, latency, stale rejection, scope control, and “do not agree with bad memory”. ### P4 — Finish CodeGraph and Knowledge Workspace integration - Produce one clear context receipt that distinguishes current Code State, local Lite structure, and optional semantic CodeGraph. Include freshness, coverage, provenance, limits, and the exact portion delivered to the Agent. - Keep graph relations source-backed and bounded. The Dashboard, CLI, MCP, and Knowledge Workspace must not show different “truths” for the same relation. - Make reviewed claims, durable pages, workflow inheritance, and agent/project scope visibly separate. No raw session dump or arbitrary generated document may silently become durable knowledge. ### P5 — Finish integrations without changing users’ Agent settings - Re-verify Claude Code, Codex, OpenCode, Pi/Oh-my-Pi, Gemini, Copilot, Cursor, Antigravity, Hermes, DeepSeek Harness, and WorkBuddy from their real supported entry points. Project and global installs must remain isolated and idempotent. - Accept #204 only if its current MCP scopes and skill-less behavior match official WorkBuddy documentation; preserve the contributor credit. Otherwise request the smallest missing change and keep the issue open with evidence. - Treat #3 as MCP/rules support until Qwen or iFlow publishes a verifiable hook contract. Treat #49 as an external-reachability integration boundary, not a reason to turn Memorix into an email or remote identity service. ### P6 — Finish the operator experience and repository hygiene - Keep Dashboard pages read-mostly and tied to real sources: readiness, observations, evidence, retention, sessions, coordination, Knowledge, and the single Memory Map. Empty, stale, and failed states must look different. - Verify desktop and narrow-screen layouts, especially long names, forms, graph labels, and error states. Keep the UI quiet and operational rather than adding decorative pages for every backend table. - Remove private operator files, credentials, raw session captures, stale generated artifacts, and unowned root directories from the tracked surface; retain only reproducible fixtures and canonical documentation. ### P7 — Release and issue closeout result - [x] #202 closed with the measured memory-hygiene results. - [x] #249 closed with the modern supported contract and explicit, tested rejection of durable Tasks; no complete-conformance claim is made. - [x] #259 closed after the duplicate-process gate passed; #260 was closed as superseded because its fallback is still unsafe, with contributor credit retained in the issue history. - [x] #244 merged with the bot-generated Star History assets after raw-asset reachability and data checks. - [x] README, Chinese README, API reference, setup docs, changelog, plugin manifests, release contract, and release notes were synchronized before publishing `1.8.5`. ## 1.8.6 Release Line (2026-09-01) This patch release contains only already-reviewed changes from the public contributor PRs and the release metadata update: - WorkBuddy project/global MCP configuration, project guidance, no-hook lifecycle handling, and uninstall discovery (#204, @wjxn13). - Continuation intent routing that keeps bare filler cheap without rejecting short real tasks (#266, @Tom-Ma-Ming). - Refreshed self-hosted Star History assets (#265). The release gate is local Node/npm verification plus the repository's remote CI and publish workflow. Docker remains a VPS/hosted deployment artifact and is not used for local verification. ## Agent-Memory Landscape Decision (2026-08-17) Current ecosystem research focused on TencentDB Agent Memory v2 and the upstream CodeGraph project. The signal is not that Memorix should become a remote "memory hub" or duplicate a parser engine. The useful direction is a local, evidence-bound coding-memory product with a first-class semantic code provider when the operator chooses one. - Tencent's product model unifies chat memory, skills, wiki pages, and code graphs as assignable assets. Its useful lessons are explicit readiness, compact session bootstrap, background processing receipts, and showing an Agent what assets are active. Its recent beta issue stream also demonstrates the operational cost of central queues, transactions, and broad proxy interception. - Memorix keeps its differentiator: its canonical evidence is the current local Git worktree, versioned code state, reviewed knowledge, and task-sized worksets. It must not clone private repositories to a service, intercept all model traffic through a proxy, alter unrelated Agent configuration, or present a generated graph as authoritative source truth. - The bundled Lite index is a useful local structural fallback, not a semantic CodeGraph. A healthy external CodeGraph already adds semantic context, but the UX currently describes persisted Lite state and semantic overlay state separately. This must become one explicit receipt: what was used for this task, its freshness, coverage, limits, and the token budget delivered. - The first product slice is therefore: keep JSON/context output genuinely bounded by default; make Code State versus Semantic CodeGraph unambiguous; then add an opt-in CodeGraph lifecycle adapter (detect, initialize, observe freshness, and queue bounded sync). It must never run an upstream installer that edits the user's Agent configuration. ## Historical Stability Baseline (1.5.0, stress-tested and measured) - Stress exams live in `tests/stress/` and run in the normal suite: - Corpus: 2,000 observations, 25 real searches, planted needles all hit, ranking deterministic, project isolation held, tokens 168..170. - Concurrency: 60 parallel writes with zero loss; 20 parallel same-topic upserts converge to one active record. - Session churn: 45 start/end cycles across 3 projects plus 10 parallel starts — at most one active session per project. - Long-term scale: 300 records, maintenance archives exactly the stale set (60) and supersedes exactly the older halves (40); candidates untouched. - CLI repeat: 15 repeated add/list invocations with stable exit codes and no id reuse. - Embedding lane on the operator's OpenRouter environment: `qwen/qwen3-embedding-8b` (4096d) verified live — 100-text batch in ~9.5s, cache round-trip, singleton stability. When the base URL is OpenRouter and no model is set, the default is now `qwen/qwen3-embedding-8b` instead of the OpenAI-only model (pinned by `tests/config/embedding-default-model.test.ts`). Image analysis can use a multimodal OpenRouter model (`qwen/qwen3-vl-8b-instruct`) through the LLM lane; documented in CONFIGURATION.md. - Live embedding exams stay env-gated (`MEMORIX_RUN_LIVE_EMBEDDING_TESTS=1`) and never run in CI. ## Historical Memory Hygiene Baseline (1.4.x, measured) - Session dedup: `memorix_search` demotes rows already shown in the same session and remembers the surfaced set. Session-replay exam: duplicate rate 25% → 19%, hits 4/4 and token ceiling unchanged. - Guidance hygiene: generated guidance now teaches store-the-underivable, dual-channel feedback (record successes too), verify-before-use, and the ignore contract. Guidance exam: 0/4 → 4/4 rules inside the ceiling. - Data-dir boundary pinned by `tests/config/data-dir-boundary.test.ts` (project config cannot redirect storage). - Always-on brief: every task brief opens with a "You and this workspace" block — user profile, latest session summary, and recent durable long-term memories. Exam: 0/3 → 3/3 inside the token ceiling; older fixtures without the block still pass. - Long-term self-maintenance (rule leg, no LLM required): - Explicit requests (MCP `longTerm: true`, CLI add/promote) auto-qualify on the spot instead of waiting for a manual review. - Stale qualified/approved records auto-archive after 30 days without activity; newer records auto-supersede same-title records in the same scope/kind. - Runs in the existing durable maintenance lane (`long-term-maintenance` job kind): once at session startup, again after each explicit promotion, then a daily reschedule heartbeat. Candidates are never auto-advanced; approved records are never auto-archived unless stale. - Exam: `tests/evaluation/long-term-maintenance.test.ts` 0/4 → 4/4, deterministic and offline. - Cold-feature sweep (2026-08-14, five-way audit of the whole surface): the "taught tools vs installed profile" gap is fixed — `memorix setup` now installs `--mode lite` and the repo guidance marks full-only tools; `memorix purge` gives memory retirement a real CLI entry; git `ingest_on_commit`/`max_diff_size` now actually gate ingestion; the media MCP schema hides gated actions; dead code removal, config honesty, and doc corrections land in the same batch. Exams added per item. - Exams live in `tests/evaluation/` and are deterministic and offline. ## Active Objectives 1. Keep the public repository free of operator state, local paths, credentials, raw session captures, and one-off development artifacts. 2. Keep the released integration surface honest: native-host validation is still required whenever a newly supported agent CLI becomes available. 3. Review open contributor work independently; do not merge it merely because it overlaps a planned product direction. 4. Make every bounded foreground path cancel the network work it starts, and make non-retryable provider failures fail once with a useful diagnostic. 5. Keep the 40,000-record gate fail-closed across SDK, HTTP MCP, hooks, and canonical persistence before every release that changes retrieval/storage. ## Completed Contribution Decisions - #153: accepted and merged with focused MiniMax M3 video-input tests. - #178: accepted and merged (squash) with author and co-author credit preserved on the merge commit. Adds MiniMax image-to-image via `subject_reference` across the provider layer, the media CLI, and the gated `memorix_media` MCP tool. Changelog credit for @octo-patch lands with the next release, following the #153 precedent. - #140: accepted and merged after replacing its stale release timeline with a maintained boundary-and-roadmap document. - #33, #31, #30: not merged into the superseding media/retrieval architecture. Their original authorship is preserved through #173 (PDF derivations), #174 (audio derivatives), and #175 (graph-assisted evidence expansion). - #136, #151, #179, #147, and #152: withdrawn research work. Do not use them as product or release evidence. ## Operating Rules - Git, `package.json`, and `CHANGELOG.md` are live product facts; this document records intent and next actions, not a replacement for them. - Never write secrets, account identifiers, local absolute paths, raw chat transcripts, or local tool state into tracked files. - Keep reusable public docs and test fixtures only when they are source-backed, non-sensitive, and exercised by the repository. - Do not rewrite Git history without explicit maintainer approval. Removing a file from the current tree does not erase existing forks or historical clones. ## Immediate Next Step - `1.8.7` is published and all release gates are recorded above. The current 1.9.x maintenance closeout has no known internal release blocker. - #49 and #3 remain independent integration proposals, not hidden maintenance work: neither has a verifiable host contract that can be implemented safely in the current line. ## Historical Release Notes The #174 controlled audio derivations, #175 governed one-hop graph evidence, #185 CodeBuddy integration, and #184 Star History CI verification are merged and included in the published 1.4.3 release. The local machine does not have the CodeBuddy CLI installed, so a native CodeBuddy-host smoke remains a documented follow-up rather than claimed release evidence. Legacy requests #49/#3 remain independent of the 1.4.4 line. - 1.4.4 published (2026-08-14) through the GitHub publish workflow; the #194 reporter has been notified with the shipped version. - DeepSeek Harness support implemented and merged via PR #201 (2026-08-14): `memorix setup --agent dsh` installs the `@deepseek-ai/dsh-mcp-client` row into `$DSH_HOME/cordis.patch.yml`, AGENTS.md guidance, and skills. Native validation composed the generated patch with the real `@deepseek-ai/dsh@0.1.0-rc.6` launcher. Shipped in the published 1.4.5 release. - Branch protection on `main` was synced with the current CI matrix (2026-08-14): the required status contexts referenced removed Node 20 test jobs, which blocked every PR from merging. Required contexts are now the live `test (ubuntu-latest, 22)`, `test (windows-latest, 22)`, and `typecheck`; the one-approval review requirement is unchanged. - Old GitHub releases before v1.2.0 were pruned from the Releases page (2026-08-14); git tags and the full CHANGELOG history are preserved.