Skip to content

Commit 7068e49

Browse files
cdeustclaude
andcommitted
release: v3.19.2 — stale codebase-graph freshness gate
Bumps manifest + marketplace + pyproject to 3.19.2 and adds release notes for the freshness gate (b9c56c8): find_cached_graph now re-analyses when the codebase changed since the graph was built, so /cortex-visualize stops serving a stale AST. Pairs with the 3.19.1 deadlock guard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 8558c5b commit 7068e49

4 files changed

Lines changed: 46 additions & 4 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
},
77
"metadata": {
88
"description": "Persistent memory and cognitive profiling plugins for Claude Code",
9-
"version": "3.19.1"
9+
"version": "3.19.2"
1010
},
1111
"plugins": [
1212
{
1313
"name": "cortex",
1414
"source": "./",
1515
"description": "Persistent memory and cognitive profiling for Claude Code — thermodynamic memory with heat/decay, intent-aware retrieval, biological plasticity, codebase intelligence, and cognitive profiling. 49 MCP tools with enriched schemas. PostgreSQL + pgvector in CLI mode; automatic SQLite fallback in Cowork/sandboxed mode. v3.17.0 — autonomous per-project wiki: SessionStart auto-spawns a 6-hour consolidate cycle; a headless `claude -p` worker drains the curation-gap queue, calls codebase-intelligence MCP tools to ground each section in the real call graph, and authors missing anchor pages (architecture / services / api / data-flow / operations / decisions / PRD) per project from the source tree. 15 canonical scopes × 13 file sections; per-project dashboards under `wiki/_dashboards/`. Mermaid diagrams have a 🔍 lens with zoom + pan. Workflow graph with caller-qualified CALLS chains rendering full method-to-method dependencies (native tree-sitter, no AP required). Side panel humanized for non-technical users. Ingests codebase analysis (ai-automatised-pipeline) and PRDs (prd-spec-generator) into wiki + memory + knowledge graph. Docker image available.",
16-
"version": "3.19.1",
16+
"version": "3.19.2",
1717
"author": {
1818
"name": "Clement Deust",
1919
"email": "admin@ai-architect.tools"

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "cortex",
33
"description": "Persistent memory for Claude Code — remembers across sessions automatically. Install and forget. Scientific retrieval backed by 41 published papers.",
4-
"version": "3.19.1",
4+
"version": "3.19.2",
55
"author": {
66
"name": "Clement Deust",
77
"email": "admin@ai-architect.tools"

docs/release-notes/v3.19.2.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# v3.19.2 — stale codebase-graph gate
2+
3+
Follow-up to the 3.19.1 ingest deadlock fix. The deadlock guard stopped the
4+
hang; this stops the *stale graph* it could leave behind.
5+
6+
## What it fixes
7+
8+
`/cortex-visualize` (and `ingest_codebase`) could serve an **out-of-date AST**:
9+
the cached code-graph was reused as long as the graph directory merely *existed*,
10+
with no check that the codebase hadn't changed since it was built. A graph built
11+
before your last edits was reused indefinitely — the "graph shows an old version
12+
of the analysis" report.
13+
14+
## The change
15+
16+
New `graph_is_fresh(project_path, graph_path)`: compares the graph artefact's own
17+
build mtime against the newest source file under the project, via a bounded,
18+
ignore-pruned walk that early-exits on the first newer file (vendored/build dirs
19+
`.git`, `node_modules`, `target`, `.venv`, `search_index`, … — are skipped so
20+
they can't trip false staleness). `find_cached_graph` now skips a stale (or
21+
non-materialised) graph, so ingestion falls through to a fresh `analyze_codebase`.
22+
It errs fresh on uncertainty (absent project root / unreadable graph) to avoid
23+
needless re-analysis. Scope: ingestion only — the visualizer's roster resolver is
24+
untouched.
25+
26+
## Recovering an already-bad cache
27+
28+
If a prior run left a *half-built* graph (recent, so the freshness gate treats it
29+
as current), force one clean rebuild:
30+
31+
```
32+
ingest_codebase(project_path="<repo>", force_reindex=true)
33+
# or: rm -rf ~/.cache/cortex/code-graphs/<project>-*/
34+
```
35+
36+
With the 3.19.1 deadlock guard, that re-ingest completes instead of hanging.
37+
38+
## Still in progress
39+
40+
The deadlock guard is a safety net; the architectural root (the pooled MCP reader
41+
bound to a throwaway per-call event loop) and symbol-read producer/consumer
42+
overlap are tracked in `tasks/ingest-ecosystem-fix-plan.md`.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "neuro-cortex-memory"
7-
version = "3.19.1"
7+
version = "3.19.2"
88
description = "Scientifically-grounded memory system based on computational neuroscience research"
99
readme = "README.md"
1010
license = "MIT"

0 commit comments

Comments
 (0)