Skip to content

release: v4.19.1 - #458

Merged
cdeust merged 1 commit into
mainfrom
release/v4.19.1
Sep 3, 2026
Merged

release: v4.19.1#458
cdeust merged 1 commit into
mainfrom
release/v4.19.1

Conversation

@cdeust

@cdeust cdeust commented Sep 3, 2026

Copy link
Copy Markdown
Owner

What

Bumps all 16 version surfaces (scripts/check_version_surfaces.py, 12 files) from 4.19.0 to 4.19.1 and dates the [Unreleased] CHANGELOG section as [4.19.1] - 2026-09-03. No source change beyond the CHANGELOG entry.

Contents since v4.19.0

  • fix(hooks): bound checkpoint fields in the session-start banner #457 SessionStart banner: checkpoint fields (current_task, next_steps, active_errors, open_questions) now pass through _short() like every other section (anchors/team-decisions/hot-memories). Closes an unbounded per-turn token cost (the banner is re-injected every conversation turn) and, independently, a raw-markdown-injection hazard flagged during review (a checkpoint field containing \n### Header could inject structure into the banner).

Local checks at this commit

python3 scripts/check_version_surfaces.py   -> version surfaces OK (16 site(s) checked)
python3 scripts/check_doc_claims.py         -> doc claims OK
uv lock --check                             -> Resolved 168 packages
python3 scripts/check_marketplace_pins.py   -> PIN_VERSION_UNPUBLISHED (exit 1)

The last one is the expected pre-tag state (same as v4.19.0's release PR): the marketplace pins 4.19.1 while the latest tag is still v4.19.0. ci.yml's release-gate job resolves this on merge to main by tagging v4.19.1.

After merge

release-gate finds no v4.19.1 tag, re-checks the version surfaces, and pushes the annotated tag with the deploy key. release.yml::publish-mcp-registry publishes io.github.cdeust/hypermnesia-mcp 4.19.1 on that tag push.

🤖 Generated with Claude Code

https://claude.ai/code/session_01V4uZ6ryUEiVZjtgjgpBgCc

Moves all 16 version surfaces (scripts/check_version_surfaces.py) from
4.19.0 to 4.19.1 and dates the Unreleased CHANGELOG section. Contents
since v4.19.0: #457 (checkpoint fields in the SessionStart banner now
truncated via _short(), closing both an unbounded per-turn token cost
and a raw-markdown-injection hazard).

Local checks at this commit:
  python3 scripts/check_version_surfaces.py   -> version surfaces OK (16 site(s) checked)
  python3 scripts/check_doc_claims.py         -> doc claims OK
  uv lock --check                             -> Resolved 168 packages
  python3 scripts/check_marketplace_pins.py   -> PIN_VERSION_UNPUBLISHED (exit 1)

The last one is the expected pre-tag state, same as the v4.19.0 release
PR: the marketplace pins 4.19.1 while the latest tag is still v4.19.0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4uZ6ryUEiVZjtgjgpBgCc
@cdeust

cdeust commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

ZETETIC-REVIEW: APPROVE

Stakes: High (public API/release surface — version manifests served to plugin/marketplace/PyPI/MCP-registry clients). Full verification, evidence re-derivable from a detached worktree at head 2439bb2b.

What was verified (not taken on faith)

1. All 16 version sites, and nothing else.
python3 scripts/check_version_surfaces.py at head → version surfaces OK (16 site(s) checked, all agree with pyproject.toml) (exit 0).
python3 scripts/check_doc_claims.pydoc claims OK (exit 0).
git grep -n '4\.19\.0' -- . ':!CHANGELOG.md'no matches: no stray old-version string survives outside the changelog history where it belongs.

2. Neighbouring plugin versions in .claude-plugin/marketplace.json untouched. Parsed at head: cortex 4.15.0, hypermnesia-mcp-viz 3.1.1 (ref v3.1.1, sha unchanged), cortex-viz 2.8.0, zetetic-team-subagents 2.37.0 — all unchanged; only metadata.version and the self-hosted (source: "./") entry moved to 4.19.1, which is exactly the pair _marketplace_primary_plugin_check + the metadata surface cover. Diff is 2 added / 2 removed lines in that file, consistent with this.

3. Lockfiles are consistent, not hand-patched.

  • uv lock --checkResolved 168 packages (exit 0). The one-line uv.lock delta is the [[package]] hypermnesia-mcp block's own version, which is the entire lock-visible consequence of an editable-root version bump — no resolution drift smuggled in.
  • package-lock.json: both version and packages[""].version = 4.19.1 with name = hypermnesia-mcp; npm writes the root version twice and both copies moved together.
  • assets/badge-version.svg: python3 scripts/generate_repo_badges.py --checkbadges OK (4 checked). All four independent occurrences (aria-label, <title>, shadow <text>, solid <text>) agree; the SVG matches what the generator would emit, so it was regenerated, not hand-edited.

4. The CHANGELOG entry matches what #457 actually did. git show 3883c77b (merged to main before this branch was cut) touches exactly mcp_server/hooks/session_start.py (+18/-5) and tests_py/hooks/test_session_start.py (+20), wrapping current_task / next_steps / active_errors / open_questions in _short(str(...)) — the four fields the entry names. The entry's second claim is also true rather than decorative: _short (session_start.py:79-81) does text.strip().replace("\n", " ") before the 120-char cap, so a checkpoint field carrying \n### genuinely can no longer inject banner structure — the markdown-injection closure is a property of the fix, not a retrofit narrative.

5. No unrelated diff noise. 12 files: 11 version surfaces + CHANGELOG.md. git diff v4.19.0(264e962b)..2439bb2b shows the release delta is precisely #457's two files plus this bump — nothing else rode along.

Layer / SOLID / tests / security

Not applicable in substance: zero executable source changed by this PR (mcp_server/ is untouched here; #457's code and its test landed on main separately and carry their own test). No new symbols, no signature changes, no imports, no secrets, no I/O with user input. Commit message is conventional and the PR is single-purpose.

Known, expected non-green

python3 scripts/check_marketplace_pins.py exits 1 with PIN_VERSION_UNPUBLISHED (pins 4.19.1, latest tag is v4.19.0) plus the registry NOTICE. This is the correct pre-tag state for a release PR — identical in shape to #456 — and it resolves on merge: ci.yml::release-gate runs only on push to main, re-checks the surfaces, and pushes the annotated v4.19.1 tag with the deploy key, which then triggers release.yml::publish-mcp-registry. The CI check that actually gates this PR (pins current vs latest releases) is green.

Merge condition

Every required check is green except Test (Python 3.12), still pending at the time of writing (3.10/3.11/3.13/SQLite/Windows-SQLite all passed, as did Lint, Type Check, Craftsmanship Gate, Build, Docker ×3, Fuzz ×2, CodeQL ×3, HOL scan, host-config validation, release-deps). This approval is on the diff at 2439bb2b; do not merge until that last job reports pass — green AND verified, both.

Verdict: APPROVE at commit 2439bb2.

@cdeust
cdeust merged commit 1ef83c4 into main Sep 3, 2026
28 checks passed
@cdeust
cdeust deleted the release/v4.19.1 branch September 3, 2026 21:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant