From d738d4d7329e4fe15e0ca4c11a784fe5a49f4735 Mon Sep 17 00:00:00 2001 From: beamologist Date: Thu, 29 Oct 2026 02:58:18 +0100 Subject: [PATCH 1/2] release 0.7.0: the version the A0 work goes out under MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 0.6.0 was released on 2026-10-19 (tag v0.6.0, 8a65119c, on PyPI) and the A0 work landed on top of the same number: yesterday's release prep edited the 0.6.0 section in place, moving its date to 2026-10-29, rewriting its intro to name macula-go v0.29.0, and appending two subsections to a release that had shipped. This restores that section to exactly what the tag's own CHANGELOG says — verified by comparing the block at v0.6.0 against the block here, byte for byte — and puts the new material in a `## 0.7.0 (2026-10-29)` section above it, with the A0 re-seal and the docs type-check as `### Changed`, and the honesty text ("what this release does not change") carried over unchanged because it is still true. pyproject's version is 0.7.0, which is what release.yml's guard compares the tag against. The README gains the same paragraph, and `pip install macula-py` resolves 0.7.0. Raf's ruling, 2026-10-29: py goes out as 0.7.0. Co-Authored-By: Claude Code --- CHANGELOG.md | 22 ++++++++++++++-------- README.md | 7 +++++++ pyproject.toml | 2 +- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fca6d4..f830534 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,16 +2,14 @@ ## Unreleased -## 0.6.0 (2026-10-29) +## 0.7.0 (2026-10-29) -The wire 1.0 release, for the fleet's flag day (19 Oct 2026, 18:03 UTC): from -then on every live station speaks wire 1.0 (macula 15) and nothing older, and -0.5.0 can no longer connect. The native library is macula-go v0.29.0, the -release that carries the A0 contract (v0.27.0 at the flag day); this package's -code is 0.6.0rc4's. The entries for 0.6.0rc1 to 0.6.0rc4 below are what changed -since 0.5.0. +The A0 release: the native library is macula-go v0.29.0, the release that +carries the A0 contract where 0.6.0 shipped v0.27.0, and a call a keyed provider +refuses `sealed_required` is now resealed and answered. No wire change: this +package's code is 0.6.0rc4's plus the entries below. -### Changed since this entry was written +### Changed - **A call a keyed provider refuses `sealed_required` is resealed and answered**, instead of the caller failing on a stale keyless candidate: the caller seals again to the key in the refusal's @@ -30,6 +28,14 @@ since 0.5.0. `serve_stream` take `policy` as an optional keyword, and omitting it serves any caller (macula-py#18 for streams, macula-py#20 for unary). +## 0.6.0 (2026-10-19) + +The wire 1.0 release, for the fleet's flag day (19 Oct 2026, 18:03 UTC): from +then on every live station speaks wire 1.0 (macula 15) and nothing older, and +0.5.0 can no longer connect. The native library is macula-go v0.27.0, whose +code is v0.27.0-rc.8's; this package's code is 0.6.0rc4's. The entries for +0.6.0rc1 to 0.6.0rc4 below are what changed since 0.5.0. + ## 0.6.0rc4 (2026-10-17) ### Added diff --git a/README.md b/README.md index f2490fe..dea3303 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,13 @@ --- +> **A0, 0.7.0 (2026-10-29):** over macula-go v0.29.0's C ABI. A call a keyed +> provider refuses `sealed_required` is now resealed to the key that refusal +> carries and answered, instead of failing on a stale keyless candidate. Sealing +> stays preferred, not required, by default, and a procedure served with no +> policy is still open; refusing a clear call unless the caller opts out is not +> in this release. A plain `pip install macula-py` resolves 0.7.0. +> > **Wire 1.0, 0.6.0 (2026-10-19):** built on macula-go v0.27.0, it speaks wire > 1.0 (macula 15) and nothing older, so it reaches only a wire 1.0 station. The > fleet moved to wire 1.0 on 19 Oct 2026 at 18:03 UTC, and from then on 0.5.0 diff --git a/pyproject.toml b/pyproject.toml index 4dab642..c434fc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "macula-py" -version = "0.6.0" +version = "0.7.0" description = "A Python node on the macula mesh: post-quantum identity and key exchange, calls, streams, pub/sub, the DHT and node-served content, over macula-go's C ABI." readme = "README.md" license = "Apache-2.0" From ab2c19cfb0ca31a2e607c035e06439b102caa22c Mon Sep 17 00:00:00 2001 From: beamologist Date: Thu, 29 Oct 2026 03:06:37 +0100 Subject: [PATCH 2/2] release 0.7.0: name the structural-floor change, and stop the README claiming 0.6.0 resolves Mercurius r=1, two findings, both his. 1. 0.7.0's intro said the code is 0.6.0rc4's "plus the entries below", and the entries named nothing that touched src/. They had to: 24c1b39 (21 Oct) extracted helpers in src/macula_py/_wire.py and _blocking.py to meet the structural floor (+42/-16), so the code is not 0.6.0's unchanged. The intro now says 0.6.0's plus the entries below, and there is an entry for that change: helpers extracted, no baseline and no inline disables, the error a caller sees unchanged. 2. The README's 19 Oct banner said `pip install macula-py` resolves 0.6.0 directly under the new paragraph saying it resolves 0.7.0. Past tense now: "resolved 0.6.0 until 0.7.0". Co-Authored-By: Claude Code --- CHANGELOG.md | 6 +++++- README.md | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f830534..f5b0d03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,17 @@ The A0 release: the native library is macula-go v0.29.0, the release that carries the A0 contract where 0.6.0 shipped v0.27.0, and a call a keyed provider refuses `sealed_required` is now resealed and answered. No wire change: this -package's code is 0.6.0rc4's plus the entries below. +package's code is 0.6.0's plus the entries below. ### Changed - **A call a keyed provider refuses `sealed_required` is resealed and answered**, instead of the caller failing on a stale keyless candidate: the caller seals again to the key in the refusal's signed tbs, which is the key the provider holds now (macula-go v0.29.0, macula-py#15). +- **The wire and blocking paths meet the structural floor** (macula-io/macula-codebase-checks#9): + the map conversion in `_wire.py` and the blocking call path in `_blocking.py` have their helpers + extracted so no function nests past the cap, with no baseline and no inline disables, and the + error a caller sees is unchanged (24c1b39). - CI type-checks every Python block in the README and the guides against the package (`docs.yml`, macula-codebase-checks#8), on every change including doc-only ones, and a release waits on it. diff --git a/README.md b/README.md index dea3303..1b79401 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ > 1.0 (macula 15) and nothing older, so it reaches only a wire 1.0 station. The > fleet moved to wire 1.0 on 19 Oct 2026 at 18:03 UTC, and from then on 0.5.0 > and everything before it can no longer connect. A plain -> `pip install macula-py` resolves 0.6.0. It adds sealed group pub/sub, the +> `pip install macula-py` resolved 0.6.0 until 0.7.0. It adds sealed group pub/sub, the > member's side: a Python node joins a realm group, pulling its epoch keys > from the org's distributor over a sealed call with the org's grant, and > publishes and reads the group's sealed events.