Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 53 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,66 @@ are historical; consult the [current guides](docs/README.md) for present behavio
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [0.9.1] - 2026-11-01

This release combines Round 13 (speed) and Round 14 (retrieval quality and
document workflow improvements), merged in PRs #137 and #140. V4 HTTP routes
remain compatible. Production qualification remains **NO-GO** pending the
normal certification and production-like release gates.

### Added

- Lossless Turkish article-aware chunking for new document revisions, controlled
by `MESA_CHUNKING=auto|plain` (default `auto`). Admitted chunk text pins retry
plans; ambiguous prefixes return HTTP 409 without appending chunks.
- Optional lazy BGE cross-encoder reranking after fusion and outside the search
connection. It is off by default; enable with `MESA_RERANK_ENABLED=true` and
the existing `[ml]` extra. Results add `rerank_score` while preserving fusion
scores. Default model: `BAAI/bge-reranker-v2-m3`; depth: 50.
- Source-based document deletion through `Mesa.delete(source=...)` and
`mesa delete --source <ref>`; document-ID deletion remains available.
- Versioned, bounded search-scope caching of authorized rows and temporary
BM25 indexes, invalidated by SQLite commits. Configure it through
`MESA_SEARCH_SCOPE_CACHE` (default `true`).
- Tag-triggered PyPI trusted publishing through GitHub Actions and OIDC.

### Changed

- Set the runtime vector RRF weight to 8.0 from the frozen Tier M dev benchmark
(passage MRR 0.3953 → 0.5663 with reranking off); other lane weights remain 1.0.
The full weight/reranker matrix and model environment are recorded in the
[retrieval guide](docs/retrieval-and-graph.md#round-14-dev-benchmark).
- New document revisions use lossless Turkish article boundaries in automatic
mode. Optional BGE reranking remains off by default, and query embedding calls
run before acquiring the shared search connection.
- Index ingest ledger lookups and reconcile revision activation once per commit
transition, reducing bookkeeping growth while preserving activation rules.
- Run query embedding before the shared search connection, and scrypt API-key
verification, issuance and rotation in worker threads. Graph-disabled search
skips graph seed preparation.
- Include the OpenAI and Ollama SDKs in the base installation:
`pip install mesa-memory`. Anthropic remains in `[adapters]`.
- `mesa add` waits for the revision to become active by default; use `--no-wait`
to return after admission. SDK waiting also polls mutation status.
- Accept zero RRF lane weights to disable a lane's contribution.

### Fixed

- Fail promptly on terminal chunk mutations with their ID, state and error
class instead of waiting for the document timeout; keep retryable states
pending. CLI errors remain readable and exit with status 1.
- Retry `queue_over_capacity` during document admission within the SDK deadline.
- Preserve timestamped runtime log handlers across Alembic migrations.
- Record projection-attempt start times from the actual outbox claim time.
- Preserve the missing-ML installation message when an earlier server lifespan
left tasks associated with a closed event loop.

### Upgrade notes

- Existing active revisions keep their chunks. Use `MESA_CHUNKING=plain` for
new revisions requiring the earlier chunking plan, and
`MESA_RRF_VECTOR_WEIGHT=1` to retain the earlier vector weighting.
- The ingestion optimization adds SQLite indexes through the normal migrations.
Continue to follow the documented backup and single-owner upgrade procedure.
- Benchmark results describe the frozen Turkish Tier M dev split and the
documented model/hardware setup; they are not general performance guarantees.

## [0.9.0] - 2026-10-28

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

MESA is an LLM-independent, source-linked memory engine for AI applications. It stores documents with exact provenance (document, revision, passage) and returns verifiable, scoped evidence over HTTP, Python SDK, and MCP. MESA returns evidence; it never writes the final answer or hallucinates sources.

Package version: **0.9.0**. V4 is the current API. Production qualification remains at the release candidate stage: **NO-GO** until the [release gates](https://github.com/Yasou13/MESA/blob/main/docs/release.md) pass.
Package version: **0.9.1**. V4 is the current API. Production qualification remains at the release candidate stage: **NO-GO** until the [release gates](https://github.com/Yasou13/MESA/blob/main/docs/release.md) pass.

## Installation

Expand Down
2 changes: 1 addition & 1 deletion docker-compose.v4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ x-mesa-v4-runtime: &mesa-v4-runtime
context: .
dockerfile: Dockerfile
target: runtime
image: ${MESA_V4_IMAGE:-mesa-memory:0.9.0}
image: ${MESA_V4_IMAGE:-mesa-memory:0.9.1}
restart: "on-failure:5"
read_only: true
tmpfs:
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Bu klasörde 12 kullanım/geliştirme rehberi ve 8 mimari karar belgesi vardır.
Hepsini sırayla okumak gerekmez. Amacınıza göre aşağıdaki giriş noktasını seçin.
Paket sürümü 0.9.0; V4 güncel API'dir.
Paket sürümü 0.9.1; V4 güncel API'dir.

## Nereden başlamalıyım?

Expand Down
2 changes: 1 addition & 1 deletion docs/RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ audit must remain `NOT EXECUTED`, never converted to a simulated success.

## Upgrading to v0.8.0

Current package metadata is 0.9.0 (unreleased). The v0.8.1 publication was owner-approved with the limitations in
Current package metadata is 0.9.1. The v0.8.1 publication was owner-approved with the limitations in
the [release notes](../CHANGELOG.md#v081-publication); it does not certify production
readiness. Confirm actual tags in GitHub Releases. This guide describes changes
since v0.7.1, not a completed production migration.
Expand Down
2 changes: 1 addition & 1 deletion docs/api-reference.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# API reference

MESA v4 tenant/dataset yetkili versioned API sunar. Paket 0.9.0 (yayımlanmadı); yayın sahibinin adımıdır ve production sertifikasyonu içermez.
MESA v4 tenant/dataset yetkili versioned API sunar. Paket 0.9.1; yayın sahibinin adımıdır ve production sertifikasyonu içermez.

Versioned memory, health ve metrics çağrıları `X-API-Key` ister. `/health/init`, OpenAPI, Swagger ve Redoc public yüzeylerdir; ağ/reverse-proxy politikası gerekir. V4 anahtarı
`mesa-v4-admin issue-key` ile üretilir; yalnız saltlı scrypt özeti saklanır.
Expand Down
2 changes: 1 addition & 1 deletion docs/architecture-v4.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# MESA Core current V4 architecture

> **Package version:** 0.9.0 (unreleased; publishing is an owner step), without production certification.
> **Package version:** 0.9.1, without production certification.

This document owns the current V4 design; production qualification remains
release candidate / `NO-GO` under the [release policy](release.md).
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "MESA API",
"version": "0.9.0"
"version": "0.9.1"
},
"paths": {
"/v4/catalog/workspaces": {
Expand Down
2 changes: 1 addition & 1 deletion docs/release.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Release procedure

V4 paket sürümü `0.9.0`; henüz yayımlanmadı, yayın aşağıdaki “Yayınlama”
V4 paket sürümü `0.9.1`; yayın aşağıdaki “Yayınlama”
adımlarıyla depo sahibinindir. Aşağıda kayıtlı yayın istisnasını depo sahibi
v0.8.1 source release için açıkça onayladı. Production qualification halen
release candidate olarak değerlendirilir. Production kararı
Expand Down
6 changes: 3 additions & 3 deletions mesa_client/client.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
MESA v0.9.0 Client SDK
MESA v0.9.1 Client SDK

A robust, type-safe Python client for the MESA memory system.
Provides both synchronous and asynchronous implementations utilizing httpx.
Expand Down Expand Up @@ -262,7 +262,7 @@ def __init__(
):
self.base_url = base_url.rstrip("/")
self.max_retries = max_retries
headers = {"User-Agent": "mesa-client/v0.9.0"}
headers = {"User-Agent": "mesa-client/v0.9.1"}
if api_key:
headers["X-API-Key"] = api_key

Expand Down Expand Up @@ -327,7 +327,7 @@ def __init__(
):
self.base_url = base_url.rstrip("/")
self.max_retries = max_retries
headers = {"User-Agent": "mesa-client/v0.9.0"}
headers = {"User-Agent": "mesa-client/v0.9.1"}
if api_key:
headers["X-API-Key"] = api_key

Expand Down
2 changes: 1 addition & 1 deletion mesa_mcp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

__all__ = ["__version__"]

__version__ = "0.9.0"
__version__ = "0.9.1"
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "mesa-memory"
version = "0.9.0"
version = "0.9.1"
description = "Enterprise AI agent memory engine"
readme = "README.md"
license = {file = "LICENSE"}
Expand Down
2 changes: 1 addition & 1 deletion tests/test_mcp_api_boundary.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ async def test_mcp_health_exposes_truthful_v4_capability_without_rebuild_tool(

from mesa_mcp import __version__

assert health["server_version"] == __version__ == "0.9.0"
assert health["server_version"] == __version__ == "0.9.1"
assert health["v4_capability"] == {
"api_version": "v4",
"capabilities": {"durable_rebuild": True},
Expand Down
2 changes: 1 addition & 1 deletion tests/test_profile_b_compose_env_parity.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def test_effective_compose_config_defaults_match_mesaconfig_contract() -> None:
assert container_env[flag] == "false"
assert container_env["MESA_OLLAMA_URL"] == "http://host.docker.internal:11434"
service = rendered["services"]["mesa-v4"]
assert service["image"] == "mesa-memory:0.9.0"
assert service["image"] == "mesa-memory:0.9.1"
assert service["read_only"] is True
assert service["ports"][0]["host_ip"] == "127.0.0.1"
assert "host.docker.internal:host-gateway" in {
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading