Releases: cdeust/Cortex
Releases · cdeust/Cortex
Release list
v4.18.0
- release: v4.18.0 — capture-origin allowlist, staleness auto-fire, remediation policy
- fix(readme): revert hotlinked HOL badge — violates check_no_hotlinked_badges
- docs(readme): add HOL Registry trust-score badge
- fix(ap): bound interactive AP read calls so a wedged pipeline degrades instead of hanging (#449)
- fix(errors): stop masking query-level errors as 'database_not_connected' (#448)
- fix(fts): AND-join expand_fts_query groups so mixed group+phrase parses (#447)
- feat(remediation): change-remediation policy for diff-impacted memories (#444)
- feat(staleness): auto-fire is_stale via a bounded file-existence revalidation pass (#443)
- fix(recall): stamp injected memories with age, provenance grade, and stale flag (#442)
- fix(mcp-client): honour callTimeoutMs=0 — silence watchdog instead of wall-clock hardcap (#431)
- fix(plugin): refuse an unset CLAUDE_PLUGIN_ROOT instead of guessing $PWD (#430)
- deps: bump mpmath from 1.3.0 to 1.4.1 (#332)
- chore(marketplace): move hypermnesia-mcp-viz pin to v3.1.1 (#429)
- trust-factor W re-measurement: contention-safe sweep harness (#415)
- build: bump python from
cea0e60toa7fb1e6in /.devcontainer (#423) - fix(ci): close docker_smoke.sh's stdin-before-drain race (#428)
- ci: bump actions/attest-build-provenance from 4.1.1 to 4.2.2 (#426)
- deps: bump tree-sitter-language-pack from 1.13.5 to 1.14.3 (#424)
- build: bump python from
86f975ato23c5939in /docker (#421) - deps: bump typer from 0.27.0 to 0.27.1 (#420)
- fix(marketplace): validate server.json schema, not just version (#427)
- fix(marketplace): close the pin-verification gap that let dangling versions ship silently (#419)
- deps: bump mcp from 1.29.0 to 2.0.0 (#331)
- ci(dependabot): ignore pydantic-core bumps past the pydantic-pinned exact version (#416)
- fix(hooks): close pooled store on every exit path (issue #398) (#417)
- docs: reconcile arXiv/README benchmark figures (issue #347) (#414)
- fix(memory-ingest): stop dropping capture_origin at ingest (issue #368) (#410)
- ci: bump actions/checkout from 4.2.2 to 7.0.1 (#385)
- feat(ci): deterministic craftsmanship gate for CLAUDE.md § Code Style (#413)
- refactor(infra): split pg_store.py + siblings under the 300-line cap; fix infra->core layer violation (#409)
- fix(tests): drop unsourced 30s subprocess timeout (issue #402) (#412)
- refactor(recall): Extract Class pg_recall.py's 494-line body into three seams (#411)
- ci: bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.6 (#384)
- ci: bump actions/setup-python from 5.3.0 to 7.0.0 (#383)
- deps: bump uvicorn from 0.51.0 to 0.52.0 (#330)
- deps: bump multiprocess from 0.70.15 to 0.70.19 (#323)
- docs: import the global agent rules into CLAUDE.md (#408)
- fix(hooks): agent_briefing falls back on a degenerate roster, not just an absent directory (#403)
- feat(recall): trust/provenance term in WRRF fusion (#368) (#399)
- ci: restore the release pipeline work (#391, #387, #393, #394) (#397)
- Revert "ci: gate main on one aggregate check instead of eleven job names (#391)"
- Revert "ci: share the test suite between ci.yml and release.yml via a composite action (#387)"
- Revert "ci: gate every version site against pyproject.toml in one place (#393)"
- Revert "ci: the tag becomes an output of the green tree, not a hand-pushed input (#394)"
- ci: the tag becomes an output of the green tree, not a hand-pushed input (#394)
- ci: gate every version site against pyproject.toml in one place (#393)
- ci: share the test suite between ci.yml and release.yml via a composite action (#387)
- ci: gate main on one aggregate check instead of eleven job names (#391)
- fix(core): remove dead ACT-R decay path, disambiguate ADAPTIVE_DECAY naming (#346) (#388)
- fix(provenance): name dead refs and the resolution root in the write-time hint (#390)
- docs: update automatised-pipeline references to ai-architect-mcp-codebase (#386)
- fix(ingest): stamp doc-snapshot provenance and supersede stale re-ingests (#381) (#382)
- fix(capture): make the write-gate bypass rule an allowlist (#365 follow-up) (#380)
- feat(mutation): teach the gate what an accepted equivalent is (#379)
- fix(capture): decide capture and gate bypass by channel, not by content (#365) (#375)
- fix(forget): delete across every substrate holding the content (#366) (#374)
- test(ast): pin the remaining extractor surface (#369) (#376)
- test(ast): pin the language extractor walkers (#369) (#373)
- fix(deps): cryptography 49.0.0 -> 50.0.0 (GHSA-g6cj-pr64-35w5, CVE-2026-69247) (#371)
- fix(ast): bound extractor traversal by heap, not the interpreter stack (#370)
- fix(identity): resolve the renamed upstream server from one source (#355)
- fix(pin-gate): fail when a github pin names a sha unreachable from the default branch (#354)
- fix(plugins): prefer PostgreSQL and use canonical viz identity (#351)
- bump cortex viz to 2.8.0 (#350)
- docs: position project as cross-platform (#349)
- feat(codex): add isolated Cortex plugin package (#344)
- fix(mcp): verify hook-free multi-host support (#341)
- docs(readme): position Cortex within the four-piece stack (#340)
What's Changed
- docs(readme): position Cortex within the four-piece stack by @cdeust in #340
- fix(mcp): verify hook-free multi-host support by @cdeust in #341
- feat(codex): add isolated Cortex plugin package by @cdeust in #344
- docs: present Cortex as a cross-platform memory MCP by @cdeust in #349
- Bump cortex-viz marketplace pin to 2.8.0 by @cdeust in #350
- fix(plugins): prefer PostgreSQL and use canonical viz identity by @cdeust in #351
- fix(pin-gate): fail when a github pin names a sha unreachable from the default branch by @cdeust in #354
- fix(identity): resolve the renamed upstream server from one source by @cdeust in #355
- fix(ast): bound extractor traversal by heap, not the interpreter stack by @cdeust in #370
- fix(deps): cryptography 49.0.0 → 50.0.0 (GHSA-g6cj-pr64-35w5) — closes all 10 Dependabot alerts by @cdeust in #371
- test(ast): pin the language extractor walkers — 241 unpinned mutants → 6 documented equivalents (#369) by @cdeust in #373
- test(ast): pin the remaining extractor surface — 639 unpinned → 51 classified equivalents, 0 uncovered (#369) by @cdeust in #376
- fix(forget): delete across every substrate holding the content (#366) by @cdeust in #374
- fix(capture): decide capture and gate bypass by channel, not by content (#365) by @cdeust in #375
- feat(mutation): teach the gate what an accepted equivalent is — fail-closed, diff-pinned registry by @cdeust in #379
- fix(capture): make the write-gate bypass rule an allowlist (#365 follow-up) by @cdeust in #380
- fix(ingest): stamp doc-snapshot provenance and supersede stale re-ingests by @cdeust in #382
- docs: update automatised-pipeline references to ai-architect-mcp-codebase by @cdeust in #386
- fix(provenance): name dead refs and the resolution root in the write-time hint by @cdeust in #390
- fix(core): remove dead ACT-R decay path, disambiguate ADAPTIVE_DECAY naming (#346) by @cdeust in #388
- ci: gate main on one aggregate check instead of eleven job names by @cdeust in #391
- ci: share the test suite between ci.yml and release.yml via a composite action by @cdeust in #387
- ci: gate every version site against pyproject.toml in one place by @cdeust in #393
- ci: the tag becomes an output of the green tree, not a hand-pushed input by @cdeust in #394
- ci: restore the release pipeline work (#391, #387, #393, #394) by @cdeust in #397
- feat(recall): trust/provenance term in WRRF fusion (#368) by @cdeust in #399
- fix(hooks): agent_briefing falls back on a degenerate roster, not just an absent directory by @cdeust in #403
- docs: import the global agent rules into CLAUDE.md by @cdeust in #408
- deps: bump multiprocess from 0.70.15 to 0.70.19 by @dependabot[bot] in #323
- deps: bump uvicorn from 0.51.0 to 0.52.0 by @dependabot[bot] in #330
- ci: bump actions/setup-python from 5.3.0 to 7.0.0 by @dependabot[bot] in #383
- ci: bump github/codeql-action/upload-sarif from 4.37.3 to 4.37.6 by @dependabot[bot] in #384
- refactor(recall): split pg_recall.py to the local 300-line/40-line caps by @cdeust in #411
- fix(tests): drop unsourced 30s subprocess timeout (issue #402) by @cdeust in #412
- refactor(infra): split pg_store.py + siblings under the 300-line cap; fix infra->core layer violation by @cdeust in #409
- feat(ci): deterministic craftsmanship gate for CLAUDE.md § Code Style by @cdeust in #413
- ci: bump actions/checkout from 4.2.2 to 7.0.1 by @dependabot[bot] in #385
- fix(memory-ingest): stop dropping capture_origin at ingest (issue #368) by @cdeust in https:...
v4.17.2
- release: v4.17.2 — pip constraints extras fix reaches installs
- fix(launcher): strip extras from the pip constraints file (#339)
- fix(docker): retry the HuggingFace prewarm fetch instead of failing the build (#338)
- fix(registry): align server.json with the published registry entry, and gate its description (#337)
What's Changed
- fix(registry): align server.json with the published registry entry, and gate its description by @cdeust in #337
- fix(docker): retry the HuggingFace prewarm fetch instead of failing the build by @cdeust in #338
- fix(launcher): strip extras from the pip constraints file by @cdeust in #339
Full Changelog: v4.17.1...v4.17.2
v4.17.1
- ci(release): mirror ci.yml's network hardening in the release gate, ship it as v4.17.1 (#335)
What's Changed
- ci(release): mirror ci.yml's network hardening in the release gate, ship it as v4.17.1 by @cdeust in #335
Full Changelog: v4.17.0...v4.17.1
v4.16.0
- Merge pull request #168 from cdeust/release/4.16.0
- bench(release-gate): v4.16.0 pre-tag reproduce.sh results — all floors PASS
- chore: drop reproduce.sh runtime lock from tracking, ignore the lock dir
- chore(release): bump version to 4.16.0
- Merge pull request #167 from cdeust/feat/prose-redaction-166
- feat(prose-redaction): full mechanical inventory — 16 pattern classes
- feat(prose-redaction): native AI-writing-tell inventory for generated prose (#166)
What's Changed
- feat(prose-redaction): native AI-writing-tell inventory for generated prose by @cdeust in #167
- release: v4.16.0 — native prose-redaction pass for generated prose by @cdeust in #168
Full Changelog: v4.15.0...v4.16.0
v4.15.0
- release: v4.15.0 — hypermnesia-mcp rename, SQLite-first, multilingual write-gate, setup-run fixes (#165)
- chore(deps): bump setuptools in the uv group across 1 directory (#164)
- fix: three setup-run bugs — degenerate causal edges, SQLite grooming surface, legacy memory import (#163)
- fix(release): align manifest.json and package.json versions to 4.14.3 (#162)
- fix(write-gate): make decision/error/success bypass cues language-aware (#161)
- feat(install): SQLite-first plugin install — full hook experience, zero system PostgreSQL (#160)
- fix(metadata): verbatim MIT license for GitHub detection, registry schema + version in server.json (#159)
- chore(deps): bump pillow in the uv group across 1 directory (#157)
- chore(deps): bump torch in the uv group across 1 directory (#156)
- chore(marketplace): bump zetetic-team-subagents pin 2.28.1 -> 2.29.0 (#155)
What's Changed
- chore(marketplace): bump zetetic-team-subagents pin to 2.29.0 by @cdeust in #155
- chore(deps): bump torch from 2.11.0 to 2.13.0 in the uv group across 1 directory by @dependabot[bot] in #156
- chore(deps): bump pillow from 12.2.0 to 12.3.0 in the uv group across 1 directory by @dependabot[bot] in #157
- fix(metadata): verbatim MIT license for GitHub detection, registry-ready server.json by @cdeust in #159
- feat(install): SQLite-first plugin install — full hook experience, zero system PostgreSQL by @cdeust in #160
- fix(write-gate): make decision/error/success bypass cues language-aware by @cdeust in #161
- fix(release): align manifest.json and package.json versions to 4.14.3 by @cdeust in #162
- fix: three setup-run bugs — degenerate causal edges, SQLite grooming surface, legacy memory import by @cdeust in #163
- chore(deps): bump setuptools from 81.0.0 to 83.0.0 in the uv group across 1 directory by @dependabot[bot] in #164
- release: v4.15.0 — hypermnesia-mcp rename, SQLite-first, multilingual write-gate, setup-run fixes by @cdeust in #165
Full Changelog: v4.14.3...v4.15.0
v4.14.3
- chore(release): v4.14.3 — write-gate fix, launcher-deps hardening, deps bump (#154)
- refactor(core): split wiki_classifier and wiki_axis_registry under the 500-line limit (#153)
- chore(deps): bump mcp in the uv group across 1 directory (#152)
- fix(launcher-deps): defer dist-info prune until whole tmp_dir commits (#150)
- fix(remember): honor write_class=deliberate gate contract; grading never blocks write (#148)
- chore(release): merge 4.14.2 (exact pre-tag-guarded tree 156bff4) into main
What's Changed
- fix(remember): honor write_class=deliberate gate contract; grading never blocks write by @cdeust in #148
- fix(launcher-deps): defer dist-info prune until whole tmp_dir commits (issue #149) by @cdeust in #150
- chore(deps): bump mcp from 1.27.0 to 1.28.1 in the uv group across 1 directory by @dependabot[bot] in #152
- refactor(core): split wiki_classifier and wiki_axis_registry under the 500-line limit by @cdeust in #153
- chore(release): v4.14.3 — write-gate fix, launcher-deps hardening, deps bump by @cdeust in #154
Full Changelog: v4.14.2...v4.14.3
v4.14.2
- docs(changelog): correct 4.14.2 evidence pointer to the committed pretag dir
- chore(release): 4.14.2 — layer-violation cleanup + devtooling
- refactor(core): eliminate 3 core→infrastructure layer violations via ports-and-adapters (#135)
- feat(tools): expose check_setup MCP tool as a facade over doctor.py (#133)
- fix(embeddings): pass explicit XDG-aware cache_folder to SentenceTransformer (#132)
- feat(config): project settings, /preflight command, catalogue, headless CI regimes (#131)
- docs(architecture): replace stale hard-coded module counts with single-source pointer (#130)
- feat(devcontainer): one-command devcontainer with pgvector + prewarmed models (#129)
- feat(telemetry): add optional OTLP exporter, OFF by default (#128)
- docs(claude-md): refactor CLAUDE.md to <200 lines, resync storage truth (#125)
- docs(deployment): document corporate proxy/CA for model downloads (#123)
- docs(bench): fix stale "production database" claim, add LoCoMo noise caveat (#121)
- fix(install): dispatch Windows postInstall to cross-platform setup.py + exercise real install path in CI (#117)
- chore(release): merge 4.14.1 (exact pre-tag-guarded tree f89a350) into main
- fix(wiki): enforce frontmatter normalization and governance contract on all write paths (#112)
What's Changed
- fix(wiki): enforce frontmatter normalization and governance contract on all write paths by @cdeust in #112
- fix(install): dispatch Windows postInstall to cross-platform setup.py + exercise real install path in CI by @cdeust in #117
- chore(bench): resolve stale-floors finding — isolated-instrument evidence, doc fixes, no floor changes by @cdeust in #121
- docs(deployment): corporate proxy / custom CA for model downloads by @cdeust in #123
- docs(claude-md): refactor to 92 lines with @-references — measured counts, per-surface storage truth by @cdeust in #125
- feat(telemetry): optional OTLP exporter, OFF by default (ports-and-adapters) by @cdeust in #128
- feat(devcontainer): one-command isolated environment — models baked, versions pinned, doctor-gated by @cdeust in #129
- docs(architecture): replace stale module counts with single-source pointers by @cdeust in #130
- feat(config): project settings, /preflight command, catalogue, headless CI regimes by @cdeust in #131
- fix(embeddings): pass explicit XDG-aware cache_folder to SentenceTransformer by @cdeust in #132
- feat(tools): check_setup MCP tool — preflight facade over doctor.py (50→51 tools) by @cdeust in #133
- refactor(core): eliminate 3 core→infrastructure layer violations via ports-and-adapters by @cdeust in #135
Full Changelog: v4.14.1...v4.14.2
v4.14.1
- chore(release): 4.14.1 — safe_handler ToolError + wiki write-time hardening
- refactor(wiki): extract cohesive collaborators from wiki_pages.py (#111)
- feat(wiki): validate and normalize frontmatter at write time in write_governed_page (#109)
- fix(wiki): make wiki_migrate --dry-run transactionally neutral (#108)
- fix(wiki): strip quoted/duplicated-label frontmatter scalar values (#104)
- fix(mcp): raise ToolError from safe_handler instead of schema-violating error dict
- fix(mcp): raise ToolError instead of an error dict on handler failure
- Merge pull request #103 from cdeust/docs/readme-tagline-neuroscience
- chore(marketplace): bump cortex-viz pin to 2.6.2
- docs(readme): lead tagline with computational-neuroscience differentiator
- chore(marketplace): bump zetetic-team-subagents pin to 2.27.0
What's Changed
- docs(readme): lead tagline with computational-neuroscience differentiator by @cdeust in #103
- fix(wiki): strip quoted/duplicated-label frontmatter scalar values by @cdeust in #104
- fix(wiki): make wiki_migrate --dry-run transactionally neutral by @cdeust in #108
- feat(wiki): validate and normalize frontmatter at write time in write_governed_page by @cdeust in #109
- refactor(wiki): extract cohesive collaborators from wiki_pages.py by @cdeust in #111
Full Changelog: v4.14.0...v4.14.1
Cortex 4.14.0 — schema-migration entry point + wiki.pages↔FS parity
Added
- Standalone schema-migration entry point —
python -m mcp_server.migrate. Brings a PostgreSQL store's schema current by reusingPgMemoryStore's existing hash-gated, advisory-lock-serialized DDL apply path (no duplicated DDL, no MCP server boot). Frozen contract, consumed by the cortex-viz plugin:DATABASE_URL=<url> python -m mcp_server.migrate→ exit 0 (schema up to date|applied N statements) / exit 1 (one-line stderr reason). cortex-viz 2.6.1'sopen_visualizationpreflight invokes it to migrate an outdated store before building the graph — replacing the previous silently-empty-graph failure on an old schema with either an automatic migration or an actionable support message. wiki_migrateMCP tool + wiki.pages↔filesystem reconciliation — backfill, ghost purge, and a parity guard keep thewiki.pagestable and the on-disk wiki in sync. Standalone tool count 49 → 50 (53 with upstream integrations).
Fixed
wiki.pagespages_status_checkwidened to the full system-emitted status union.
Verified (pre-tag guard, exact release tree)
- LongMemEval-S: MRR 0.9166 / R@10 0.982 (reranker active) — exact match to the 4.13.3 reference.
- LoCoMo (3-run mean): MRR 0.8005 / R@10 0.9131 — matches the 4.13.3 baseline (0.8017 / 0.9152) on identical, retrieval-orthogonal code; both gated floors PASS.
- BEAM-100K: 0.5471. Raw results committed under
benchmarks/results/repro/20260713-v4.14.0-pretag/.
Pairs with cortex-viz 2.6.1.
v4.13.3
- chore(release): 4.13.3 — restore third-party inspection contract + lock it with a CI gate
- test(invariants): I2 allow-list — reheat writer shifted 177→182 by the lazy-psycopg guard block
- merge: fix/bare-container-contract — third-party inspection contract restored + blocking docker-smoke gate
- fix(docker): explicit-DATABASE_URL anti-silent-fallback boundary + stale tool count
- ci(docker): add blocking bare-container DB-less smoke gate
- fix(docker): restore the bare-container DB-less MCP contract (H4 root cause)
- docs(privacy): describe storage truthfully per surface — SQLite default (.mcpb/Cowork), PostgreSQL for the Claude Code plugin
- docs(readme): align tagline with the accountable-memory positioning
- fix(tests): exact-match URL assertions — resolves CodeQL incomplete-url-substring-sanitization (#97, #98)
Full Changelog: v4.13.2...v4.13.3