Skip to content

Latest commit

 

History

History
768 lines (498 loc) · 93.9 KB

File metadata and controls

768 lines (498 loc) · 93.9 KB

Changelog

All notable changes to MemClaw are documented in this file. Format follows Keep a Changelog and the project adheres to Semantic Versioning. Subsequent releases are produced by release-please from Conventional Commits.

2.26.0 (2026-07-29)

Features

  • interviewer: async submit — persist window, accept fast, synthesize in the scheduler sweep (#667) (b66f82f)

Bug Fixes

  • core-api: reserved-id guard as a storage-boundary chokepoint + episode-path regression test (#670) (41f1152)

2.25.0 (2026-07-28)

Features

  • plugin: interviewer task-trail capture — mirror OpenClaw task_runs into the interview buffer (#658) (ba5f4b7)

Bug Fixes

  • client-ci: pin ruff to the 0.15 line so client CI stops floating into 0.16 (#655) (24a137a)
  • embedding: make batch-failure re-embed fallback durable (#653) (b489c8f)
  • logging: route uvicorn parent-supervisor lines through structlog (#661) (b61fcb5)

Performance

  • entities: add HNSW index on entities.name_embedding (#660) (f8e8229)

Dependencies

  • bump the uv-minor-patch group across 4 directories with 8 updates (#649) (79857d4)

2.24.1 (2026-07-27)

Bug Fixes

  • lifecycle: pin the crystallize spend gate to literal status='active' (#628) (0f0ae91)
  • storage: count missing embeddings instead of len()-ing a LIMITed fetch (#631) (469678b)
  • storage: provision test DB via migrations; accept omitted tenant_id on /count (#630) (b5fa7f8)

2.24.0 (2026-07-26)

Features

  • agent-digest: stop over-filtering agents — floor, episode-fallback, subagent rollup (#624) (1df326f)
  • client: memclaw-interviewer --harness cursor — Cursor adapter (Interviewer Phase 3) (#612) (efe2ff1)
  • search: unified relevance-dominant ranking formula behind score_formula flag (#622) (c721c6d)
  • skills-inbox: scan findings on the card + truncated page flag (Phase B backend) (#587) (dce9e59)

Bug Fixes

  • common: guard ddtrace call in the structlog processor (#615) (cad8287)
  • core-api: bulk unknown memory_type → per-item 207 (stacked on #619) (#621) (5d80392)
  • interviewer: preserve exact figures in synthesis + document list-limit cap (#623) (ebc4bbb)
  • logging: correlate structlog output with Datadog APM traces (#614) (dbd0742)
  • mcp: allow own-fleet list/stats reads at trust 1 (#617) (1a6fe9f)

Dependencies

  • actions: bump actions/checkout from 4 to 7 (#435) (63cb824)
  • actions: bump actions/stale from 9.1.0 to 10.4.0 (#593) (db1f8cb)
  • actions: bump the actions group with 8 updates (#591) (39b8d09)
  • bump @playwright/test from 1.59.0 to 1.61.1 (#499) (a6ddf1f)
  • core-api: bump the uv-minor-patch group in /core-api with 16 updates (#605) (dde9cac)
  • core-api: update redis[hiredis] requirement from <9,>=5.0 to >=8.0.1,<9 in /core-api (#609) (5e16fb9)
  • core-api: update sentry-sdk[fastapi] requirement from <3,>=2.0 to >=2.66.0,<3 in /core-api (#608) (3739f62)
  • core-api: update setuptools requirement from >=75 to >=83.0.0 in /core-api (#607) (a55e120)
  • core-api: update uvicorn[standard] requirement from <1,>=0.34 to >=0.51.0,<1 in /core-api (#606) (fa4b8b8)
  • core-operations: bump the uv-minor-patch group in /core-operations with 6 updates (#595) (2d40ecf)
  • core-operations: update setuptools requirement from >=75 to >=83.0.0 in /core-operations (#597) (60ffa11)
  • core-operations: update uvicorn[standard] requirement from <1,>=0.34 to >=0.51.0,<1 in /core-operations (#596) (197d25a)
  • core-storage-api: bump the uv-minor-patch group in /core-storage-api with 10 updates (#598) (ef60419)
  • core-storage-api: update setuptools requirement from >=75 to >=83.0.0 in /core-storage-api (#602) (c6a35d0)
  • core-storage-api: update sqlalchemy[asyncio] requirement from <3,>=2.0 to >=2.0.51,<3 in /core-storage-api (#453) (1b87d82)
  • core-storage-api: update uvicorn[standard] requirement from <1,>=0.34 to >=0.51.0,<1 in /core-storage-api (#600) (25c2eb8)
  • core-worker: bump sentence-transformers from 3.4.1 to 5.6.0 in /core-worker (#601) (b4c7df2)
  • core-worker: bump setuptools from 81.0.0 to 83.0.0 in /core-worker (#604) (afb07b1)
  • core-worker: bump the uv-minor-patch group in /core-worker with 8 updates (#599) (e4c1fbe)
  • core-worker: update uvicorn[standard] requirement from <1,>=0.34 to >=0.51.0,<1 in /core-worker (#603) (7b89597)
  • group Dependabot minor/patch bumps per ecosystem (#588) (49ccc11)
  • plugin: bump @types/node from 25.4.0 to 26.1.1 in /plugin (#546) (caa2659)
  • plugin: upgrade TypeScript to 7 (supersedes #547) (#611) (081551e)
  • update argon2-cffi requirement from >=23.1 to >=25.1.0 (#443) (309b785)
  • update cachetools requirement from >=5.3 to >=7.1.4 (#440) (516b81f)
  • update google-genai requirement from >=0.3 to >=2.12.1 (#590) (e274048)
  • update mcp requirement from <2,>=1.26 to >=1.28.1,<2 (#592) (8963d0b)
  • update sentry-sdk requirement from <3,>=2.0 to >=2.66.0,<3 (#594) (cc4d6be)

Documentation

  • OSS-side fixes from the 2026-07-26 product-coordination audit (#625) (71debfd)
  • readme: document the Interviewer feature (#613) (62c21e7)

2.23.0 (2026-07-20)

Features

  • auth: read gateway-plumbed X-Org-Role into AuthContext (Skills Inbox A2, reader side) (#583) (5680c7c)
  • client: memclaw-interviewer — Claude Code disk-parser adapter (Interviewer Phase 2) (#581) (bef753c)
  • memories: list filters — created_after/before + exclude_memory_types (#573) (fd597c7)
  • search: cosine-dominant candidate pool selection (A49), off by default (#579) (1ce740a)

Bug Fixes

  • ci: publish semver image tags for component-prefixed release tags (#580) (5918ed8)
  • clients: raise on unexpected search() response shape (#510) (#539) (5af356e)
  • core-api: map unhandled upstream 5xx/429 to a retryable 503 (#575) (0ecc274)
  • fleet: dedup the outdated-plugin heartbeat warning (#574) (b912f71)
  • interview: latency budgets for realistic submit windows (real-LLM pilot finding) (#572) (740505d)
  • mcp: add warning when top_k is capped and document search limit (#516) (df259cf)
  • skills-inbox: converge the inbox card contract with the dashboard UI (A1) (#582) (3ab73b4)

Documentation

  • document TESTING=1 env var with production-danger warning (#544) (13a256c)
  • fix agent install reference (#542) (30d9bc9)
  • Skills Inbox REST API reference (Skill Factory GA prep) (#578) (6625bd1)

2.22.0 (2026-07-18)

Features

  • interview: Interviewer Phase 1 — server side (submit endpoint, worker, scheduler) (#558) (ca82758)
  • memories: attribute broker bulk writes to the originating agent (#556) (42c76f9)
  • memories: enforce broker-write ownership boundary on the MCP write path (#565) (3e8bbaa)
  • memories: enforce per-agent approval gate on MCP writes (#568) (f2cabcd)
  • memories: extend broker-write ownership boundary to evolve/insights (#566) (6c1b742)
  • memories: extend broker-write ownership boundary to ingest/stm (#569) (12c1cd9)
  • memories: extend broker-write ownership boundary to single writes (#562) (e81f9f1)
  • memories: surface agent display_name on memory responses (#559) (809bb2b)
  • memories: verify broker-write agent ownership (lenient) (#560) (730fc19)
  • plugin: Interviewer Phase 1 — OpenClaw plugin side (durable buffer + interview_request handler) (#564) (5e2d5e7)

Bug Fixes

  • agent-digest: drop placeholder rows + stop 'thin memories' narratives (#557) (9c39fd0)
  • logging: emit Datadog status field so log levels survive intake (#561) (75672dc)
  • logging: format-stabilize the severity set for the vendored copy (#563) (5c88870)
  • recall: don't inflate recall_count on agentless recalls (A26) (#549) (c2ea3df)
  • reports: salvage empty-narrative digests + period-scaled activity floor (#545) (84459e9)

2.21.0 (2026-07-09)

Features

  • insights: give the nightly insights run a dedicated registered identity (#540) (e74413d)
  • reports: weekly agent-digest cron tick [CAURA-222] (#543) (2adad51)

2.20.0 (2026-07-08)

Features

  • plugin: opt-in recall-gating + cross-agent recall (F2/A44) (#530) (a68b3d0)
  • reports: agent-activity digest — Phase 1 (inert read slice) [CAURA-222] (#533) (d0d458f)
  • reports: agent-activity digest generation — Phase 2 [CAURA-222] (#537) (4595284)
  • search: tenant-wide default search profile (agent > tenant > constant) (#534) (09faf6a)

Bug Fixes

  • reports: count agent-private durable writes in report aggregates (#535) (f8c7914)
  • scoring: cap freshness at 1.0 for future ts_valid_start (A43) (#529) (b128553)

2.19.0 (2026-07-05)

Features

  • core-api,plugin: self-identify MCP writes when the verified id is reserved "main" (#507) (1bc00c1)
  • core-api: governed daily/weekly agent activity report (GET /api/v1/reports) (#514) (d6c569d)
  • core-api: reserve agent_id "main" on the write path (Phase 1) (#505) (1d313f9)
  • observability: log auto /search recalls behind a separate flag (#503) (f411db2)
  • observability: sample below-floor near-misses on the /search recall log (#506) (9b18bd9)

Bug Fixes

  • core-api: don't 422 the whole heartbeat on an oversized observability blob (#497) (77bfcbe)
  • core-api: stop passing removed positional db to log_action on write path (#495) (3f89218)
  • core-operations: configure logging at import so uvicorn startup lines aren't tagged ERROR (#523) (ff88064)
  • logging: floor ddtrace trace/LLMObs writer loggers at CRITICAL (#522) (a878d84)

Performance

  • recall: cap summary max_tokens and fail fast on slow provider (#515) (5fd98b1)

Documentation

  • readme: add Skill Factory overview [slice 1] (#504) (cf8bfe9)

2.18.0 (2026-06-25)

Features

  • skill: curb trivial memory writes in agent guidance (#494) (d7bca1f)

Bug Fixes

  • core-api: correct get_memory_ids_by_entity_ids return type to list[dict] (#493) (3d208e3)

Code Refactoring

  • core-api: delete direct DB pool, route all DB access via core-storage-api (Fix 2 final cleanup) (#491) (9e6d7f8)

2.17.0 (2026-06-24)

Features

  • audit: tamper-evident per-tenant hash chain for audit_log (eToro governance) (#397) (baaa493)
  • core-api: cross-worker settings-cache invalidation (CAURA-571) (#418) (86bbe9e)
  • core-api: fast business/personal pre-gate before enrichment (opt-in) (#403) (095c360)
  • core-api: install-skill ?skill= selector + company-brain import path (#483) (a2a764e)
  • core-api: route documents + fleet residuals through core-storage-api (Fix 2 Phase 3) (#431) (ad2a2d9)
  • core-api: route mcp_server's 9 ready tools through core-storage-api (Fix 2 Phase 4) (#432) (dc0b674)
  • core-api: route memory REST surface through core-storage-api (Fix 2 Phase 2) (#429) (1e39c59)
  • core-api: route organization_settings through core-storage-api (Fix 2 Phase 0) (#427) (4450ec0)
  • core-api: route tenant-discovery through core-storage-api (Fix 2 Phase 1) (#428) (f05f498)
  • core-storage-api: crystallizer entity-coverage + audit-usage reads (Fix 2 final-cleanup PR3a) (#486) (0737b6a)
  • core-storage-api: recall/capability/ingest endpoints for Fix-2 final cleanup (PR1) (#484) (d8b18d0)
  • core-storage-api: route entity-linking pipeline through storage (Fix 2 Ph6) (#477) (74a18d7)
  • core-storage-api: route evolve through storage + delete _mcp_session (Fix 2 Ph5b, PR2) (#472) (44743e1)
  • core-storage-api: route insights_service through storage (Fix 2 Ph5b, PR1 — insights) (#471) (2655b84)
  • core-storage-api: route the skill-factory pipeline through storage (Fix 2 Ph5a) (#470) (81e79be)
  • governance: ingestion-boundary PII + business/personal gate (eToro) (#398) (12860af)
  • plugin: additive-mode skill reconcile with ownership marker (PR2) (#417) (3d970ef)
  • plugin: auto-register additive skill dirs on OpenClaw's load path (PR3b) (#425) (819a77f)
  • plugin: per-target reconcile observability (PR3a) (#424) (04120f2)
  • recall: opt-in logging of agent-chosen recalls (#480) (953ec33)
  • skills: refresh canonical + plugin memclaw skills, add company-brain (#482) (aa03c03)

Bug Fixes

  • audit: idempotent bulk flush via client_event_id — stop dropping audit rows (#407) (bf87e64)
  • core-api: cut prod connect-timeout + rate-limit-Redis log noise (#426) (a082f3f)
  • core-api: harden business/personal pre-gate (timeout, audit truth, fail-closed, audit durability) (#416) (aa4be8e)
  • core-api: keep-alive pool + bounded entity-context fan-out (VPC-connector ConnectTimeout residual) (#434) (0ba51b4)
  • core-api: per-tenant embed concurrency cap (noisy-neighbor-search) (#464) (043c02e)
  • core-api: re-route third-party loggers from the ASGI lifespan startup (#473) (8f8f39e)
  • core-api: resolve home fleet on omitted fleet_id for MCP writes (#465) (56db1f5)
  • core-api: route recall/capability writes through storage (Fix-2 cleanup PR2) (#485) (592b231)
  • core-api: self-heal storage pool + cancellation-safe requests (CAURA-000) (#415) (5889e3f)
  • core-api: stamp version into image so /api/v1/version stops serving "dev" (CAURA-000) (#414) (4d1c486)
  • core-api: surface write-pipeline step failures instead of masking as KeyError (#474) (5d359b2)
  • core-storage-api: 404 (not silent 200) on wrong-tenant embedding write (#468) (bec8229)
  • core-storage-api: 422 on missing/non-list embedding in /entities/set-embeddings (#478) (6268725)
  • core-storage-api: followers skip the migration lock once schema is at head (#487) (8a7ac37)
  • core-storage-api: tenant-guard by-id memory UPDATEs (#467) (4248b4d)
  • extraction: re-fold split-off subject discriminators (A33) (#412) (ab0d2d6)
  • http-retry: widen connection-phase retry to ride out storage cold starts (#406) (5bbede7)
  • logging: demote handler-less reroute 'no-op' to DEBUG (records aren't lost) (#488) (9bdbe44)
  • prompts: stop brace-escaping content before str.format (#404) (ba94a54)
  • rate-limit: fail open on Redis outage instead of 500 (view_rate_limit AttributeError) (#410) (53b467d)
  • recall: tighten recall-brief grounding to stop invented details (#489) (6794f3e)
  • search: dampen recall_boost so it can't hijack rankings (A26) (#411) (1de219c)
  • search: rank entity-lookup fan-out cap by query-match count (A30) (#409) (8f809c0)
  • storage: harden migration advisory-lock so a slow migration can't crash booting writers (#408) (54cbe1a)

Performance

  • core-api: make document-ingest (kreuzberg) an opt-in extra to cut cold start (#469) (1f082d8)

Documentation

  • core-api: clarify memclaw_recall top_k is soft-capped, not rejected (#481) (6938f08)
  • core-api: document LLM free-form PII recall limit (recommend a capable enrichment model) (#419) (36b1b30)
  • point all memclaw.dev links to memclaw.net (#475) (a6f9ad1)

Code Refactoring

  • core-storage-api: consolidate router validation guards into _validation (#479) (e9dd9ca)
  • plugin: configurable skill-reconcile targets (PR1 — refactor + config plumbing) (#413) (57e5e96)

2.16.0 (2026-06-15)

Features

  • core-api: capability-usage adoption counters (MCP + REST) (#353) (0421ceb)

Bug Fixes

  • compose: stop shadowing .env provider keys with empty "${VAR:-}" passthroughs (#346) (8ab95d8)
  • core-api: make the CAURA-602 startup guard FastAPI-0.137-proof (#364) (65de110)
  • deps: cap fastapi <0.137 to unbreak CI (#359) (561d5c9)
  • fleet: cap auto-upgrade re-queue with a per-(node,target) attempt budget (CAURA-000) (#351) (22a3ac0)
  • keystones: let the standalone operator author keystones out-of-the-box (F-7) (#354) (d62c36a)
  • plugin: send X-Bulk-Attempt-Id header on bulk memory writes (#355) (a4515ed)
  • search: return raw cosine in similarity, not the ranking composite (F-14) (#392) (3865600)
  • search: surface conflicted memories that exactly match the query (#357) (c00a3f7)

Documentation

  • add top-level BENCHMARKS.md as a citable benchmark asset (#349) (fc6d563)
  • comparison table — "PII detection & flagging", not "quarantine" (#345) (3bb7b1c)
  • core-api: document the redis<9 cap rationale (review follow-up) (#395) (cd5420c)
  • lead Quick Start with a no-key, no-signup local quickstart (#348) (91ee613)
  • README write-response field names match payload (#361) (2ecc098)

Code Refactoring

  • api: unify evolve/insights caller-identity resolution; close F-7 tail (§2) (#400) (f4af240)

2.15.0 (2026-06-13)

Features

  • skills: gate the OpenClaw install path to active-only skills (#317) (50488fc)
  • skills: per-node skill-reconcile observability on the heartbeat (#325) (d806114)

Bug Fixes

  • api: close cross-tenant and caller-asserted-identity authz gaps (#320) (fcf96c7)
  • api: default agent_id to "mcp-agent" on standalone POST /memories (#339) (4d2d6ef)
  • core-worker: retry connection-phase failures on storage calls — shared policy in common/http_retry (#334) (43b3d81)
  • cross-links: single multi-VALUES insert — executemany cannot RETURN rows (#337) (8bbdeed)
  • cross-tenant search widening, non-default LLM structured-output kwargs, event deploy safety (#322) (f161607)
  • embedding: fall back to default model when OPENAI_EMBEDDING_MODEL is empty (#336) (d1f1f5a)
  • entities: scope-filter relations in get_entity and drop the per-memory agent lookup (#321) (e355f87)
  • entity-linking: bind reinforce weight directly — LEAST over untyped params coerced to text (#341) (b4a5712)
  • entity-linking: synchronize_session=False on the entity-embedding backfill bulk update (#342) (c310ecf)
  • events: publisher candidate cleanups also called the nonexistent close() (#331) (610fe8e)
  • events: pubsub shutdown never flushed the publisher — final batches silently lost (#330) (1c2aba5)
  • llm: explicit httpx per-phase timeouts — 5s connect too tight behind VPC connector (#332) (ea89a61)
  • logging: reroute idempotency guard mis-keys on captured handlers (#328) (352689d)
  • mcp: enforce gateway perimeter on the /mcp header-trust path (#319) (109d837)
  • mcp: memclaw_tune crashed with 'dict' object has no attribute 'id' (#338) (30e3cff)
  • plugin: point agents at the memclaw skill by name, not by filesystem path (CAURA-000) (#323) (ec3fcaf)
  • release: keep plugin/src/version.ts in sync on release-please PRs (#335) (e26a3c5)
  • search: consume the inflight embedding future's exception when no joiner awaits it (#340) (a06ec53)
  • search: skip entity hop-boost when classifier declined the entity match as over-broad (#327) (4744732)
  • storage-client: retry POSTs on connection-phase failures — never-sent requests cannot double-insert (#333) (2d91e33)

Documentation

  • add eToro proof, comparison table, FAQ, and star ask to README (#326) (e6395b5)
  • bump eToro memory count 21,500 → 26,500 + social card (#329) (ea0e52b)
  • correct Claude Code MCP setup — claude mcp add -s user, not settings.json (#343) (fc6324b)
  • fix README/AGENT-INSTALL inaccuracies (PII, health shape, write response) (#344) (2dea567)

2.14.0 (2026-06-10)

Features

  • skills: auto-approve clean Forge candidates (skip HITL inbox) (#313) (6f3452d)
  • skills: MCP-direct delivery — agents discover only active skills (#315) (1ac4f1f)
  • skills: wire Forge into the lifecycle cron fanout (#311) (0523ed0)

Documentation

  • replace concept SVG with rendered PNG diagram in README (#316) (f32ba1b)

2.13.0 (2026-06-08)

Features

  • embedding: let the platform singleton target a self-hosted endpoint (#291) (0991cef)
  • graph-build: drop literal/attr entity nodes, block suffix-distinct merges, rerank entity_lookup by query overlap (#304) (f3a0f7c)
  • skills: Skill Factory · Phases 0, 1, and 2 (partial — backend only) (#293) (f654ddb)

Bug Fixes

  • events: drop cross-environment Pub/Sub fan-out messages (#297) (4f03679)
  • events: env-scoped topic prefix for PubSubEventBus (no-op default) (#295) (0864274)
  • evolve: pass weight_adjustment_skipped_reason from MCP evolve path (#299) (b7d0f2f)
  • fleet: bound deploy-queue runaway when a previous deploy is acked (CAURA-000) (#305) (a94d0ab)
  • plugin: bound resolveTenantId fetch with AbortSignal timeout (CAURA-000) (#292) (a3532a4)
  • plugin: don't create plugins.allow from nothing on autoFix (CAURA-000) (#307) (2aab828)
  • plugin: memoize bootstrap at process level (CAURA-000) (#303) (3bbb559)
  • plugin: schedule restart AFTER result POST resolves (CAURA-000) (#306) (fe8ad26)
  • plugin: suppress bootstrap agent-id warn + swallow afterTurn 409 (CAURA-000) (#300) (6705315)
  • return real columns from cross-link insert instead of nonexistent id (#298) (7ddb78b)
  • search: bound graph BFS frontier to prevent unbounded IN-clause (CAURA-000 F4) (#301) (b7d73d4)

2.12.1 (2026-06-07)

Documentation

  • contributing: warn about commit subjects that break release-please (#285) (ea829db)

Code Refactoring

  • rename cryptic sp to search_params in ClassifyQuery (#287) (bad3109)

2.12.0 (2026-06-03)

Features

  • api: reject server-reserved memory_types at write boundary (C3, C8) (#261) (0abd727)
  • api: surface near_duplicate_of in default-mode write metadata (A21) (#266) (e7f9bc8)
  • core-api: add fleet-scoped hard-purge endpoint (#275) (cd9e2a6)
  • core: deletion-preview counts (CAURA-696 PR A — OSS half) (#246) (454a233)
  • core: OSS suppression mirror + boundary guard (CAURA-694) (#244) (64cf3e4)
  • evolve: surface weight-adjustment skip reason (A15) (#257) (5f314d9)
  • lifecycle: align all lifecycle crons to a fixed UTC hour, not boot-relative intervals (#278) (6b73bba)
  • lifecycle: run insights cron at a fixed UTC hour, not a boot-relative interval (#277) (bca3ddd)
  • plugin: bump MEMCLAW_KEYSTONES_TOKEN_CAP default 500 → 1500 (CAURA-000) (#249) (6c3b021)
  • storage: purge_org_data primitive for org hard-delete (CAURA-689) (#241) (f3d896b)

Bug Fixes

  • api: accept metadata_mode as a query param on PATCH /memories/{id} (C7) (#265) (808f4c5)
  • mcp: extend mcp-agent default refusal to all read tools (A29) (#263) (1cccbe3)
  • mcp: extend mcp-agent default refusal to all write tools (A14) (#256) (887c702)
  • plugin: context-engine auto-recall, smoke cleanup & post-upgrade allowlist drift (#274) (573857c)
  • plugin: tolerate undefined config in ContextEngine constructor (CAURA-000) (#247) (78e10fb)
  • recall: add items alias key to /recall response (C4) (#262) (88ca5a8)
  • search: dedup per-tenant storage_search slot on entity-lookup fall-through (C10) (#264) (905db5c)
  • search: include EMBEDDING_QUERY_INSTRUCTION in embedding cache key (C9) (#259) (595300a)
  • search: per-task timeout for parallel_embed_entity_boost (D7) (#260) (68f1977)
  • search: share entity tokenizer between FTS-weight + entity-FTS gates (A27) (#258) (71fd841)
  • security: block agent credentials from agent-management & settings (trust self-escalation) (#252) (8475901)
  • security: enforce fleet/agent scope on by-id memory access (#250) (fde5ceb)
  • security: enforce fleet/agent scope on entity reads + document deletes (#253) (dab6b71)
  • security: gateway-shared-secret gate on the X-Tenant-ID auth path (CRITICAL-1, app side) (#254) (045039f)
  • security: require admin-trust for bulk/whole-tenant memory deletes (#251) (9fcac01)
  • version-compat: bump MIN_RECOMMENDED_PLUGIN_VERSION to 2.7.0 (#279) (7238180)

Performance

  • entity-extraction: collapse worker N+1 storage HTTPs (P1) (#245) (e2d805e)

Documentation

  • fix stale API paths, tool counts, and version references (#255) (496717e)

2.11.0 (2026-05-28)

Features

  • events: subscription manifest to guard infra provisioning (#240) (6332c25)
  • lifecycle: add insights daily cron (#238) (b17482d)
  • plugin-manifest: include min_auto_deploy_plugin_version (#225) (09bac0a)
  • storage-api: add /_debug/pg_locks endpoint for live lock investigation (CAURA-686) (#219) (80b2eed)

Bug Fixes

  • core-api: bump storage_client httpx pool limits 100/50 -> 200/150 (CAURA-682) (#224) (240e0b3)
  • logging: propagate stdlib logger extras into structlog JSON (#209) (43240ca)
  • mcp: wire read-only scope gate and reset ContextVars per request (#210) (7f21f14)
  • plugin: delegate compaction to OpenClaw runtime SDK to unwedge over-budget groups (CAURA-000) (#234) (6e70d3f)
  • plugin: wire keystones into WhatsApp system prompts end-to-end (CAURA-000) (#212) (cb54bda)
  • storage-api: bulk-insert memory_entity_links with ON CONFLICT DO NOTHING (CAURA-686) (#220) (7ab127a)
  • storage: drop name_embedding/search_vector from entity payloads (#206) (731ec6c)
  • version-compat: bump MIN_RECOMMENDED_PLUGIN_VERSION to 2.6.3 (#226) (bf9021c)
  • version-compat: bump MIN_RECOMMENDED_PLUGIN_VERSION to 2.6.4 (#242) (f5668f6)
  • write: skip embedding-cache lookup when embedding is deferred (CAURA-682) (#216) (195176d)

Performance

  • contradiction: collapse N+1 status updates into batch_update_status per path (P2) (#236) (2c8942c)
  • crystallizer: collapse archive-sweep N+1 storage HTTPs (P5) (#239) (751108c)
  • ingest: route ingest_commit through create_memories_bulk (#227) (245b947)
  • mcp: close DB session before evolve LLM round-trip (#232) (d652777)
  • mcp: close DB session before insights LLM round-trip (#231) (a8af687)
  • mcp: close DB session before recall brief LLM round-trip (#228) (13f09b6)
  • recall: add stampede guard to query-embedding cache (#213) (677032f)
  • recall: close DB session before LLM brief on REST /recall (#233) (21f8434)
  • stats: collapse compute_memory_stats into one GROUPING SETS query (#214) (63310a1)

Documentation

  • memories: document PATCH concurrency contract (#208) (d2c452c)

2.10.0 (2026-05-25)

Features

  • core-api: per-phase write-latency instrumentation (CAURA-682 Phase 1) (#201) (d28055e)

Bug Fixes

  • version-compat: bump MIN_RECOMMENDED_PLUGIN_VERSION to 2.6.2 (#204) (3ae24a3)

2.9.0 (2026-05-24)

Features

  • contradiction: back-channel idempotency on detection entry (A4 #14) (#188) (f370fad)
  • contradiction: Path C re-judges and retracts wrong Path A verdicts (A4 #13) (#187) (1669690)
  • contradiction: widen _llm_contradiction_check to (verdict, confidence) (A4 #12) (#186) (0c332a3)
  • dedup: add two-tier dedup threshold constants (A1 #15) (#190) (dcc41ae)
  • dedup: backend review queue for ambiguous decisions (A1 #18) (#194) (bf6dce7)
  • dedup: identifier pre-filter in CheckSemanticDuplicate (A1) (#195) (a578a35)
  • evolve: surface rule-synthesis skip reason on every path (A10) (#199) (b16de2b)
  • storage: find_entity_overlap_candidates surfaces conflicted supersedes_of target (A4 #11) (#185) (f120f55)

Bug Fixes

  • enrichment: action/episode few-shot disambiguation (A9) (#198) (81ec08f)
  • enrichment: tighten tag generation prompt + normalising validator (A8) (#197) (6bea431)
  • plugin: conform to OpenClaw MemoryFlushPlan contract (CAURA-000) (#191) (ea750c7)
  • search: query classifier recall on entity-token queries (A7) (#196) (670549b)
  • storage: invert A4 #11 include_supersedes filter direction (#189) (831897d)

Code Refactoring

  • config: delete legacy embed/enrich_on_hot_path flags + asymmetric branch (F3 Phase 3) (#183) (9116e80)

2.8.0 (2026-05-20)

Features

  • config: add deployment_mode setting alongside legacy flags (F3 Phase 1) (#173) (1cc30b0)
  • entity-extraction: plumb tenant_config through worker → extractor (A5c) (#170) (62bdee9)
  • entity-extraction: prompt + schema overhaul (A5b) (#169) (7c0d862)
  • storage: support retracting supersedes_id verdicts (A4 #10) (#171) (ccebcb5)
  • widen cross-tenant credential reads across all surfaces + audit emission + /whoami scope (#164) (0afacdb)

Bug Fixes

  • entity-extraction: deterministic seed + first-seen canonical preservation (A5a) (#167) (0a27e66)
  • mcp: disable auto-generated output schema on tool registrations (#180) (61d19a4)
  • mcp: MISSING_AGENT_ID error no longer points at deprecated mca_ keys (#161) (c7525bf)
  • plugin: close install-script alsoAllow drift + manifest version drift (CAURA-444) (#181) (28f22aa)
  • release-please: correct openclaw.plugin.json path under the plugin package (#182) (630653c)
  • tests: make rate-limit burst tests reliable + defensively unset MEMCLAW_API_KEY (#177) (bc5e144)

Code Refactoring

  • memory_service: migrate 7 legacy flag reads onto deployment_mode (F3 Phase 2c) (#178) (17d8635)
  • pipeline: migrate parallel_embed_enrich onto deployment_mode (F3 Phase 2 batch 1) (#174) (1a36481)

2.7.0 (2026-05-18)

Features

  • core-api: cross-tenant read plumbing + capabilities (#154) (27b02f6)

2.6.0 (2026-05-17)

Features

  • core-api: install-credential auth context + http:// ID-token bypass (#146) (160e143)
  • ingest: 3 MB body cap + POST /ingest/file + text/csv support (#130) (eb1e3ce)
  • ingest: parent Document per batch + run_id index + undo migration (#134) (f2e0204)
  • memories: add run_id query filter to /api/memories (#145) (1063590)
  • plugin: decouple plugin release cadence from backend (#131) (ac6c0f2)

Bug Fixes

  • ingest: preserve uploaded filename in source_uri (#133) (b25e609)
  • search: trust has_embedding sentinel in post-filter for FTS-only rows (#150) (cc1d311)
  • write: close fast-branch coverage holes + add always-fire detection logs (#152) (ffb26fd)
  • write: make ParallelEmbedEnrich deferral write_mode-aware (#151) (f2236ad)

2.5.0 (2026-05-11)

Features

  • core-storage: keystone-rule CRUD on _keystones collection (CAURA-000) (#109) (bd94a9e)
  • fleet-stats: include agent trust_level in per-agent records (#116) (1c0e6e7)

Bug Fixes

  • ingest: harden URL fetch (Content-Type allowlist + size cap + SS… (#115) (9a36656)
  • ingest: strong-mode writes + pre-loop dedup + parallel commit (P… (#117) (8359df1)

2.4.0 (2026-05-10)

Features

  • fleet-stats: add memory-status totals to fleet_summary (#107) (866c5ac)
  • recall: exclude superseded memories from default search results (#106) (dc03047)
  • stats: add include_deleted option to memclaw_stats / /memories/stats (#105) (d8121f6)

Bug Fixes

  • cache: include VECTOR_DIM in qemb query-embedding cache key (CAURA-644) (#69) (761161c)
  • core-api: align write/query embedding surface (CAURA-222) (#104) (9ff97cd)
  • release-please: add signoff so release PRs pass DCO (#101) (50369b0)

2.3.0 (2026-05-06)

Features

  • plugin: synthesize skill frontmatter + anchor catalog discovery (#99) (54f2eb4)

2.2.0 (2026-05-06)

Features

  • skills as documents (Phase A) — plugin reconciler (#94) (7789091)

Bug Fixes

  • core-api: read version from installed package metadata (#96) (1add99e)

Documentation

  • align tool count to 10 in README and integration guide (#98) (fba2903)

2.1.0 (2026-05-06)

Features

  • add security.session_idle_timeout_minutes org setting (CAURA-652) (#89) (d264cfe)
  • core-operations: scaffold OSS service for cron/scheduled jobs (CAURA-653) (#82) (838a54d)
  • crystallize + entity-link Pub/Sub fanout (CAURA-657) (#87) (966f1a5)
  • lifecycle ops Pub/Sub fanout via core-operations (CAURA-655) (#84) (193b0a7)
  • mcp: add memclaw_stats — aggregate memory counts on MCP (#64) (cb6d29a)
  • memory retention purge on top of lifecycle Pub/Sub fanout (CAURA-656) (#86) (7e05ee4)
  • skills as documents (Phase B) — drop dedicated tools/routes (#85) (d2bdf3b)
  • skills: agent-to-agent skill sharing across the fleet (#68) (e95b1d0)

Bug Fixes

  • core-worker: bundle Vertex SDK + improve retry log (CAURA-648) (#78) (85e54af)
  • core-worker: init platform LLM singleton on lifespan startup (CAURA-647) (#74) (8cc74dd)
  • crystallizer: /latest 404→200 null on empty (CAURA-646) (#71) (a8a63c9)
  • deps: bump google-cloud-aiplatform>=1.80, drop standalone vertexai (CAURA-650) (#80) (74c2092)
  • plugin-install: fetch openclaw.plugin.json instead of baking a HEREDOC (#81) (aedbd47)
  • plugin: auto-fill target_fleet_id on skill share/unshare (#72) (35d7202)
  • plugin: make install_on_fleet skill flow actually work end-to-end (#77) (97da9fa)
  • scripts: backfill_embeddings — str-cast + add openai to core-storage-api deps (#65) (e77a256)
  • vertex: raise typed error on non-dict JSON response (CAURA-651) (#90) (ece0081)

Reverts

  • remove security.session_idle_timeout_minutes from OSS organization_settings (CAURA-660) (#91) (094d785)

Documentation

  • complete local-embedder coverage (P0 fixes, GPU, README integration) (#70) (80fadf2)

Code Refactoring

  • rename tenant_settings → organization_settings (CAURA-654) (#83) (9494a53)

2.0.0 (2026-05-03)

⚠️ BREAKING CHANGE — local embedder + 1024-dim schema migration. v2.0.0 introduces a self-hosted embedder profile (BAAI/bge-m3 via HuggingFace TEI sidecar — see docs/local-embedder.md) and migrates the pgvector schema from 768-dim to 1024-dim (alembic 012_vector_dim_1024). Existing installations must opt in via MEMCLAW_RUN_DESTRUCTIVE_MIGRATIONS=true and re-embed afterward — see README "Upgrading from v1.x" for the procedure. Fresh installs are unaffected.

Features

  • agents: split agent_id (opaque, stable) from display_name + plugin install_id (CAURA-000) (#55) (edc79e3)
  • enrichment: consolidate memory-type vocabulary as single source of truth (CAURA-000) (#60) (223601a)
  • errors: standardize error contract across REST and MCP (#58) (6d33caf)
  • events: EVENT_BUS_PUBSUB_MAX_MESSAGES override (CAURA-636) — v2 (#48) (5fb90a1)
  • events: EVENT_BUS_PUBSUB_MAX_MESSAGES override (CAURA-636) (#46) (fb0104a)
  • infra: docker-compose pulls published images by default (#28) (3d30d97)
  • scripts: preflight_012 — DB readout before migration 012 (#59) (049ee0c)
  • standardize on POSTGRES_* env vars + README/CONTRIBUTING pre-launch cleanup (#26) (8a9d017)
  • stats: real public counters + /api/v1/status + trust soft-pass (CAURA-000) (#54) (075aefc)

Bug Fixes

  • api: include visibility in GET /memories/{memory_id} response (#40) (9562a79)
  • audit: batch + async ingest via in-memory queue (CAURA-628) (#36) (404f064)
  • audit: per-tenant slot in batch flusher to stop bulk_write contention (CAURA-631) (#44) (dde839a)
  • bulk: per-attempt idempotency + 207 Multi-Status (CAURA-602) (#23) (d2e7c1c)
  • contradiction: preserve direction invariant on re-fired detection (#41) (78a993b)
  • contradiction: scope candidate fetch by writer visibility (#38) (6e31348)
  • core-storage: exclude soft-deleted from public /stats counters (#27) (f1581a8)
  • idempotency: close concurrent-claim race with pending-row pattern (#32) (a58a719)
  • infra: point docker-compose.dev at per-service Dockerfiles (CAURA-111) (#37) (b093536)
  • llm,embedding: explicit httpx.Limits on OpenAI-compatible providers (CAURA-627) (#34) (1e2e799)
  • logging: route uvicorn / fastmcp / mcp / slowapi to root formatter (CAURA-588) (#32) (f4cc494)
  • memories: apply visibility scoping to memory count endpoints (CAURA-000) (#42) (6e26dcb)
  • memories: per-phase storage timeout for bulk-create (CAURA-599) (#33) (6ac1ca5)
  • memories: wire GET /memories/:id/contradictions to detector results (CAURA-604) (#31) (85b4a54)
  • memory: drop unused unscoped indexes ix_memories_status + ix_memories_visibility (CAURA-629) (#35) (9b2e071)
  • memory: restore ix_memories_status + ix_memories_visibility (CAURA-632) (#45) (4be9017)
  • noisy-neighbor: per-tenant asyncio.Semaphore on /search + writes (#33) (1ce87b5)
  • noisy-neighbor: per-tenant storage-roundtrip bulkhead (draft, gated on #23 loadtest) (#24) (f934d73)
  • noisy-neighbor: widen per-tenant Semaphore caps so bench loop fits (#30) (f52d4b5)
  • search: drop UUID/hex fragments before entity FTS roundtrip (#29) (320d9ac)
  • stats: defensive fallback to storage-api on DB pool exhaustion (#31) (293bd42)
  • storage: align core-storage-api DB pool defaults with platform-storage (5+5) (#25) (061155e)
  • storage: unblock migrations that use autocommit_block (#27) (835e1a7)
  • worker: per-tenant storage slot to stop noisy-neighbor PATCH-back contention (CAURA-636) (#53) (98ae9d9)
  • write: str() subject_entity_id before storage POST (#39) (7b232f5)

Documentation

  • add Discord community link to README + SUPPORT (#29) (45e55bf)

[1.0.0] - 2026-04-26

Initial public release. The public API surface and stability scope are declared in README.md § Public API & Stability.