From 166641e2f3274bab0ba6acbf79a748711d008da4 Mon Sep 17 00:00:00 2001 From: cdeust Date: Mon, 10 Aug 2026 18:43:00 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=203.1.1=20=E2=80=94=20build-bre?= =?UTF-8?q?aking=20corrective,=20align=20version=20surfaces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3.1.0 could not build a graph at all: commit 45d4a80 deleted graph_event_stream's module-level emit/close/reset forwarders on the false premise of "no caller in this repository's history", killing every build with AttributeError on the first statement (#134, fixed by #136). #135/#137 stops the finally-block terminator from swallowing that same failure silently, which is why #134 reached a release unnoticed in the first place. #131 (mutation-test hardening, no behavior change) and #132 (automates RELEASING.md step 5, MCP Registry publish) also landed since 3.1.0 with no further breaking change, so this is a patch release: 3.1.0 -> 3.1.1, not a restatement of 3.1.0. Promotes CHANGELOG's Unreleased section (#132's entry) to 3.1.1, carries forward #134/#135's fix descriptions, and reopens an empty Unreleased. #131 gets no entry: it changes no shipped behavior. Aligns every version-bearing surface pyproject.toml/cortex_viz/identity.py/ server.json/.claude-plugin/plugin.json/.codex-plugin/plugin.json/ gemini-extension.json/.claude-plugin/marketplace.json/uv.lock (via `uv lock`) plus the two surfaces check_distribution_artifact does not cover, the README badge and docs/ROADMAP.md's "current version" line. Verified: `python -m scripts.check_distribution_artifact` passes against a built wheel; full suite 1317 passed/10 skipped; ruff check and format clean. Changelog-vs-tag audit: 3.1.0/2.8.0/2.7.1/2.7.0 all have matching tags, 3.0.0's "cut in the tree, never tagged or published" annotation is intact and unchanged, nothing new drifted. Co-Authored-By: Claude --- .claude-plugin/marketplace.json | 4 ++-- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 24 ++++++++++++++++++++++++ README.md | 2 +- cortex_viz/identity.py | 2 +- docs/ROADMAP.md | 2 +- gemini-extension.json | 2 +- pyproject.toml | 2 +- server.json | 4 ++-- uv.lock | 2 +- 11 files changed, 36 insertions(+), 12 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 2a6da8c..1b0bd1c 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,14 +6,14 @@ }, "metadata": { "description": "Hypermnesia MCP Viz — the read-only visualization companion for Cortex", - "version": "3.1.0" + "version": "3.1.1" }, "plugins": [ { "name": "hypermnesia-mcp-viz", "source": "./", "description": "Live memory galaxy, methodology map, workflow graph, wiki browser, and execution trace over the shared Cortex store.", - "version": "3.1.0", + "version": "3.1.1", "author": { "name": "Clement Deust", "email": "admin@ai-architect.tools" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 8638c18..0676792 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "hypermnesia-mcp-viz", "description": "Standalone visualization MCP for Cortex — a live neural-graph galaxy of every project, file, symbol, memory, discussion and wiki page, plus a per-session execution trace. Read-only bridge over Cortex's shared PostgreSQL and the ~/.claude artifacts.", - "version": "3.1.0", + "version": "3.1.1", "author": { "name": "Clement Deust", "email": "admin@ai-architect.tools" diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index c9d709f..b81053b 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "hypermnesia-mcp-viz", - "version": "3.1.0", + "version": "3.1.1", "description": "Read-only visualization and graph MCP for Cortex, packaged for Codex.", "author": { "name": "Clement Deust", diff --git a/CHANGELOG.md b/CHANGELOG.md index 58c4b2a..c3631eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ Releases before 2.7.0 were recorded as `chore(release)` / `release:` commits in ## [Unreleased] +## [3.1.1] - 2026-08-10 + +**Upgrade urgency: build-breaking.** 3.1.0 cannot build a graph at all — +install this release instead. + ### Added - `publish-registry` job in `Release.yaml`: RELEASING.md step 5 (publishing `server.json` to the official MCP Registry) is now automated, running @@ -13,6 +18,25 @@ Releases before 2.7.0 were recorded as `chore(release)` / `release:` commits in `workflow_dispatch` recovery path repairs a stale registry entry for an already-tagged release without re-publishing the package. +### Fixed +- The graph builder crashed on its first statement and `/api/graph/progress` + never left `starting` (#134). Commit `45d4a80` (published in 3.1.0) deleted + `graph_event_stream`'s module-level `emit`/`close`/`reset` forwarders on + the premise that nothing in this repository's history called them; they + had four callers (`graph_build_run.py`'s `reset()`/`emit()`/finally-`close()` + and `graph_build_merge.py`'s `emit()`), all binding the module once and + calling its functions for the lifetime of a build. Restored all three + forwarders, with `emit` now forwarding the `event_meta` parameter it had + been silently dropping — that drift was the commit's real defect and the + reason to fix the forwarder, not delete it. +- A failing end-of-stream terminator was silently swallowed (#135). + `graph_build_run.py`'s `finally` block sent the stream-closing call inside + `except Exception: pass`, so a failure there produced no log line and no + counter — which is exactly why #134's `AttributeError` on this same call + reached a release unnoticed. The exception's type and message are now + reported to stderr before the lock releases; it is still never re-raised, + since a failure here must not mask the build outcome being unwound. + ## [3.1.0] - 2026-08-10 **Upgrading from 2.8.0:** this release carries a breaking distribution-identity diff --git a/README.md b/README.md index 411ea1b..33f4a01 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Cross-platform MCP for Codex, Gemini CLI, and Claude Code MIT License Python 3.10+ - Version 3.1.0 + Version 3.1.1 OpenSSF Best Practices

diff --git a/cortex_viz/identity.py b/cortex_viz/identity.py index 94f25aa..b1deaa2 100644 --- a/cortex_viz/identity.py +++ b/cortex_viz/identity.py @@ -7,4 +7,4 @@ DISTRIBUTION_NAME = "hypermnesia-mcp-viz" MCP_REGISTRY_ID = "io.github.cdeust/hypermnesia-mcp-viz" -VERSION = "3.1.0" +VERSION = "3.1.1" diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 2e4e402..f20704a 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -8,7 +8,7 @@ Anything with an issue number is tracked; anything without one is an intention. ## Where the project is -Current version **3.1.0**. All six views (Graph, Brain, Trace, Knowledge, Wiki, +Current version **3.1.1**. All six views (Graph, Brain, Trace, Knowledge, Wiki, Board) are bridged to live data. The galaxy builds end to end at 75k+ nodes and the 3D brain streams the full graph into a cortical mesh. Trace works with no database at all. The supply-chain wave ([#37](https://github.com/cdeust/cortex-viz/issues/37)) diff --git a/gemini-extension.json b/gemini-extension.json index 8d57c7a..c78c490 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "hypermnesia-mcp-viz", - "version": "3.1.0", + "version": "3.1.1", "description": "Read-only visualization and graph MCP for Cortex, packaged for Gemini CLI.", "mcpServers": { "hypermnesia-mcp-viz": { diff --git a/pyproject.toml b/pyproject.toml index 2ee63d0..4c3584f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "hypermnesia-mcp-viz" -version = "3.1.0" +version = "3.1.1" description = "Visualization and graph MCP server for Cortex — neural graph, methodology map, workflow graph, and trace UI extracted from the Cortex memory engine" readme = "README.md" license = "MIT" diff --git a/server.json b/server.json index 149c4eb..8fdcc11 100644 --- a/server.json +++ b/server.json @@ -6,13 +6,13 @@ "url": "https://github.com/cdeust/cortex-viz", "source": "github" }, - "version": "3.1.0", + "version": "3.1.1", "websiteUrl": "https://ai-architect.tools/cortex", "packages": [ { "registryType": "pypi", "identifier": "hypermnesia-mcp-viz", - "version": "3.1.0", + "version": "3.1.1", "runtimeHint": "python", "transport": { "type": "stdio" diff --git a/uv.lock b/uv.lock index 9290804..ccb2285 100644 --- a/uv.lock +++ b/uv.lock @@ -770,7 +770,7 @@ wheels = [ [[package]] name = "hypermnesia-mcp-viz" -version = "3.1.0" +version = "3.1.1" source = { editable = "." } dependencies = [ { name = "fastmcp" },