Repository navigation
chore(release): prepare Cortex 4.24.0 - #987
Conversation
Version 4.24.0 on the 17 sites of scripts/check_version_surfaces.py
(pyproject.toml, package.json, package-lock.json x2, server.json x2,
manifest.json, gemini-extension.json, .claude-plugin/plugin.json,
.claude-plugin/marketplace.json metadata and primary entry, the Codex
plugin manifest, assets/badge-version.svg x4, the README badge alt text,
uv.lock: this package's entry only, by hand). CHANGELOG: [Unreleased]
becomes [4.24.0] - 2026-11-11, entries unchanged, with a new empty
[Unreleased]. 4.24.0 is the version GHSA-7848-qh48-mx2w names as fixed.
tests_py/scripts/test_codex_runtime.py: its three "matching runtime"
cases install the version the Codex plugin manifest declares; they
carried the literal 4.23.5 and fail once the manifest moves.
Marketplace pins (.claude-plugin/marketplace.json):
- hypermnesia-mcp-viz: v3.2.0 -> v3.3.0,
sha f345d28c9081cdc50a375c563d0fe2237eab1d21 (ls-remote v3.3.0^{}).
- zetetic-team-subagents: v2.42.0 -> v2.45.1,
sha a71494cb8e4e0c1525356da1dcf4824bdb014c14 (ls-remote v2.45.1^{});
description rewritten from the plugin's own marketplace.json at that
tag (97 genius agents, 23 team agents, 86 skills, 30 commands,
65 tools, 32 hooks).
scripts/check_marketplace_pins.py reports both third-party pins current.
It still exits 1 on PIN_VERSION_UNPUBLISHED for hypermnesia-mcp until
the tag v4.24.0 exists, and notes the MCP registry as pending.
Lint: `ruff check` and `ruff format --check` (ruff 0.17.3, the locked
version) now pass on the tree. No CI job runs ruff (CONTRIBUTING.md,
"The CI contract"). Fixed without a change of behaviour: 5 E501
(docstrings and one comment) and 6 reformatted files, two of them the
Python blocks of dated audit notes. scripts/tests/test_no_main_comparison.py
is delivered by ci-autonome's render-ci and written to that repository's
line length: it is excluded from ruff in pyproject.toml, not edited.
Not run: benchmarks/reproduce.sh (no container runtime, datasets or
models here; owner order of 2026-10-29: benchmarks are a measure, not a
gate), the PostgreSQL-gated tests, the tests that need torch, flashrank
or sentence-transformers, the e2e, environment and install commands of
ci.json, the SBOM generation (cyclonedx), the attestations and every
publication step of release.yml.
Co-Authored-By: Claude Fable 5.2 <[email protected]>
Claude-Session: https://claude.ai/code/session_018kyZYrKg46KKYpvLPXcW4M
Signed-off-by: Claude <[email protected]>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @cdeust's task in 2m 14s —— View job Review 1 of 3: PR #987
No Blockers. Every version site now says Verdict: approve |
Review 1 of 3: PR #987 (
|
What merging this does
The merge is the release trigger: the
tagjob of the Pipeline pushesv4.24.0on the tested merge commit, andrelease.ymlthen publishes the GitHub Release, the wheel and sdist with attestation, the SBOM, the.mcpb, PyPI (hypermnesia-mcp) and the MCP registry entry. The last tag isv4.23.5(2026-09-23). The published advisory GHSA-7848-qh48-mx2w names 4.24.0 as its fixed version.Version sites
pyproject.tomland the 17 sitesscripts/check_version_surfaces.pychecks:package.json,package-lock.json(2),server.json(2),manifest.json,gemini-extension.json,.claude-plugin/plugin.json,.claude-plugin/marketplace.json(metadata.versionand the primary entry),plugins/hypermnesia-mcp-codex/.codex-plugin/plugin.json,assets/badge-version.svg(4), the README badge alt text, and this package's entry inuv.lock(by hand, as in #641).CHANGELOG.md:[Unreleased]→## [4.24.0] - 2026-11-11, entries untouched.tests_py/scripts/test_codex_runtime.pycarried the version as a literal in three places and failed after the bump; they are updated. Neither the version-surface script nor #641 covers that file.Third-party pins of the
cortex-pluginsmarketplacehypermnesia-mcp-vizv3.2.0→v3.3.0f345d28c9081cdc50a375c563d0fe2237eab1d21zetetic-team-subagentsv2.42.0→v2.45.1a71494cb8e4e0c1525356da1dcf4824bdb014c14Both shas are the commits the annotated tags point to (
ls-remote --tags origin '<tag>^{}'). The zetetic pin was three releases behind: 2.43.0 to 2.45.1 never reached users of this marketplace. Its description is rewritten from the plugin's own manifest at thev2.45.1tag. zetetic 2.46.0 is not released yet; a later Cortex release pins it.Behaviour changes for users
Security
remember,seed_project,ingest_prdandingest_documentrefuse a domain or directory that belongs to another known project. The local override isCORTEX_CROSS_PROJECT_WRITES=<domain>,…or*; no tool argument reopens it. Explicitis_global=trueneedsCORTEX_CROSS_PROJECT_WRITES=*.anchor,supersedes_id, curation merges and replica refreshes no longer change another project's rows.create_triggerstores the session's project when no directory is given and refuses one reaching another project. A trigger stored without a directory no longer fires.record_session_endno longer writes an ADR task record outside the wiki root.apply_patchhook refuses paths outside the working directory.*.safetensors; pickled checkpoints are refused.forgeterases every stored copy. ADR-1110: one redaction gate on every write into storage.Install and runtime
claude --init-onlyafterclaude plugin installand afterclaude plugin update.claude --init-only.DATABASE_URLdefaults to empty,autowith no URL is SQLite, and an explicitpostgresqlbackend with no URL raises.uv.lockis the only dependency source; therequirements/*.txtexports are gone.Recall and tools
rememberreplays return the existing id within the same write scope.query_methodology,validate_memory,assess_coverage,drill_down,get_project_story,narrativeandrecall_hierarchicalread the domainrememberwrites. fix: bootstrap cognitive profiles from supported Codex conversation history #726:rebuild_profilesreads Codex history too.python -m mcp_server.portability). feat: provide a verified portable backup and restore journey for local memory #731: staged backup and restore.Also in this pull request
ruff check .andruff format --check ., the commands CLAUDE.md documents, were not clean onmainwith the pinned ruff 0.17.3: 9 E501 in four files and 7 files to reformat. No CI job enforces ruff (CONTRIBUTING.md:120), which is why it went unseen. Five over-long docstring or comment lines are wrapped and seven files reformatted, with no behaviour change.scripts/tests/test_no_main_comparison.pyis excluded from ruff instead: it is delivered byrender-ci, and a re-delivery would bring its findings back.Benchmarks: not run
CLAUDE.md:21: "Release-gate benchmarks:benchmarks/reproduce.sh, never against the live database."CHANGELOG.md:1117: "[Retiré 2026-10-29 : porte de non-régression contre main supprimée sur ordre de l'owner ; les benchmarks sont une mesure, pas une porte.]"No benchmark was run for this release: no container runtime, datasets or models where it was prepared.
Checks
check_version_surfaces.py: 17 sites agree withpyproject.toml.check_craftsmanship.py,check_doc_claims.py,check_project_wiki.py: OK.ruff check .: all checks passed.ruff format --check .: 4102 files already formatted.tests_pywithoutscriptsandintegration, on SQLite: 10097 passed, 18 failed, 474 skipped. The 18 are environmental: 17 needflashrankorsentence_transformers, which cannot be installed there, and one fails because the container runs as root. None touches a changed file.uv build --offline: wheel and sdist4.24.0,Version: 4.24.0in both.uv lock --check: OK.release.ymlon a scratch copy: manifest guard OK, bundle packed,server.jsonguard OK.Known, stated plainly
check_marketplace_pins.pyexits 1 on this branch by construction: the self pin needs the tagv4.24.0. In a scratch clone with a localv4.24.0tag it exits 0. The two third-party pins raise nothing.marketplace-pins.ymlno longer exists), anddocs/agent-guidance.md:62-63still says CI enforces it. That is how the zetetic pin went stale. Not changed here: the script needs the network and fails on any release pull request until the tag exists; it belongs in a scheduled or manifest-path workflow.test_ci_mutation_scope.pyfail outside CI onmainas on this branch: their sandbox does not copyci_mutation_lines.py, and the import succeeds only when thepython3onPATHhas the editable install. They pass in CI. Not fixed in a release branch.Not verified
tests_py/scriptsdirectory was not rerun after the three-literal fix; the 16 related files were.tests_py/integration, and the e2e, environment and install commands: this pull request's CI runs them.pypiwaits for an approval.publish-ccplugins.ymllistens torelease: publishedand last fired for v4.13.1 (2026-07-12); it will probably need a manual dispatch.release.ymlis expected, not observed.Generated by Claude Code