Skip to content

Commit 904c82d

Browse files
authored
Prepare 1.4.9 release (#300)
Prepare CogniRelay v1.4.9 release metadata and notes for the PyPI/MCP Registry packaging release.
1 parent 27a4b29 commit 904c82d

7 files changed

Lines changed: 88 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ It follows the [Keep a Changelog](https://keepachangelog.com/) format.
77

88
## [Unreleased]
99

10+
## [1.4.9] - 2026-04-27
11+
12+
### Changed
13+
14+
- Added PyPI-ready packaging metadata, a thin `cognirelay` CLI wrapper, and
15+
`server.json` metadata for MCP Registry publication while preserving the
16+
existing `app.main:app` runtime and source-checkout deployment path.
17+
- Added release safety gates for publishable tree checks, sanitized PyPI
18+
metadata, built wheel/sdist inspection, and `server.json` schema validation.
19+
- Removed tracked runtime state from the Git source surface so GitHub source
20+
archives no longer include local `data_repo/` artifacts.
21+
1022
## [1.4.8] - 2026-04-26
1123

1224
### Fixed

app/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ async def _lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
283283
set_coordination_index(None)
284284

285285

286-
app = FastAPI(title="CogniRelay", version="1.4.8", lifespan=_lifespan)
286+
app = FastAPI(title="CogniRelay", version="1.4.9", lifespan=_lifespan)
287287

288288
if get_settings().ui_enabled:
289289
app.include_router(build_ui_router(app_version=app.version))

docs/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ path.
5858

5959
## Releases
6060

61-
- [Latest release notes: v1.4.8](releases/v1.4.8.md)
61+
- [Latest release notes: v1.4.9](releases/v1.4.9.md)
62+
- [v1.4.8 release notes](releases/v1.4.8.md)
6263
- [v1.4.7 release notes](releases/v1.4.7.md)
6364
- [v1.4.6 release notes](releases/v1.4.6.md)
6465
- [v1.4.5 release notes](releases/v1.4.5.md)

docs/releases/v1.4.9.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# CogniRelay v1.4.9 Release Notes
2+
3+
Release date: 2026-04-27
4+
5+
CogniRelay v1.4.9 adds the packaging and publication surfaces needed for a
6+
first PyPI and MCP Registry release, while preserving the existing source
7+
checkout deployment path.
8+
9+
## Added
10+
11+
- Added PyPI project metadata with a sanitized `README-PYPI.md` long
12+
description and `cognirelay` console entrypoint.
13+
- Added a thin `cognirelay` package wrapper with `cognirelay serve` and
14+
`python -m cognirelay serve`, delegating to the existing `app.main:app`
15+
runtime.
16+
- Added root `server.json` metadata for MCP Registry publication, including
17+
local Streamable HTTP transport, positional `serve` startup metadata, and
18+
required `COGNIRELAY_REPO_ROOT` environment metadata.
19+
- Added `tools/validate_server_json.py` for local validation against the
20+
committed MCP Registry schema URL.
21+
22+
## Changed
23+
24+
- Extended `tools/prepare_release.py` to validate package versions,
25+
dependencies, `server.json`, the PyPI ownership marker, and publishable tree
26+
safety before release.
27+
- Updated installation documentation for source, PyPI, and production
28+
hardening paths, including durable `COGNIRELAY_REPO_ROOT` guidance and the
29+
local Streamable HTTP-only MCP Registry posture.
30+
- Added wheel and sdist artifact checks so packaged releases include only the
31+
intended runtime assets and source-only documentation/deploy files.
32+
33+
## Security And Privacy
34+
35+
- Removed tracked `data_repo/` runtime state from the Git source surface while
36+
preserving local operator files on disk.
37+
- Added publishable-tree safety checks that block tracked runtime state,
38+
generated databases, logs, token/key files, build residue, and private
39+
artifacts before publication.
40+
- Sanitized PyPI metadata so the published long description does not expose
41+
local runtime-state paths, audit/log paths, capsule paths, or token file
42+
locations.
43+
- Added runtime guardrails so installed-package startup refuses unsafe runtime
44+
state roots under package or `site-packages` paths before creating state.
45+
46+
## Notes
47+
48+
- No PyPI upload, MCP Registry publication, or GitHub Release publication is
49+
performed by the code change itself; those remain explicit manual release
50+
steps.
51+
- Runtime MCP protocol support remains `2025-06-18` and `2025-11-25`. The
52+
`2025-12-11` value used by `server.json` is the MCP Registry metadata schema,
53+
not a CogniRelay runtime protocol version.
54+
55+
## Verification
56+
57+
Release preparation should pass:
58+
59+
```bash
60+
git diff --check
61+
./.venv/bin/python -m ruff check app tests tools agent-assets
62+
./.venv/bin/python -m unittest discover -s tests -v
63+
./.venv/bin/python tools/validate_server_json.py
64+
./.venv/bin/python -m build
65+
./.venv/bin/python -m twine check dist/*
66+
```

pyproject.toml

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

55
[project]
66
name = "cognirelay"
7-
version = "1.4.8"
7+
version = "1.4.9"
88
description = "Self-hosted continuity and collaboration substrate for autonomous agents."
99
readme = "README-PYPI.md"
1010
requires-python = ">=3.12"

server.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"name": "io.github.stef-k/cognirelay",
44
"title": "CogniRelay",
55
"description": "Self-hosted continuity and collaboration substrate for autonomous agents.",
6-
"version": "1.4.8",
6+
"version": "1.4.9",
77
"packages": [
88
{
99
"registryType": "pypi",
1010
"identifier": "cognirelay",
11-
"version": "1.4.8",
11+
"version": "1.4.9",
1212
"packageArguments": [
1313
{
1414
"type": "positional",

tests/test_packaging_290.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
".tmp",
4646
)
4747
ALLOWED_ENV_TEMPLATE_ARTIFACTS = {
48-
"cognirelay-1.4.8/.env.example",
49-
"cognirelay-1.4.8/deploy/systemd/cognirelay.env.example",
48+
"cognirelay-1.4.9/.env.example",
49+
"cognirelay-1.4.9/deploy/systemd/cognirelay.env.example",
5050
}
5151
FORBIDDEN_METADATA_TOKENS = (
5252
"data_repo/",
@@ -195,10 +195,10 @@ def test_built_wheel_and_sdist_contents_are_publishable(self) -> None:
195195

196196
with tarfile.open(sdist) as archive:
197197
sdist_names = set(archive.getnames())
198-
pkg_info = archive.extractfile("cognirelay-1.4.8/PKG-INFO")
198+
pkg_info = archive.extractfile("cognirelay-1.4.9/PKG-INFO")
199199
self.assertIsNotNone(pkg_info)
200200
sdist_metadata = pkg_info.read().decode("utf-8") # type: ignore[union-attr]
201-
prefix = "cognirelay-1.4.8/"
201+
prefix = "cognirelay-1.4.9/"
202202
for expected in (
203203
"README.md",
204204
"README-PYPI.md",

0 commit comments

Comments
 (0)