Tags: cdeust/Cortex
Tags
v3.13.0 — Scalability Program Complete + Marketplace Hardening
All 8 phases delivered:
* Phase 0.4.5: memory_entities backfill (100% coverage)
* Phase 1: fragility sweep (9 parallel improvements)
* Phase 2: JOIN replacements (plasticity / synaptic tagging /
co-activation Hebbian UPSERT with UNIQUE partial index)
* Phase 3 (A3): lazy heat + homeostatic scalar + fold — issue #14
root cause eliminated
* Phase 4: chunked consolidate + streaming Welford moments (Pébay
2008 §3.1 pairwise merge)
* Phase 5: ConnectionPool + asyncio.to_thread + admission semaphore
+ I10 invariant test
* Phase 6: QoL + antifragile
* Phase 7: NFC content hardening, bidi-override stripping
(CVE-2021-42574), Prometheus text-format metrics, Dockerfile,
cortex-doctor CLI, marketplace-consistent hooks
Regression gate (all 3 benchmarks PASS within 0.5pp of README v3.11):
LongMemEval R@10 97.8% MRR 0.881 (exact match on post-Phase-5)
LoCoMo R@10 92.3% MRR 0.791
BEAM-100K MRR 0.591 R@10 79.0% (exact match)
Test suite: 2411 passing (+86 new in this program).
Marketplace install (zero-Python-assumption):
uvx --python 3.13 --from 'neuro-cortex-memory[postgresql]' \\
neuro-cortex-memory → MCP server
cortex-hook <hook_name> → lifecycle hooks
cortex-doctor → 8-check setup verification
Breaking: memories.heat renamed to heat_base. Auto-migrated by
MIGRATIONS_DDL on first connect — no manual intervention needed.
New env vars (all optional, sensible defaults):
CORTEX_MEMORY_POOL_INTERACTIVE_MIN/MAX (2, 8)
CORTEX_MEMORY_POOL_BATCH_MIN/MAX (1, 2)
CORTEX_MEMORY_POOL_DISABLED (false — kill switch)
CORTEX_MEMORY_CONTENT_MAX_BYTES (1 MB)
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
release: v3.12.2 — darval field report fixes (#14) Version bump. Changes since v3.12.1 are grouped in three preceding commits: 63dd8ef — feat(backfill+homeostatic): age-decayed initial_heat + bimodality-aware cohort correction (#14 P1) 230cd68 — feat(diagnostics): cls + memify reason_for_zero signals (#14 P2) 265c940 — feat(entities): case-variant canonicalization + merge migration (orthogonal to darval but surfaced by the I4 audit) ## What v3.12.2 delivers **User-visible fix (issue #14 P1)**: backfills no longer dominate recall for 24h+ after import. Memories from old conversations enter at age-decayed heat (30-day half-life, 0.3 floor), and if the cohort is still bimodal post-decay, homeostatic now applies subtractive cohort correction — a primitive that can actually merge peaks, unlike the order-preserving Turrigiano multiplicative scaling that couldn't move `bimodality: 0.85` in darval's field report. **Operator visibility (issue #14 P2)**: `cls` and `memify` consolidate stages now report `reason_for_zero` / `reason_for_inaction` when their counters are all zero — distinguishing early-return from genuine quiet-store runs. Stage-exit `logger.info` emits greppable `stage=… reason=passed_through` for the quiet case. **Data integrity**: `entities` table insert now canonicalizes case (Output/OUTPUT merge at write time); a migration script is provided to collapse the 111 pre-existing duplicate groups Curie's I4 audit found. Breaks the silent "no co-access edge because entity IDs differ" class of bug. ## Tests 2199 passed on the full suite (+34 since v3.12.1 baseline). ## Migration required to close #14 After `pip install cortex==3.12.2`, users hit by #14 P1 should run `scripts/v3_12_2_entity_canonical_merge.sql` once to dedupe existing entities. For the bimodal heat distribution itself: the next consolidate run will apply cohort correction; for faster convergence, several consolidate cycles in a row will reduce std proportionally. ## NOT in v3.12.2 The A3 lazy-heat migration (Phase 3 of the scalability program — docs/program/) is still ~2 weekends away. Homeostatic stage wall-time stays at ~11.5 min on 66K memories until A3 lands; this release fixes the SEMANTICS (cohort correction merges peaks) but not the wall-time (still O(N) Python + per-row UPDATE). The latter collapses to O(1) once `effective_heat()` PL/pgSQL lands. Refs #13, #14 Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
release: v3.12.1 — hotfix: emergence_tracker import + I2 regression g… …uard Tag-and-release for the emergence_tracker → emergence_metrics import fix already on main (c5a1862), plus a static regression test that freezes the canonical heat-writer allow-list (invariant I2 from docs/invariants/cortex-invariants.md). ## What's fixed (already on main) - `consolidate.py` was importing `emergence_tracker.generate_emergence_report` but that function moved to `emergence_metrics` when the module was split to satisfy the 300-line cap. Caused emergence stage to return `duration_ms: 0` with AttributeError in v3.10, v3.11, and v3.12.0. Reported by darval in #13 (Run B) and reconfirmed on a fresh install in #14 (P0). Fix in c5a1862. ## What's new in this tag - `tests_py/invariants/test_I2_canonical_writer.py`: static AST+regex scanner that freezes the set of 8 known heat-writer sites: pg_store.py:237/255, anchor.py:134, preemptive_context.py:135, pg_schema.py:739, codebase_analyze_helpers.py:111, sqlite_store.py: 214/230. Any new site outside the allow-list fails the test. Rationale: the emergence_tracker bug was a "split the module, update the caller somewhere far away" class of regression. The same class applies to raw heat writes — A3 (Phase 3 of the scalability program) will collapse writers to one canonical helper; I2 stops any new site from re-introducing the paradigm. Pre-A3 the test passes with the 5+3 known sites in the allow-list; post-A3 the allow-list collapses to one entry and strict CI enforcement kicks in. ## Tests 2199 passed on the full suite (up from 2165 baseline: +2 I2 tests, +34 Phase 2 parity / entity canonical / backfill-heat tests landing in v3.12.2). Refs #13, #14 Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
PreviousNext