Changelog
August 7, 2026 · View on GitHub
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[1.2.1] - 2026-08-07
Fixed
- OpenAI chat parameter selection for reasoning and token-limit SKUs: send
max_completion_tokens(notmax_tokens) for the GPT-5 family and o-series, omit sampling controls only for models that actually run reasoning (reasoning_effortminimal/low), normalize provider-prefixed model names before capability checks, and fail closed on truncated or empty completions instead of persisting them. Optional retrieval callers degrade instead of failing the request. No public API change.
[1.2.0] - 2026-07-28
Added
- Connected-local Cloud support with optional Cloud-issued RS256 JWT verification, user/project claim binding, and static API-key fallback.
- Durable, content-free memory trace synchronization through a PostgreSQL outbox with bounded backlog, retry, dead-letter, and auth-recovery handling.
- Automatic generation and persistence of local
CORE_API_KEYvalues and a stable Core instance ID, including connected-local Docker defaults. EMBEDDING_DTYPEconfiguration for larger quantized local embedding models.- A background scheduler for deferred AUDN reconciliation.
Changed
- Deferred AUDN reconciliation now runs with bounded parallelism.
Fixed
- Anthropic extraction requests use an assistant prefill to enforce JSON responses.
- Idempotent re-indexing advances extraction status only through valid state transitions.
- Local API-key overrides persist across container restarts.
Security
- Cloud JWT verification fails closed on issuer, audience, algorithm, user, and project mismatches.
- Outbound Cloud trace envelopes use allowlisted summary fields and exclude verbatim memory and query content.
[1.1.1] - 2026-06-15
Added
- Phase 1 migration hardening now packages a deterministic
dist/db/schema-sha256.jsonmanifest for the shipped DB schema bytes. - Phase 2 versioned migrations. Schema is now expressed as ordered files
under
src/db/migrations/(shipped asdist/db/migrations/), executed bynode-pg-migrateand tracked per-file in thepgmigrationstable. The Phase 1schema_versiontable is preserved alongsidepgmigrationsso operators can answer both "which migration files ran" and "which@atomicmemory/coresemver this DB corresponds to". migrationStatus()surfaces two new read-only fields,appliedMigrationCountandlatestMigrationName, sourced frompgmigrations. The existingstatusenum (up_to_date/older_db/newer_db/unstamped/no_schema) is unchanged.
Fixed
- Entities API routes (
/v1/entitieslist / get / profile / merge / delete) no longer return 500 errors.
Security
- Hardened input validation and request handling. Upgrade recommended.
- The published
atomicmemory-core migratecommand now calls the programmatic migration API directly, so npm installs can run the documented migration command without the command word being reparsed as a migration option. - BREAKING: All API endpoints are now mounted under
/v1/(e.g.POST /v1/memories/ingest,PUT /v1/agents/trust). Update clients to prefix requests with/v1. The unversioned/healthliveness probe is unchanged. - Phase 2 removes
src/db/schema.sql; the migrations folder is now the single source of truth. The build-timedist/db/schema-sha256.jsonmanifest is preserved but now describes the ordered migration directory. Library and CLI surfaces are unchanged:migrate()andmigrationStatus()keep their Phase 1 signatures, andMigrateResult.ranSchemaSqlis preserved as "this call executed the migration runner path" (the Phase 1 semantics for the no-op-loser path still hold). - Moved provenance-only SQL changelog files from
src/db/migrations/todocs/db/changelog/. Phase 2 reclaimssrc/db/migrations/as the runtime migration folder.
Migration (Phase 2 — lossless guarantee)
Three install paths reach the same end state without data loss, without
unexpected DDL, and without operator intervention. All three run inside
the same advisory-lock wrapper used by Phase 1 (MIGRATION_LOCK_ID
unchanged), so concurrent replica boots remain safe.
- Scenario A — fresh install on Phase 2.
migrate()createspgmigrations, runs0001_baseline.sqlagainst the empty database, runs any later migration files, runs the embedding-dimension reconciler (against now-empty tables; no-op or a singleALTER COLUMN), and stampsschema_version. - Scenario B — v1.0.x with data → Phase 2.
migrate()detects that core tables exist butpgmigrationsdoes not. It createspgmigrations, stamps0001_baselineas applied without executing it, runs any post-baseline migrations against the live schema, runs the reconciler on the live (possibly populated) tables with the same Phase 1 semantics, and inserts the firstschema_versionrow. Baseline DDL does not touch existing tables. - Scenario C — Phase 1 → Phase 2. Same as B except
schema_versionalready exists; the upgrade appends a new row instead of creating the table.
Enforcement: baseline-schema-equivalence.test.ts (the CI gate) builds
both end states on fresh databases and asserts the schema-only structural
snapshot is identical modulo the framework-bookkeeping tables. The Phase 1
data-preservation suite is carried forward unchanged and continues to
seed legacy rows, snapshot them, run migrate(), and assert the rows,
primary keys, foreign keys, JSON metadata, timestamps, and representative
vector fields survive the Phase 1 → Phase 2 migration.
[1.0.0] - 2026-04-15
Added
- Initial extraction from the memory-engine prototype
- Express API server with memory ingest, search, and consolidation endpoints
- Postgres + pgvector storage backend
- Pluggable embedding providers: openai, openai-compatible, ollama, transformers (WASM)
- AUDN-SC mutation engine (Add, Update, Delete, No-op + Supersede, Clarify) with fail-closed semantics; pre-AUDN rejections are reported with a separate
SKIPingest trace sentinel - Contradiction-safe claim versioning
- Hybrid retrieval (vector + BM25/FTS)
- Tiered context packaging
- Entity graph with spreading activation
- Docker and Railway deployment support
- 869 tests across 79 test files
- CI with GitHub Actions (typecheck, fallow, tests)
- Contributor docs (CONTRIBUTING.md, issue/PR templates)