Skip to content

release 0.6.0: the A0 re-seal, and what this release does not change - #19

Merged
rgfaber merged 4 commits into
mainfrom
titan/a0-release
Oct 29, 2026
Merged

rgfaber merged 4 commits into
mainfrom
titan/a0-release

Conversation

@rgfaber

@rgfaber rgfaber commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Refs macula-py#15, macula-py#18.

Proposed tag: v0.6.0 (pyproject already carries 0.6.0 and no v0.6.0 tag exists; the last tag is v0.6.0rc4).

  • CHANGELOG: the A0 pin and its effect go into the 0.6.0 section, under "Changed since this entry was written" — the section is dated 19 October and rewriting that date would rewrite the flag-day record. The Unreleased docs bullet folds in here since it ships.
  • A "What this release does not change" subsection: sealing stays preferred, not required, by default; a stream served with no policy is still advertised open (macula-py#18).
  • README: the sealing section now says what a sealed_required refusal does to a caller, which it did not.

No tag, no publish.

The native library is pinned to macula-go v0.29.0, the release that carries the
A0 contract: a call a keyed provider refuses sealed_required is resealed to the
key in the refusal's signed tbs and answered, instead of the caller failing on a
stale keyless candidate.

pyproject already says 0.6.0 and the version was never tagged, so the entry goes
into the 0.6.0 section rather than a new one, with a subsection for what landed
after it was written. What this release does not change is stated too: sealing
stays preferred, not required, and a stream served with no policy is still
advertised open (macula-py#18).

Refs macula-py#15, macula-py#18.
…eeds an opt-in

The two corrections the php round needed, made here before review rather than
after it: the 0.6.0 intro said libmacula is macula-go v0.27.0 while the pin is
v0.29.0, so the intro names v0.29.0 with the flag-day version as history and the
heading carries the release day; and a pool names a KEM key only with
kem_advertise=True, off by default (src/macula_py/pool.py:483), so two pools on
default arguments talk in the clear.

The open default is stated for both shapes: serve and serve_stream take policy as
an optional keyword (macula-py#18 covers streams; the unary twin has no issue yet
and the Supervisor has that question).

Refs macula-py#15, macula-py#18.
macula-py#20 is the unary twin of #18, filed from the source: serve takes
policy as an optional keyword and libmacula serves any caller without one. The
note points at both.

Refs macula-py#18, macula-py#20.
…otated key

Review of #19: the paragraph gave the wrong cause. sealed_required comes from a
caller holding a KEYLESS advertisement and calling clear; a caller holding an old
key gets sealed_refused, with the current key id in detail. Reworded to match the
changelog bullet and the mechanism.

Refs macula-py#15.
@rgfaber
rgfaber merged commit 87b7610 into main Oct 29, 2026
14 checks passed
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