@@ -8,7 +8,7 @@ The version is derived from git tags by `hatch-vcs`: a `vX.Y.Z` tag (created via
88a GitHub Release) becomes version ` X.Y.Z ` . Record changes under ` [Unreleased] `
99and rename that heading to the version when you cut the release.
1010
11- ## [ Unreleased ]
11+ ## [ 2.0.0 ] ( https://github.com/obeone/caucus-mcp/compare/v1.5.0...v2.0.0 ) (2026-07-17)
1212
1313### Changed
1414
@@ -30,6 +30,24 @@ and rename that heading to the version when you cut the release.
3030- The operating ` PROTOCOL_VERSION ` moves to ** 16** (the talking-stick section now
3131 describes ` floor(action=...) ` ).
3232
33+ ### Fixed
34+
35+ - ** The bridge no longer serves a superseded protocol under a fresh version
36+ label.** When ` join ` found the session behind, it handed the hub's new text to
37+ the caller but left the old text in its cache while still advancing the
38+ revision counter. The next ` join ` therefore saw itself as up to date and
39+ served the superseded protocol labelled with the new version. Since the
40+ session arms only once, nothing ever refreshed the cache and only a bridge
41+ restart cleared it, which is precisely the drift the mandatory
42+ ` PROTOCOL_VERSION ` bump exists to prevent.
43+ - ** Armed-but-unjoined MCP HTTP sessions no longer leak.** A session that armed
44+ on a first tool call but never joined owns no hub client, so the sweep, which
45+ only ever inspected joined sessions, could not see it and it lived on for the
46+ process lifetime. Such records now age out against the same ` client_ttl ` idle
47+ window a joined peer gets, while joined records keep following the hub's own
48+ client verdict (a listening peer's liveness comes from its watcher polls, not
49+ from its tool calls). This also reaps records left behind by ` leave ` .
50+
3351## [ 1.5.0] ( https://github.com/obeone/caucus-mcp/compare/v1.4.0...v1.5.0 ) (2026-07-06)
3452
3553### Added
0 commit comments